diff --git a/doc/CHANGELOG b/doc/CHANGELOG index 9bbe2da..aba283f 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -3,6 +3,7 @@ Auto IRC Bot 3.0: Change Log 3.0 Indev =============================================================================== + * Moved botinfo to State::IRC. * Added hook on_selfkick for when we are kicked from a channel. * Moved chanusers to State::IRC. * Created State::IRC. diff --git a/lib/API/IRC.pm b/lib/API/IRC.pm index ce6362b..e0c225d 100644 --- a/lib/API/IRC.pm +++ b/lib/API/IRC.pm @@ -82,7 +82,7 @@ sub cmode { sub umode { my ($svr, $modes) = @_; - Auto::socksnd($svr, 'MODE '.$Proto::IRC::botinfo{$svr}{nick}." $modes"); + Auto::socksnd($svr, 'MODE '.$State::IRC::botinfo{$svr}{nick}." $modes"); return 1; } @@ -92,7 +92,7 @@ sub privmsg { my ($svr, $target, $message) = @_; # Get maximum length. - my $maxlen = 510 - length q{:}.$Proto::IRC::botinfo{$svr}{nick}.q{!}.$Proto::IRC::botinfo{$svr}{user}.q{@}.$Proto::IRC::botinfo{$svr}{mask}." PRIVMSG $target :"; + my $maxlen = 510 - length q{:}.$State::IRC::botinfo{$svr}{nick}.q{!}.$State::IRC::botinfo{$svr}{user}.q{@}.$State::IRC::botinfo{$svr}{mask}." PRIVMSG $target :"; # Divide message if it surpasses the maximum length. while (length $message >= $maxlen) { @@ -109,7 +109,7 @@ sub notice { my ($svr, $target, $message) = @_; # Get maximum length. - my $maxlen = 510 - length q{:}.$Proto::IRC::botinfo{$svr}{nick}.q{!}.$Proto::IRC::botinfo{$svr}{user}.q{@}.$Proto::IRC::botinfo{$svr}{mask}." NOTICE $target :"; + my $maxlen = 510 - length q{:}.$State::IRC::botinfo{$svr}{nick}.q{!}.$State::IRC::botinfo{$svr}{user}.q{@}.$State::IRC::botinfo{$svr}{mask}." NOTICE $target :"; # Divide message if it surpasses the maximum length. while (length $message >= $maxlen) { @@ -136,7 +136,7 @@ sub nick { Auto::socksnd($svr, "NICK $newnick"); - $Proto::IRC::botinfo{$svr}{newnick} = $newnick; + $State::IRC::botinfo{$svr}{newnick} = $newnick; return 1; } diff --git a/lib/Core/IRC/Users.pm b/lib/Core/IRC/Users.pm index 78f55ba..25a97be 100644 --- a/lib/Core/IRC/Users.pm +++ b/lib/Core/IRC/Users.pm @@ -45,7 +45,7 @@ hook_add('on_whoreply', 'ircusers.who', sub { my ($svr, $nick, undef) = @_; # Ensure it is not us. - if (lc $nick ne lc $Proto::IRC::botinfo{$svr}{nick}) { + if (lc $nick ne lc $State::IRC::botinfo{$svr}{nick}) { # It is not. Check if they're already in the users hash. if (!$users{$svr}{lc $nick}) { # They are not; add them. diff --git a/lib/Proto/IRC.pm b/lib/Proto/IRC.pm index 0783f0e..d1817a5 100644 --- a/lib/Proto/IRC.pm +++ b/lib/Proto/IRC.pm @@ -38,7 +38,7 @@ our %RAWC = ( ); # Variables for various functions. -our (%got_001, %botinfo, %botchans, %csprefix, %chanmodes, %cap); +our (%got_001, %botchans, %csprefix, %chanmodes, %cap); # Events. API::Std::event_add('on_capack'); @@ -112,14 +112,14 @@ sub num001 { $got_001{$svr} = 1; # In case we don't get NICK from the server. - if (!defined $botinfo{$svr}{nick}) { - $botinfo{$svr}{nick} = $botinfo{$svr}{newnick}; - delete $botinfo{$svr}{newnick}; + if (!defined $State::IRC::botinfo{$svr}{nick}) { + $State::IRC::botinfo{$svr}{nick} = $State::IRC::botinfo{$svr}{newnick}; + delete $State::IRC::botinfo{$svr}{newnick}; } # Log. - API::Log::alog "! Successfully connected to $svr as $botinfo{$svr}{nick}"; - API::Log::dbug "! Successfully connected to $svr as $botinfo{$svr}{nick}"; + API::Log::alog "! Successfully connected to $svr as $State::IRC::botinfo{$svr}{nick}"; + API::Log::dbug "! Successfully connected to $svr as $State::IRC::botinfo{$svr}{nick}"; # Trigger on_connect. API::Std::event_run('on_connect', $svr); @@ -184,7 +184,7 @@ sub num396 { my ($svr, @ex) = @_; # Update our mask. - $botinfo{$svr}{mask} = $ex[3]; + $State::IRC::botinfo{$svr}{mask} = $ex[3]; return 1; } @@ -202,7 +202,7 @@ sub num432 { API::IRC::quit($svr, 'An error occurred.'); } - if (defined $botinfo{$svr}{newnick}) { delete $botinfo{$svr}{newnick} } + if (defined $State::IRC::botinfo{$svr}{newnick}) { delete $State::IRC::botinfo{$svr}{newnick} } return 1; } @@ -212,8 +212,8 @@ sub num432 { sub num433 { my ($svr, undef) = @_; - if (defined $botinfo{$svr}{newnick}) { - API::IRC::nick($svr, $botinfo{$svr}{newnick}.'_'); + if (defined $State::IRC::botinfo{$svr}{newnick}) { + API::IRC::nick($svr, $State::IRC::botinfo{$svr}{newnick}.'_'); } return 1; @@ -224,10 +224,10 @@ sub num433 { sub num438 { my ($svr, @ex) = @_; - if (defined $botinfo{$svr}{newnick}) { - API::Std::timer_add('num438_'.$botinfo{$svr}{newnick}, 1, $ex[11], sub { - API::IRC::nick($Proto::IRC::botinfo{$svr}{newnick}); - if (defined $botinfo{$svr}{newnick}) { delete $botinfo{$svr}{newnick} } + if (defined $State::IRC::botinfo{$svr}{newnick}) { + API::Std::timer_add('num438_'.$State::IRC::botinfo{$svr}{newnick}, 1, $ex[11], sub { + API::IRC::nick($State::IRC::botinfo{$svr}{newnick}); + if (defined $State::IRC::botinfo{$svr}{newnick}) { delete $State::IRC::botinfo{$svr}{newnick} } }); } @@ -353,7 +353,7 @@ sub cjoin { $chan =~ s/^://gxsm; # Check if this is coming from ourselves. - if ($src{nick} eq $botinfo{$svr}{nick}) { + if ($src{nick} eq $State::IRC::botinfo{$svr}{nick}) { $botchans{$svr}{lc $chan} = 1; API::Std::event_run("on_ucjoin", ($svr, $chan)); } @@ -389,7 +389,7 @@ sub kick { } # Check if we were the ones kicked. - if (lc($ex[3]) eq lc($botinfo{$svr}{nick})) { + if (lc($ex[3]) eq lc($State::IRC::botinfo{$svr}{nick})) { # We were kicked! # Delete channel from botchans. @@ -421,7 +421,7 @@ sub kick { sub mode { my ($svr, @ex) = @_; - if ($ex[2] ne $botinfo{$svr}{nick}) { + if ($ex[2] ne $State::IRC::botinfo{$svr}{nick}) { # Set data we'll need later. my $chan = $ex[2]; $ex[3] =~ s/^://xsm; @@ -523,10 +523,10 @@ sub nick { $src{svr} = $svr; # Check if this is coming from ourselves. - if ($src{nick} eq $botinfo{$svr}{nick}) { + if ($src{nick} eq $State::IRC::botinfo{$svr}{nick}) { # It is. Update bot nick hash. - $botinfo{$svr}{nick} = $nex; - delete $botinfo{$svr}{newnick} if (defined $botinfo{$svr}{newnick}); + $State::IRC::botinfo{$svr}{nick} = $nex; + delete $State::IRC::botinfo{$svr}{newnick} if (defined $State::IRC::botinfo{$svr}{newnick}); } else { # It isn't. Update chanusers and trigger on_nick. @@ -570,7 +570,7 @@ sub part { $src{svr} = $svr; # Check if it's from us or someone else. - if ($src{nick} eq $botinfo{$svr}{nick}) { + if ($src{nick} eq $State::IRC::botinfo{$svr}{nick}) { # Delete this channel from botchans. if ($botchans{$svr}{$ex[2]}) { delete $botchans{$svr}{$ex[2]} } # Trigger on_upart. @@ -621,7 +621,7 @@ sub privmsg { my ($cmd, $cprefix, $rprefix); # Check if it's to a channel or to us. - if (lc($ex[2]) eq lc($botinfo{$svr}{nick})) { + if (lc($ex[2]) eq lc($State::IRC::botinfo{$svr}{nick})) { # It is coming to us in a private message. # Ensure it's a valid length. diff --git a/lib/State/IRC.pm b/lib/State/IRC.pm index 856da97..b35fd45 100644 --- a/lib/State/IRC.pm +++ b/lib/State/IRC.pm @@ -5,7 +5,7 @@ package State::IRC; use strict; use warnings; use API::Std qw(hook_add); -our (%chanusers); +our (%chanusers, %botinfo); # Create on_namesreply hook. hook_add('on_namesreply', 'state.irc.names', sub { diff --git a/modules/Oper.pm b/modules/Oper.pm index dfbf165..0a8448d 100644 --- a/modules/Oper.pm +++ b/modules/Oper.pm @@ -55,9 +55,9 @@ sub on_num491 { sub is_opered { my ($svr) = @_; # Auto is not opered. - return if $Proto::IRC::botinfo{$svr}{modes} !~ m/o/xsm; + return if $State::IRC::botinfo{$svr}{modes} !~ m/o/xsm; # Auto is opered. - return 1 if $Proto::IRC::botinfo{$svr}{modes} =~ m/o/xsm; + return 1 if $State::IRC::botinfo{$svr}{modes} =~ m/o/xsm; return; }