I don't know if you're aware but the second value in the timer is the amount of time between executing the command in seconds. In your above example you're using '0 20' so it will repeat every 20 seconds. That's probably not a good idea.

Put this in your remotes (alt+r) and do not modify it in any way unless you want to change the time delay (900seconds / 15 minutes).

Code:
alias sayall {
  .timersayall 0 900 echo -a $$1-
}


Then after you have done this, type:

/sayall #mychan Idle and perform!
This will start a timer and send the message to every channel you're in at 15 minute intervals.

Also, the code I posted for your idle/joining should be functional. I made a couple changes to it. That code also goes in your remotes.