ZNCのモジュールの勉強もかねて。
要modperl-znc
# 要 EPEL リポジトリ yum install znc-modperl
下記のモジュール作成場所はznc実行ユーザで操作している場合。
globalなmodules領域もあるので、そっちに書いても良いはず。
vi ~/.znc/modules/OperatorPermission.pm
package OperatorPermission; use warnings; use strict; use base 'ZNC::Module'; sub OnJoin { my $self = shift; my $nick = shift; my $chan = shift; # $self->PutModule(sprintf("Join user: %s", $nick->GetNick())); # $self->PutModule(sprintf("Channel: %s", $chan->GetName())); # Add Operator Permition my $command = sprintf("MODE %s +o %s", $chan->GetName(), $nick->GetNick()); # $self->PutModule(sprintf("Command: %s", $command)); $self->PutIRC($command); } 1;
クライアントからzncサーバに対してメッセージを送ってモジュールを有効にする
/msg *status LoadMod modperl /msg *status LoadMod OperatorPermission
ただ、Perl実行時エラーになっても、何にもログに出ないので良く分からん状態に。
$self->PutModule に 文字列 を与えると、IRCのトークでその文字列を送ってくれるので、
/msg *status ReLoadMod OperatorPermission
しつつ、デバッグとかやってた。もっと効率の良い方法がありそう。
Operatorを付与するコマンドはAPIでは存在しないっぽいので、IRCサーバにコマンドを投げた。
MODE [チャンネル名] +o [対象ユーザ]