Just a small note: your script will always send the same text to the channel because $read is evaluated once and for all when the timer is first initialized. To keep $read as an identifier which gets evaluated whenever /msg is called, use:

On me:*:join:#my_channel: .timerMSG 0 600 msg # $!read(my_file.txt,nt)