diff options
-rwxr-xr-x | saxrobot | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -10,6 +10,8 @@ use sb_config; my %config = sb_config::parse_config('bot.conf'); +my $current_nick = $config{nick}; + # New PoCo-IRC object my $irc = POE::Component::IRC->spawn( nick => $config{nick}, @@ -26,7 +28,7 @@ $irc->plugin_add('NickServID', POE::Component::IRC::Plugin::NickServID->new( POE::Session->create( package_states => [ - main => [ qw(_default _start irc_001 irc_kick irc_public irc_msg) ], + main => [ qw(_default _start irc_001 irc_kick irc_public irc_msg irc_nick) ], ], heap => { irc => $irc }, ); @@ -51,9 +53,18 @@ sub irc_001 { return; } +sub irc_nick { + my ($who, $new_nick) = @_[ARG0 .. ARG1]; + my $oldnick = (split /!/, $who)[0]; + if ($oldnick eq $current_nick) { + $current_nick = $new_nick; + } + return; +} + sub irc_kick { my ($kicker, $channel, $kickee, $reason) = @_[ARG0 .. ARG3]; - if ($kickee eq $config{nick}) { + if ($kickee eq $current_nick) { print "I was kicked by $kicker ($reason). Rejoining now.\n"; $irc->yield(join => $channel); } |