Various other state bugs.

This commit is contained in:
Elijah Perrault committed 2011-04-21 15:48:26 -06:00
1 parent a8ea3f0e64
commit 6357c54574
2 files changed
+11 -13

No files matched your search

+10 -13
View File
@@ -359,7 +359,7 @@ sub cjoin {
} }
else { else {
# It isn't. Update chanusers and trigger on_rcjoin. # It isn't. Update chanusers and trigger on_rcjoin.
$State::IRC::chanusers{$svr}{$chan}{lc $src{nick}} = 1; $State::IRC::chanusers{$svr}{lc $chan}{lc $src{nick}} = 1;
$src{svr} = $svr; $src{svr} = $svr;
API::Std::event_run("on_rcjoin", (\%src, $chan)); API::Std::event_run("on_rcjoin", (\%src, $chan));
} }
@@ -374,9 +374,6 @@ sub kick {
my %src = API::IRC::usrc(substr($ex[0], 1)); my %src = API::IRC::usrc(substr($ex[0], 1));
$src{svr} = $svr; $src{svr} = $svr;
# Update chanusers.
delete $State::IRC::chanusers{$svr}{$ex[2]}{$ex[3]} if defined $State::IRC::chanusers{$svr}{$ex[2]}{$ex[3]};
# Set $msg to the kick message. # Set $msg to the kick message.
my $msg = 0; my $msg = 0;
if (defined $ex[4]) { if (defined $ex[4]) {
@@ -393,7 +390,7 @@ sub kick {
# We were kicked! # We were kicked!
# Delete channel from botchans. # Delete channel from botchans.
delete $botchans{$svr}{$ex[2]}; delete $botchans{$svr}{lc $ex[2]};
# Log this horrible act. # Log this horrible act.
API::Log::alog("I was kicked from ".$svr."/".$ex[2]." by ".$src{nick}."! Reason: ".$msg); API::Log::alog("I was kicked from ".$svr."/".$ex[2]." by ".$src{nick}."! Reason: ".$msg);
@@ -410,7 +407,7 @@ sub kick {
} }
else { else {
# We weren't. Update chanusers and trigger on_kick. # We weren't. Update chanusers and trigger on_kick.
if (defined $State::IRC::chanusers{$svr}{$ex[2]}{lc $ex[3]}) { delete $State::IRC::chanusers{$svr}{$ex[2]}{lc $ex[3]} } if (defined $State::IRC::chanusers{$svr}{lc $ex[2]}{lc $ex[3]}) { delete $State::IRC::chanusers{$svr}{lc $ex[2]}{lc $ex[3]} }
API::Std::event_run("on_kick", (\%src, $ex[2], $ex[3], $msg)); API::Std::event_run("on_kick", (\%src, $ex[2], $ex[3], $msg));
} }
@@ -423,7 +420,7 @@ sub mode {
if ($ex[2] ne $State::IRC::botinfo{$svr}{nick}) { if ($ex[2] ne $State::IRC::botinfo{$svr}{nick}) {
# Set data we'll need later. # Set data we'll need later.
my $chan = $ex[2]; my $chan = lc $ex[2];
$ex[3] =~ s/^://xsm; $ex[3] =~ s/^://xsm;
my $modes = $ex[3]; my $modes = $ex[3];
my $fmodes = join ' ', @ex[3..$#ex]; my $fmodes = join ' ', @ex[3..$#ex];
@@ -467,7 +464,7 @@ sub mode {
if ($nnt) { if ($nnt) {
# It is a status mode, lets parse changes. # It is a status mode, lets parse changes.
my $user = shift(@ex); my $user = lc shift @ex;
if (defined $State::IRC::chanusers{$svr}{$chan}{$user}) { if (defined $State::IRC::chanusers{$svr}{$chan}{$user}) {
if ($op == 1) { if ($op == 1) {
@@ -531,9 +528,9 @@ sub nick {
else { else {
# It isn't. Update chanusers and trigger on_nick. # It isn't. Update chanusers and trigger on_nick.
foreach my $chk (keys %{ $State::IRC::chanusers{$svr} }) { foreach my $chk (keys %{ $State::IRC::chanusers{$svr} }) {
if (defined $State::IRC::chanusers{$svr}{$chk}{$src{nick}}) { if (defined $State::IRC::chanusers{$svr}{$chk}{lc $src{nick}}) {
$State::IRC::chanusers{$svr}{$chk}{$nex} = $State::IRC::chanusers{$svr}{$chk}{$src{nick}}; $State::IRC::chanusers{$svr}{$chk}{lc $nex} = $State::IRC::chanusers{$svr}{$chk}{lc $src{nick}};
delete $State::IRC::chanusers{$svr}{$chk}{$src{nick}}; delete $State::IRC::chanusers{$svr}{$chk}{lc $src{nick}};
} }
} }
API::Std::event_run("on_nick", (\%src, $nex)); API::Std::event_run("on_nick", (\%src, $nex));
@@ -572,13 +569,13 @@ sub part {
# Check if it's from us or someone else. # Check if it's from us or someone else.
if ($src{nick} eq $State::IRC::botinfo{$svr}{nick}) { if ($src{nick} eq $State::IRC::botinfo{$svr}{nick}) {
# Delete this channel from botchans. # Delete this channel from botchans.
if ($botchans{$svr}{$ex[2]}) { delete $botchans{$svr}{$ex[2]} } if ($botchans{$svr}{lc $ex[2]}) { delete $botchans{$svr}{lc $ex[2]} }
# Trigger on_upart. # Trigger on_upart.
API::Std::event_run('on_upart', ($svr, $ex[2])); API::Std::event_run('on_upart', ($svr, $ex[2]));
} }
else { else {
# Delete them from chanusers. # Delete them from chanusers.
delete $State::IRC::chanusers{$svr}{$ex[2]}{lc $src{nick}} if defined $State::IRC::chanusers{$svr}{$ex[2]}{lc $src{nick}}; delete $State::IRC::chanusers{$svr}{lc $ex[2]}{lc $src{nick}} if defined $State::IRC::chanusers{$svr}{lc $ex[2]}{lc $src{nick}};
# Set $msg to the part message. # Set $msg to the part message.
my $msg = 0; my $msg = 0;
+1
View File
@@ -10,6 +10,7 @@ our (%chanusers, %botinfo);
# Create on_namesreply hook. # Create on_namesreply hook.
hook_add('on_namesreply', 'state.irc.names', sub { hook_add('on_namesreply', 'state.irc.names', sub {
my ($svr, $chan, @data) = @_; my ($svr, $chan, @data) = @_;
$chan = lc $chan;
# Delete the old chanusers hash if it exists. # Delete the old chanusers hash if it exists.
if (defined $chanusers{$svr}{$chan}) { delete $chanusers{$svr}{$chan} } if (defined $chanusers{$svr}{$chan}) { delete $chanusers{$svr}{$chan} }