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... smirk 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.