Just because it doesn't do what you want does not make it a bug.

#$me returns $me because #$identifier only works on $N ($1, $2, etc.). For every other identifier, it returns the identifier without #. This may be quirky, but it's the expected behaviour for evaluating #$identifier. And before you question this, #$identifier is meant to evaluate-- this is part of mIRC's existing syntax and is not going to change.

This has nothing to do with the timer issue, however. The timer issue you reported has everything to do with /timer evaluation. It just so happens the code you're evaluating is #$me, but it could easily have been any other special value in mIRC.

Consider:

Code:
on *:TEXT:!echo *:.timer 1 3 msg # $2


In this case $2 is not a channel but the user's input. If a user wrote "!echo $me" it would return "BOTNICK", not "$me".

Again, nothing to do with #$1-, everything to do with the fact that /timer will be evaluating "msg #channel $me" when the timer fires. For this reason you should always sanitize all timer commands that execute non-literal data, especially from the user/server.



- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"