Everything is good except $!read(TEXT.txt,n)
$!<identifier> is a form which once evaluated (and by default a line is evaluated once), produces the plain text, litteral, "$identifier", you probably found that in a script which used /timer to delay the sending of a message, that form is usually required in timer in order to evaluate the content when the command associated with the timer fires, rather than when the /timer itself evaluate its parameters.
In short, just use $read(text.txt,n)