zncでoperatorをJoinしてきた人に無差別で配るモジュールをPerlで書いた

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 [対象ユーザ]