萌えキャラとは何だったのか

ギークにも絵描きにもなれない者の末路

こうなるなぁというメモ

ただ世の中にはボット用のモジュールやらなんやらは既にある

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&amp;illust_id=38896869
mix3 > iku: サタデーナイト
 iku > [OK] フィーバー!!
mix3 > iku: ふぁ!?
 iku > およよ…

という感じになるみたいな? regsiter で3つ目以降の引数は配列でGetOptionsに渡すようにして、sub に渡ってくるみたいな?

実際には my $ret = ‵perl path/to/script.pl --option $opts{option}‵; とかしてバッチスクリプトに右から左へオプション流すだけなのを想像してる

gist

熱は出る、咳は出る、鼻水は出る

と悲惨な最近なので、現実逃避してたら衣玖さんボットを作りたくなったのでしたマル