Also note that mIRC will evaluate the command part of a timer.
Example:
/join #$me
vs
/timer 1 1 join #$me
Because #$somehting makes up a valid channel name you have to prevent this evaluation. If you don't, everything from nuisance to exploit is possible...

You might use a
$safe() alias to prevent that evaluation.
Some time ago, I
fiddled with a related request - maybe some parts are of use here as well, like the method to store the name of the channel-to-join not in the timer's command part but in its name.