Como o ZNC é open-source, baixei e analisei-o.
Para sua informação, o comando WATCH é manipulado (surpresa) pelo módulo Watch, no arquivo de origem modules\watch.cpp
. Na linha 240 do arquivo, você encontrará o seguinte:
virtual void OnModCommand(const CString& sCommand) {
CString sCmdName = sCommand.Token(0);
if (sCmdName.Equals("ADD") || sCmdName.Equals("WATCH")) {
Watch(sCommand.Token(1), sCommand.Token(2), sCommand.Token(3, true));
Para anular o comando WATCH, você pode:
- Descarregar o módulo Watch, que supostamente torna o comando WATCH inacessível
- Altere a string "WATCH" na origem para outra coisa e re-compile
- Use um editor hexadecimal para procurar o binário pela string "WATCH" (sem as aspas) e altere-o, mantendo o mesmo número total de caracteres, por exemplo, "VATCH".
Como não uso o ZNC, não posso medir o impacto do descarregamento do módulo Watch em seu funcionamento normal. As outras duas soluções precisarão ser repetidas para cada nova versão do ZNC.