Ok, this bot does not need to connect as admin. It simply reads the index page of the server and is fast.
The triggers it can do, you can edit or keep up to you. It will also whisper the current DJ requests, so not lost in chat.
This is not my coding, but edited by me to suite my needs.
Almost Every thing in CAPS needs editing for your station, you can work it out, I'm sure.
Don't forget to set channel in channel menu.
Code
menu channel {
  Radio Test
  .Set Channel: { set %radiotest.room # | echo -a Radio set to # }
  .$iif($timer(.radiotest),$style(2)) Turn On: { radiotest | .timer.radiotest 0 10 radiotest | echo -a radiotest msg on }
  .$iif(!$timer(.radiotest),$style(2)) Turn Off: { unset %radiotest.song | unset %radiotest.lastsong | .timer.radiotest off | echo  -a radiotest msg off }
}
alias radiotest { sockclose radiotest | sockopen radiotest SHOUTCASTIP PORT }
on *:sockopen:radiotest: {
  sockwrite -n $sockname GET /7.html HTTP/1.0
  sockwrite -n $sockname User-Agent: SHOUTcast Song Status (Mozilla Compatible)
  sockwrite -n $sockname Host: $+(SHOUTCASTIP,:,PORT)
  sockwrite -n $sockname $crlf
}
on *:sockread:radiotest: {
  if ($sockerr > 0) return
  var %radiotest | sockread -fn %radiotest
  if ($regex(%radiotest,/<body>(.*)<\/body>/)) {
    set %radiotest.song $html2ascii( $gettok($regml(1),7-,44) )
    if (%radiotest.song != %radiotest.lastsong) {

      msg %radiotest.room 12 DJ 4 %dj 12 : %radiotest.song 
      set %radiotest.lastsong %radiotest.song
    }
  }
}
on *:connect:#: { radiotest | .timer.radiotest 0 10 radiotest | echo -a radiotest msg on }

on 1:text:*!dj *:*:{
  set %dj $2
  msg # 4 ;dj DJ %dj 12Is now Rockin STATION Radio(8) ^^:
  if ( %dj == BOTNAME ) {
   
    halt
  }
  else{
  .whisper $chan %dj 0,1---7>11 You Are Now The DJ (4ON AIR11)7<0---
 }
on 1:text:*!radio:*:{
  if ( %status == up ) {
    .msg $chan 4 Our home page STATION URL
  }
} 
on 1:text:*!tune:#:{
  .msg $chan (8) 5 %radiotest.song ~mu 2 Top Song ;dr ~rc :ro  
}
on 1:text:*!FB:*:{
  if ( %status == up ) {
    .msg $chan 4 Our Facebook page FACEBOOK URL
  }
} 

on 1:text:*!ftune:#:{
  .msg $chan (8) 5 %radiotest.song ~mu 2 One of my Fav Tunes!!!! ^^: ;rok ~rm
}
on 1:text:*!song:#:{
  .msg $chan 4 Playing (8) 5 %radiotest.song (*) 2 With DJ %dj 
}
on 1:text:*!request*:#:{
  if ( %dj == BOTNAME ) {
  .msg # 4 Sorry $nick No Dj's are available Right now! }
  else {
    .msg # 4Thank you $nick ;dj DJ 12 %dj 4Got your Request! 
    .whisper $chan %dj Special Request $nick Asked For ( $+ $2- $+ )
  }
}


Now load this alias to tidy up Variables.
Code
alias html2ascii return $regsubex($1-,/&(.{2,6});/Ug,$ht2chr(\t))
alias -l ht2chr if (#x* iswm $1) return $chr($base($mid($1, 3), 16, 10)) | elseif (#* iswm $1) return $chr($mid($1, 2)) | else return $ht2as($1)
alias -l ht2as {
  var %A quot amp apos lt gt nbsp iexcl cent pound curren yen brvbar sect uml copy ordf laquo not shy reg macr deg plusmn sup2 sup3 acute micro para middot cedil sup1 ordm raquo frac14 frac12 frac34 iquest Agrave Aacute Acirc Atilde Auml Aring AElig Ccedil Egrave Eacute Ecirc Euml Igrave Iacute Icirc Iuml ETH Ntilde Ograve Oacute Ocirc Otilde Ouml times Oslash Ugrave Uacute $&
    Ucirc Uuml Yacute THORN szlig agrave aacute acirc atilde auml aring aelig ccedil egrave eacute ecirc euml igrave iacute icirc iuml eth ntilde ograve oacute ocirc otilde ouml divide oslash ugrave uacute ucirc uuml yacute thorn yuml,%B 34 38 39 60 62 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 $&
    192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
  return $chr($gettok(%B,$findtokcs(%A,$1,32),32))
}

Any problems, let me know.
Cheers