* Added who() to API::IRC.
* Added hook on_whoreply. * PRIVMSGs and NOTICEs that would cause a >512 bytes resulting message are now divided into multiple messages. * Renamed botnick to botinfo.
This commit is contained in:
1 parent
9c8200fb78
commit
8512ea129a
5 files changed
+116
-75
No files matched your search
@@ -509,12 +509,11 @@ while (1) {
|
|||||||
###############
|
###############
|
||||||
|
|
||||||
# Send data to socket.
|
# Send data to socket.
|
||||||
sub socksnd
|
sub socksnd {
|
||||||
{
|
|
||||||
my ($svr, $data) = @_;
|
my ($svr, $data) = @_;
|
||||||
|
|
||||||
if (defined $SOCKET{$svr}) {
|
if (defined $SOCKET{$svr}) {
|
||||||
syswrite $SOCKET{$svr}, $data."\n", POSIX::BUFSIZ, 0;
|
syswrite $SOCKET{$svr}, $data."\r\n", POSIX::BUFSIZ, 0;
|
||||||
dbug "$svr << $data";
|
dbug "$svr << $data";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ Auto IRC Bot 3.0: Change Log
|
|||||||
|
|
||||||
3.0 Indev
|
3.0 Indev
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
* Added who() to API::IRC.
|
||||||
|
* Added hook on_whoreply.
|
||||||
|
* PRIVMSGs and NOTICEs that would cause a >512 bytes resulting message are
|
||||||
|
now divided into multiple messages.
|
||||||
|
* Renamed botnick to botinfo.
|
||||||
* Renamed Parser::IRC to Proto::IRC.
|
* Renamed Parser::IRC to Proto::IRC.
|
||||||
* Added an Eval module.
|
* Added an Eval module.
|
||||||
* Added an UNO module.
|
* Added an UNO module.
|
||||||
|
|||||||
+32
-9
@@ -9,7 +9,7 @@ use Exporter;
|
|||||||
|
|
||||||
our @ISA = qw(Exporter);
|
our @ISA = qw(Exporter);
|
||||||
our @EXPORT_OK = qw(ban cjoin cpart cmode umode kick privmsg notice quit nick names
|
our @EXPORT_OK = qw(ban cjoin cpart cmode umode kick privmsg notice quit nick names
|
||||||
topic usrc match_mask);
|
topic who usrc match_mask);
|
||||||
|
|
||||||
|
|
||||||
# Set a ban, based on config bantype value.
|
# Set a ban, based on config bantype value.
|
||||||
@@ -87,7 +87,7 @@ sub umode
|
|||||||
{
|
{
|
||||||
my ($svr, $modes) = @_;
|
my ($svr, $modes) = @_;
|
||||||
|
|
||||||
Auto::socksnd($svr, "MODE ".$Proto::IRC::botnick{$svr}{nick}." $modes");
|
Auto::socksnd($svr, "MODE ".$Proto::IRC::botinfo{$svr}{nick}." $modes");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,15 @@ sub privmsg
|
|||||||
{
|
{
|
||||||
my ($svr, $target, $message) = @_;
|
my ($svr, $target, $message) = @_;
|
||||||
|
|
||||||
Auto::socksnd($svr, "PRIVMSG $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 :";
|
||||||
|
|
||||||
|
# Divide message if it surpasses the maximum length.
|
||||||
|
while (length $message >= $maxlen) {
|
||||||
|
my $submsg = substr $message, 0, $maxlen, q{};
|
||||||
|
Auto::socksnd($svr, "PRIVMSG $target :$submsg");
|
||||||
|
}
|
||||||
|
if (length $message) { Auto::socksnd($svr, "PRIVMSG $target :$message") }
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -107,7 +115,15 @@ sub notice
|
|||||||
{
|
{
|
||||||
my ($svr, $target, $message) = @_;
|
my ($svr, $target, $message) = @_;
|
||||||
|
|
||||||
Auto::socksnd($svr, "NOTICE $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 :";
|
||||||
|
|
||||||
|
# Divide message if it surpasses the maximum length.
|
||||||
|
while (length $message >= $maxlen) {
|
||||||
|
my $submsg = substr $message, 0, $maxlen, q{};
|
||||||
|
Auto::socksnd($svr, "NOTICE $target :$submsg");
|
||||||
|
}
|
||||||
|
if (length $message) { Auto::socksnd($svr, "NOTICE $target :$message") }
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -129,8 +145,8 @@ sub nick
|
|||||||
|
|
||||||
Auto::socksnd($svr, "NICK $newnick");
|
Auto::socksnd($svr, "NICK $newnick");
|
||||||
|
|
||||||
$Proto::IRC::botnick{$svr}{newnick} = $newnick;
|
$Proto::IRC::botinfo{$svr}{newnick} = $newnick;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,8 +181,7 @@ sub kick
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Quit IRC.
|
# Quit IRC.
|
||||||
sub quit
|
sub quit {
|
||||||
{
|
|
||||||
my ($svr, $reason) = @_;
|
my ($svr, $reason) = @_;
|
||||||
|
|
||||||
if (defined $reason) {
|
if (defined $reason) {
|
||||||
@@ -177,11 +192,19 @@ sub quit
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete $Proto::IRC::got_001{$svr} if (defined $Proto::IRC::got_001{$svr});
|
delete $Proto::IRC::got_001{$svr} if (defined $Proto::IRC::got_001{$svr});
|
||||||
delete $Proto::IRC::botnick{$svr} if (defined $Proto::IRC::botnick{$svr});
|
delete $Proto::IRC::botinfo{$svr} if (defined $Proto::IRC::botinfo{$svr});
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Send a WHO.
|
||||||
|
sub who {
|
||||||
|
my ($svr, $nick) = @_;
|
||||||
|
|
||||||
|
Auto::socksnd($svr, "WHO $nick");
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
# Get nick, ident and host from a <nick>!<ident>@<host>
|
# Get nick, ident and host from a <nick>!<ident>@<host>
|
||||||
sub usrc
|
sub usrc
|
||||||
|
|||||||
@@ -51,6 +51,15 @@ hook_add("on_connect", "on_connect_modes", sub {
|
|||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# Self-WHO on connect.
|
||||||
|
hook_add('on_connect', 'on_connect_selfwho', sub {
|
||||||
|
my ($svr) = @_;
|
||||||
|
|
||||||
|
API::IRC::who($svr, $Proto::IRC::botinfo{$svr}{nick});
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
});
|
||||||
|
|
||||||
# Plaintext auth.
|
# Plaintext auth.
|
||||||
hook_add("on_connect", "plaintext_auth", sub {
|
hook_add("on_connect", "plaintext_auth", sub {
|
||||||
my ($svr) = @_;
|
my ($svr) = @_;
|
||||||
@@ -114,6 +123,20 @@ hook_add("on_connect", "autojoin", sub {
|
|||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# WHO reply.
|
||||||
|
hook_add('on_whoreply', 'selfwho.getdata', sub {
|
||||||
|
my (($svr, $nick, undef, $user, $mask, undef, undef, undef, undef, undef)) = @_;
|
||||||
|
|
||||||
|
# Check if it's for us.
|
||||||
|
if ($nick eq $Proto::IRC::botinfo{$svr}{nick}) {
|
||||||
|
# It is. Set data.
|
||||||
|
$Proto::IRC::botinfo{$svr}{user} = $user;
|
||||||
|
$Proto::IRC::botinfo{$svr}{mask} = $mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
});
|
||||||
|
|
||||||
sub clear_usercmd_timer
|
sub clear_usercmd_timer
|
||||||
{
|
{
|
||||||
# If ratelimit is set to 1 in config, add this timer.
|
# If ratelimit is set to 1 in config, add this timer.
|
||||||
|
|||||||
+54
-63
@@ -11,6 +11,7 @@ use API::IRC;
|
|||||||
our %RAWC = (
|
our %RAWC = (
|
||||||
'001' => \&num001,
|
'001' => \&num001,
|
||||||
'005' => \&num005,
|
'005' => \&num005,
|
||||||
|
'352' => \&num352,
|
||||||
'353' => \&num353,
|
'353' => \&num353,
|
||||||
'432' => \&num432,
|
'432' => \&num432,
|
||||||
'433' => \&num433,
|
'433' => \&num433,
|
||||||
@@ -33,7 +34,7 @@ our %RAWC = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
# Variables for various functions.
|
# Variables for various functions.
|
||||||
our (%got_001, %botnick, %botchans, %csprefix, %chanusers, %chanmodes);
|
our (%got_001, %botinfo, %botchans, %csprefix, %chanusers, %chanmodes);
|
||||||
|
|
||||||
# Events.
|
# Events.
|
||||||
API::Std::event_add("on_connect");
|
API::Std::event_add("on_connect");
|
||||||
@@ -47,6 +48,7 @@ API::Std::event_add("on_cprivmsg");
|
|||||||
API::Std::event_add("on_uprivmsg");
|
API::Std::event_add("on_uprivmsg");
|
||||||
API::Std::event_add("on_quit");
|
API::Std::event_add("on_quit");
|
||||||
API::Std::event_add("on_topic");
|
API::Std::event_add("on_topic");
|
||||||
|
API::Std::event_add('on_whoreply');
|
||||||
|
|
||||||
# Parse raw data.
|
# Parse raw data.
|
||||||
sub ircparse
|
sub ircparse
|
||||||
@@ -86,16 +88,15 @@ sub ircparse
|
|||||||
|
|
||||||
# Parse: Numeric:001
|
# Parse: Numeric:001
|
||||||
# Successful connection.
|
# Successful connection.
|
||||||
sub num001
|
sub num001 {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
|
|
||||||
$got_001{$svr} = 1;
|
$got_001{$svr} = 1;
|
||||||
|
|
||||||
# In case we don't get NICK from the server.
|
# In case we don't get NICK from the server.
|
||||||
if (defined $botnick{$svr}{newnick}) {
|
if (!defined $botinfo{$svr}{nick}) {
|
||||||
$botnick{$svr}{nick} = $botnick{$svr}{newnick};
|
$botinfo{$svr}{nick} = $botinfo{$svr}{newnick};
|
||||||
delete $botnick{$svr}{newnick};
|
delete $botinfo{$svr}{newnick};
|
||||||
}
|
}
|
||||||
|
|
||||||
# Trigger on_connect.
|
# Trigger on_connect.
|
||||||
@@ -106,8 +107,7 @@ sub num001
|
|||||||
|
|
||||||
# Parse: Numeric:005
|
# Parse: Numeric:005
|
||||||
# Prefixes and channel modes.
|
# Prefixes and channel modes.
|
||||||
sub num005
|
sub num005 {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
|
|
||||||
# Find PREFIX and CHANMODES.
|
# Find PREFIX and CHANMODES.
|
||||||
@@ -140,10 +140,20 @@ sub num005
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Parse: Numeric:352
|
||||||
|
# WHO reply.
|
||||||
|
sub num352 {
|
||||||
|
my ($svr, @ex) = @_;
|
||||||
|
|
||||||
|
# Trigger on_whoreply.
|
||||||
|
API::Std::event_run('on_whoreply', ($svr, $ex[2], $ex[3], $ex[4], $ex[5], $ex[6], @ex[7..$#ex]));
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
# Parse: Numeric:353
|
# Parse: Numeric:353
|
||||||
# NAMES reply.
|
# NAMES reply.
|
||||||
sub num353
|
sub num353 {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
|
|
||||||
# Get rid of the colon.
|
# Get rid of the colon.
|
||||||
@@ -181,8 +191,7 @@ sub num353
|
|||||||
|
|
||||||
# Parse: Numeric:432
|
# Parse: Numeric:432
|
||||||
# Erroneous nickname.
|
# Erroneous nickname.
|
||||||
sub num432
|
sub num432 {
|
||||||
{
|
|
||||||
my ($svr, undef) = @_;
|
my ($svr, undef) = @_;
|
||||||
|
|
||||||
if ($got_001{$svr}) {
|
if ($got_001{$svr}) {
|
||||||
@@ -193,20 +202,18 @@ sub num432
|
|||||||
API::IRC::quit($svr, "An error occurred.");
|
API::IRC::quit($svr, "An error occurred.");
|
||||||
}
|
}
|
||||||
|
|
||||||
delete $botnick{$svr}{newnick} if (defined $botnick{$svr}{newnick});
|
delete $botinfo{$svr}{newnick} if (defined $botinfo{$svr}{newnick});
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Parse: Numeric:433
|
# Parse: Numeric:433
|
||||||
# Nickname is already in use.
|
# Nickname is already in use.
|
||||||
sub num433
|
sub num433 {
|
||||||
{
|
|
||||||
my ($svr, undef) = @_;
|
my ($svr, undef) = @_;
|
||||||
|
|
||||||
if (defined $botnick{$svr}{newnick}) {
|
if (defined $botinfo{$svr}{newnick}) {
|
||||||
API::IRC::nick($svr, $botnick{$svr}{newnick}."_");
|
API::IRC::nick($svr, $botinfo{$svr}{newnick}."_");
|
||||||
delete $botnick{$svr}{newnick} if (defined $botnick{$svr}{newnick});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@@ -214,14 +221,13 @@ sub num433
|
|||||||
|
|
||||||
# Parse: Numeric:438
|
# Parse: Numeric:438
|
||||||
# Nick change too fast.
|
# Nick change too fast.
|
||||||
sub num438
|
sub num438 {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
|
|
||||||
if (defined $botnick{$svr}{newnick}) {
|
if (defined $botinfo{$svr}{newnick}) {
|
||||||
API::Std::timer_add("num438_".$botnick{$svr}{newnick}, 1, $ex[11], sub {
|
API::Std::timer_add("num438_".$botinfo{$svr}{newnick}, 1, $ex[11], sub {
|
||||||
API::IRC::nick($Proto::IRC::botnick{$svr}{newnick});
|
API::IRC::nick($Proto::IRC::botinfo{$svr}{newnick});
|
||||||
delete $botnick{$svr}{newnick} if (defined $botnick{$svr}{newnick});
|
delete $botinfo{$svr}{newnick} if (defined $botinfo{$svr}{newnick});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,8 +236,7 @@ sub num438
|
|||||||
|
|
||||||
# Parse: Numeric:465
|
# Parse: Numeric:465
|
||||||
# You're banned creep!
|
# You're banned creep!
|
||||||
sub num465
|
sub num465 {
|
||||||
{
|
|
||||||
my ($svr, undef) = @_;
|
my ($svr, undef) = @_;
|
||||||
|
|
||||||
err(3, "Banned from ".$svr."! Closing link...", 0);
|
err(3, "Banned from ".$svr."! Closing link...", 0);
|
||||||
@@ -241,8 +246,7 @@ sub num465
|
|||||||
|
|
||||||
# Parse: Numeric:471
|
# Parse: Numeric:471
|
||||||
# Cannot join channel: Channel is full.
|
# Cannot join channel: Channel is full.
|
||||||
sub num471
|
sub num471 {
|
||||||
{
|
|
||||||
my ($svr, (undef, undef, undef, $chan)) = @_;
|
my ($svr, (undef, undef, undef, $chan)) = @_;
|
||||||
|
|
||||||
err(3, "Cannot join channel ".$chan." on ".$svr.": Channel is full.", 0);
|
err(3, "Cannot join channel ".$chan." on ".$svr.": Channel is full.", 0);
|
||||||
@@ -252,8 +256,7 @@ sub num471
|
|||||||
|
|
||||||
# Parse: Numeric:473
|
# Parse: Numeric:473
|
||||||
# Cannot join channel: Channel is invite-only.
|
# Cannot join channel: Channel is invite-only.
|
||||||
sub num473
|
sub num473 {
|
||||||
{
|
|
||||||
my ($svr, (undef, undef, undef, $chan)) = @_;
|
my ($svr, (undef, undef, undef, $chan)) = @_;
|
||||||
|
|
||||||
err(3, "Cannot join channel ".$chan." on ".$svr.": Channel is invite-only.", 0);
|
err(3, "Cannot join channel ".$chan." on ".$svr.": Channel is invite-only.", 0);
|
||||||
@@ -263,8 +266,7 @@ sub num473
|
|||||||
|
|
||||||
# Parse: Numeric:474
|
# Parse: Numeric:474
|
||||||
# Cannot join channel: Banned from channel.
|
# Cannot join channel: Banned from channel.
|
||||||
sub num474
|
sub num474 {
|
||||||
{
|
|
||||||
my ($svr, (undef, undef, undef, $chan)) = @_;
|
my ($svr, (undef, undef, undef, $chan)) = @_;
|
||||||
|
|
||||||
err(3, "Cannot join channel ".$chan." on ".$svr.": Banned from channel.", 0);
|
err(3, "Cannot join channel ".$chan." on ".$svr.": Banned from channel.", 0);
|
||||||
@@ -274,8 +276,7 @@ sub num474
|
|||||||
|
|
||||||
# Parse: Numeric:475
|
# Parse: Numeric:475
|
||||||
# Cannot join channel: Bad key.
|
# Cannot join channel: Bad key.
|
||||||
sub num475
|
sub num475 {
|
||||||
{
|
|
||||||
my ($svr, (undef, undef, undef, $chan)) = @_;
|
my ($svr, (undef, undef, undef, $chan)) = @_;
|
||||||
|
|
||||||
err(3, "Cannot join channel ".$chan." on ".$svr.": Bad key.", 0);
|
err(3, "Cannot join channel ".$chan." on ".$svr.": Bad key.", 0);
|
||||||
@@ -285,8 +286,7 @@ sub num475
|
|||||||
|
|
||||||
# Parse: Numeric:477
|
# Parse: Numeric:477
|
||||||
# Cannot join channel: Need registered nickname.
|
# Cannot join channel: Need registered nickname.
|
||||||
sub num477
|
sub num477 {
|
||||||
{
|
|
||||||
my ($svr, (undef, undef, undef, $chan)) = @_;
|
my ($svr, (undef, undef, undef, $chan)) = @_;
|
||||||
|
|
||||||
err(3, "Cannot join channel ".$chan." on ".$svr.": Need registered nickname.", 0);
|
err(3, "Cannot join channel ".$chan." on ".$svr.": Need registered nickname.", 0);
|
||||||
@@ -295,15 +295,14 @@ sub num477
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: JOIN
|
# Parse: JOIN
|
||||||
sub cjoin
|
sub cjoin {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
my %src = API::IRC::usrc(substr($ex[0], 1));
|
my %src = API::IRC::usrc(substr($ex[0], 1));
|
||||||
my $chan = $ex[2];
|
my $chan = $ex[2];
|
||||||
$chan =~ s/^://gxsm;
|
$chan =~ s/^://gxsm;
|
||||||
|
|
||||||
# Check if this is coming from ourselves.
|
# Check if this is coming from ourselves.
|
||||||
if ($src{nick} eq $botnick{$svr}{nick}) {
|
if ($src{nick} eq $botinfo{$svr}{nick}) {
|
||||||
$botchans{$svr}{lc $chan} = 1;
|
$botchans{$svr}{lc $chan} = 1;
|
||||||
API::Std::event_run("on_ucjoin", ($svr, $chan));
|
API::Std::event_run("on_ucjoin", ($svr, $chan));
|
||||||
}
|
}
|
||||||
@@ -318,8 +317,7 @@ sub cjoin
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: KICK
|
# Parse: KICK
|
||||||
sub kick
|
sub kick {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
my %src = API::IRC::usrc(substr($ex[0], 1));
|
my %src = API::IRC::usrc(substr($ex[0], 1));
|
||||||
|
|
||||||
@@ -338,7 +336,7 @@ sub kick
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Check if we were the ones kicked.
|
# Check if we were the ones kicked.
|
||||||
if (lc($ex[3]) eq lc($botnick{$svr}{nick})) {
|
if (lc($ex[3]) eq lc($botinfo{$svr}{nick})) {
|
||||||
# We were kicked!
|
# We were kicked!
|
||||||
|
|
||||||
# Delete channel from botchans.
|
# Delete channel from botchans.
|
||||||
@@ -364,11 +362,10 @@ sub kick
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: MODE
|
# Parse: MODE
|
||||||
sub mode
|
sub mode {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
|
|
||||||
if ($ex[2] ne $botnick{$svr}{nick}) {
|
if ($ex[2] ne $botinfo{$svr}{nick}) {
|
||||||
# Set data we'll need later.
|
# Set data we'll need later.
|
||||||
my $chan = $ex[2];
|
my $chan = $ex[2];
|
||||||
my $modes = $ex[3];
|
my $modes = $ex[3];
|
||||||
@@ -454,18 +451,17 @@ sub mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: NICK
|
# Parse: NICK
|
||||||
sub nick
|
sub nick {
|
||||||
{
|
|
||||||
my ($svr, ($uex, undef, $nex)) = @_;
|
my ($svr, ($uex, undef, $nex)) = @_;
|
||||||
$nex =~ s/^://gxsm;
|
$nex =~ s/^://gxsm;
|
||||||
|
|
||||||
my %src = API::IRC::usrc(substr($uex, 1));
|
my %src = API::IRC::usrc(substr($uex, 1));
|
||||||
|
|
||||||
# Check if this is coming from ourselves.
|
# Check if this is coming from ourselves.
|
||||||
if ($src{nick} eq $botnick{$svr}{nick}) {
|
if ($src{nick} eq $botinfo{$svr}{nick}) {
|
||||||
# It is. Update bot nick hash.
|
# It is. Update bot nick hash.
|
||||||
$botnick{$svr}{nick} = $nex;
|
$botinfo{$svr}{nick} = $nex;
|
||||||
delete $botnick{$svr}{newnick} if (defined $botnick{$svr}{newnick});
|
delete $botinfo{$svr}{newnick} if (defined $botinfo{$svr}{newnick});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# It isn't. Update chanusers and trigger on_nick.
|
# It isn't. Update chanusers and trigger on_nick.
|
||||||
@@ -482,8 +478,7 @@ sub nick
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: NOTICE
|
# Parse: NOTICE
|
||||||
sub notice
|
sub notice {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
|
|
||||||
# Ensure this is coming from a user rather than a server.
|
# Ensure this is coming from a user rather than a server.
|
||||||
@@ -503,8 +498,7 @@ sub notice
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: PART
|
# Parse: PART
|
||||||
sub part
|
sub part {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
my %src = API::IRC::usrc(substr($ex[0], 1));
|
my %src = API::IRC::usrc(substr($ex[0], 1));
|
||||||
|
|
||||||
@@ -529,8 +523,7 @@ sub part
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: PRIVMSG
|
# Parse: PRIVMSG
|
||||||
sub privmsg
|
sub privmsg {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
my %data = API::IRC::usrc(substr($ex[0], 1));
|
my %data = API::IRC::usrc(substr($ex[0], 1));
|
||||||
|
|
||||||
@@ -545,7 +538,7 @@ sub privmsg
|
|||||||
|
|
||||||
my ($cmd, $cprefix, $rprefix);
|
my ($cmd, $cprefix, $rprefix);
|
||||||
# Check if it's to a channel or to us.
|
# Check if it's to a channel or to us.
|
||||||
if (lc($ex[2]) eq lc($botnick{$svr}{nick})) {
|
if (lc($ex[2]) eq lc($botinfo{$svr}{nick})) {
|
||||||
# It is coming to us in a private message.
|
# It is coming to us in a private message.
|
||||||
|
|
||||||
# Ensure it's a valid length.
|
# Ensure it's a valid length.
|
||||||
@@ -657,8 +650,7 @@ sub privmsg
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: QUIT
|
# Parse: QUIT
|
||||||
sub quit
|
sub quit {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
my %src = API::IRC::usrc(substr($ex[0], 1));
|
my %src = API::IRC::usrc(substr($ex[0], 1));
|
||||||
|
|
||||||
@@ -680,13 +672,12 @@ sub quit
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Parse: TOPIC
|
# Parse: TOPIC
|
||||||
sub topic
|
sub topic {
|
||||||
{
|
|
||||||
my ($svr, @ex) = @_;
|
my ($svr, @ex) = @_;
|
||||||
my %src = API::IRC::usrc(substr($ex[0], 1));
|
my %src = API::IRC::usrc(substr($ex[0], 1));
|
||||||
|
|
||||||
# Ignore it if it's coming from us.
|
# Ignore it if it's coming from us.
|
||||||
if (lc($src{nick}) ne lc($botnick{$svr}{nick})) {
|
if (lc($src{nick}) ne lc($botinfo{$svr}{nick})) {
|
||||||
$src{chan} = $ex[2];
|
$src{chan} = $ex[2];
|
||||||
my (@argv);
|
my (@argv);
|
||||||
$argv[0] = substr($ex[3], 1);
|
$argv[0] = substr($ex[3], 1);
|
||||||
|
|||||||
Reference in new issue
Block a user