The mere fact that you got a "* No such identifier: #$q" message means the attack worked. You just don't happen to have a /q alias. You probably no longer have the aliases mirc creates on a clean install. I'm not even sure if /q is one of the default aliases anymore (or whether it's an alias for /quit or /query) - it doesn't matter though: mirc did try to evaluate #$q. It could be any other alias that you may have or even a built-in identifer (like the $input example I mentioned).
/timer is a problem because when it fires, it evaluates the command you specified as a parameter. Since parameters are evaluated inside the script that calls /timer anyway, the result is that you get two evaluations; one inside the calling script and one when the timer fires.
Apart from /timer, /scon and /scid also double-evaluate.