Switch to tabs to match the ZNC coding style
Show all channels by default, store hidden channels
ListChans: show the id column only if id was explicitly specified
OnXxxCommand()
Use the override keyword
Split declaration & implementation
Delay chan filtering to allow clients & ZNC send part messages on QUIT
Just let NICK/QUIT through
Try separate hide/part timers