こうなるなぁというメモ
ただ世の中にはボット用のモジュールやらなんやらは既にある
IRCボットとか誰もが考えるし適当に作って捨てて行くので当然そのうちフレームワークっぽいものも出てくる 例えばUnazuSanとか
こういうは用途に合っていれば良いし、正規表現だしグループで捕まえたのを後方参照出来るしで大体がカバー出来そうだけど、
例えば「開発環境で使ってるバッチスクリプトをオプション指定しつつ実行するをIRCからやりたい」とか糞みたいな要求には向かなそうだなぁとか思ったり
無ければ作れば良いじゃない
#!/usr/bin/env perl
use Ikusan
'server url',
port => <port>,
enable_ssl => 1,
password => <password>,
nickname => <nickname>,
channels => { '#channel_name' => {} };
# undef_message "およよ…";
register qr/regexp?/ => sub {
my (%opts) = @_;
return $opts{error} ? (1, "エラー") : (0, "オッケー");
} => qw/
error
/;
register simple => sub {
my (%opts) = @_;
return $opts{error} ? 1 : 0;
} => qw/
error
/;
register "die" => sub { die "ぱっつんぱっつん" };
use LWP::UserAgent;
register pixiv => sub {
my $ua = LWP::UserAgent->new;
my $res = $ua->get("http://www.pixiv.net/");
my @url = ($res->content =~ /"(member_illust\.php.+?)"/g);
my $ret = "http://www.pixiv.net/" . $url[int(rand(scalar(@url)))];
return 0, $ret;
};
register qr/サタデーナイト/ => sub {
return 0, "フィーバー!!";
};
fever;
こんな感じで AnySan に渡すオプションを指定しつつ use Ikusan して regsiter で sub 登録して最後に fever すれば
mix3 > iku: regex
iku > [OK] オッケー
mix3 > iku: regexp
iku > [OK] オッケー
mix3 > iku: regex --error
iku > [ERR] エラー
mix3 > iku: regexp --error
iku > [ERR] エラー
mix3 > iku: simple
iku > [OK]
mix3 > iku: simple --error
iku > [ERR]
mix3 > iku: die
iku > [ERR] ぱっつんぱっつん at bin/ikusan.pl line 27.
mix3 > iku: pixiv
iku > [OK] http://www.pixiv.net/member_illust.php?mode=medium&illust_id=38896869
mix3 > iku: サタデーナイト
iku > [OK] フィーバー!!
mix3 > iku: ふぁ!?
iku > およよ…
という感じになるみたいな? regsiter で3つ目以降の引数は配列でGetOptionsに渡すようにして、sub に渡ってくるみたいな?
実際には my $ret = ‵perl path/to/script.pl --option $opts{option}‵; とかしてバッチスクリプトに右から左へオプション流すだけなのを想像してる
熱は出る、咳は出る、鼻水は出る
と悲惨な最近なので、現実逃避してたら衣玖さんボットを作りたくなったのでしたマル