"znc ignore" などでググれば cpp のモジュールはヒットするのだけど、自分のしたいことができないやつだったのと、 perl ならなんとかってことで書いた。
package IgnoreSpam; use strict; use warnings; use base 'ZNC::Module'; sub description { "ignore spam" } sub OnChanMsg { my $self = shift; my ($nick, $channel, $message) = @_; if ($self->_is_spam($nick, $channel, $message)) { return $ZNC::HALT; } return $ZNC::CONTINUE; } sub OnChanNotice { my $self = shift; my ($nick, $channel, $message) = @_; if ($self->_is_spam($nick, $channel, $message)) { return $ZNC::HALT; } return $ZNC::CONTINUE; } sub _is_spam { my $self = shift; my ($nick, $channel, $message) = @_; if ($nick->GetNick =~ /^(?:spam_a|spam_b|spam_c)$/) { return 1; } if ($message =~ /^(?:見たくもない単語|流れるだけでまずい単語)$/) { return 1; } return; } 1;
help も無ければ config 対応も無い。無視したいニックネームや単語が増えたら男らしくモジュール書き換えて loadmod 。どうせ大抵は pc 使ってんだろ。
ignore 機能を備えているクライアントもあるけど、ログに残す価値も無いものとか残したくもないときとかに。
そもそもそんなチャンネルは出るのが正しい。