I forgot to add cancellation logic for on_cmd_PART and on_cmd_KICK to stop the timer if we're removed. "oops." self.sched_discard("sendwho_" + channel) should be sufficient in self.user_part. Also, A kick handler should be added, too. :P