Skip to content

Instantly share code, notes, and snippets.

@kenjiskywalker
Created May 2, 2012 09:23
Show Gist options
  • Save kenjiskywalker/2575467 to your computer and use it in GitHub Desktop.
Save kenjiskywalker/2575467 to your computer and use it in GitHub Desktop.
unazuki bot
#!/usr/bin/env perl
use strict;
use AnyEvent;
use AnyEvent::IRC::Client;
# 接続設定
my $channel = '#CHANNEL';
my %config = (
server => 'SERVER',
port => PORT,
info => {
nick => 'unazuki_bot',
real => 'unazuki_bot',
password => 'PASS',
},
);
# 状態変数生成
my $condvar = AnyEvent->condvar;
# IRC イベント
my $irc = AnyEvent::IRC::Client->new;
$irc->reg_cb(
# 接続時に呼び出されるイベント
connect => sub {
my ($irc, $err) = @_;
if (defined $err) {
print "connect error: $err\n";
return;
}
print "connected.\n";
},
# 接続成功時に呼び出されるイベント
registered => sub {
print "registered.\n";
},
# 切断時に呼び出されるイベント
disconnect => sub {
print "disconnected.\n";
},
# $channel に発言があったとき _public() を実行
publicmsg => sub {
my ($irc, $chan, $msg) = @_;
_public($msg->{params}[1]);
},
);
sub _public {
my $msg = shift;
$irc->send_chan($channel, "PRIVMSG", $channel, "うんうん('-'*)");
}
# SSLを有効化
$irc->enable_ssl();
# IRC サーバに接続
$irc->connect($config{server}, $config{port}, $config{info});
# $channel に join
$irc->send_srv("JOIN", $channel);
# $channel に notice メッセージを送る
# $irc->send_chan($channel, "NOTICE", $channel, "Hello, $channel!");
# イベント待ち
$condvar->recv;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment