summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLibravatarDoug Freed <dwfreed@mtu.edu>2016-01-13 15:59:13 -0700
committerLibravatarDoug Freed <dwfreed@mtu.edu>2016-01-13 15:59:13 -0700
commit8d8447a7f936e82057143371de8fbbc9d7443b09 (patch)
tree733735472c44d65a383e2c6b51f09c4caa2da4a9 /lib
parent76fc4276b5966da13b984071b5d0b24fae09779b (diff)
Bugfixes and improvements
- Stop asking ChanServ to be unbanned from a channel - Only sync channels we actually join - Fix NickServ message detection (I wish they used numerics)
Diffstat (limited to 'lib')
-rw-r--r--lib/ASM/Event.pm17
-rw-r--r--lib/ASM/Services.pm31
2 files changed, 20 insertions, 28 deletions
diff --git a/lib/ASM/Event.pm b/lib/ASM/Event.pm
index 7f7ff3c..690a12d 100644
--- a/lib/ASM/Event.pm
+++ b/lib/ASM/Event.pm
@@ -236,13 +236,13 @@ sub on_join {
mkdir($::settings->{log}->{dir} . $chan);
$::synced{$chan} = 0;
$::pendingsync++;
-# unless ( (scalar @::syncqueue) > 4 ) {
-# ASM::Util->dprint("Syncing $chan", "sync");
-# $conn->sl('who ' . $chan . ' %tcnuhra,314');
-# $conn->sl('mode ' . $chan);
-# $conn->sl('mode ' . $chan . ' bq');
-# }
-# push @::syncqueue, $chan;
+ unless ( scalar @::syncqueue ) {
+ ASM::Util->dprint("Syncing $chan", "sync");
+ $conn->sl('who ' . $chan . ' %tcnuhra,314');
+ $conn->sl('mode ' . $chan);
+ $conn->sl('mode ' . $chan . ' b');
+ }
+ push @::syncqueue, $chan;
}
$::sc{$chan}{users}{$nick} = {};
$::sc{$chan}{users}{$nick}{hostmask} = $event->{userhost};
@@ -902,8 +902,7 @@ sub on_whofuckedup
sub on_bannedfromchan {
my ($conn, $event) = @_;
- ASM::Util->dprint("I'm banned from " . $event->{args}->[1] . "... attempting to unban myself", 'startup');
- $conn->privmsg('ChanServ', "unban $event->{args}->[1]");
+ ASM::Util->dprint("I'm banned from " . $event->{args}->[1], 'startup');
}
sub on_byechan {
diff --git a/lib/ASM/Services.pm b/lib/ASM/Services.pm
index c64e0b1..7e1df9d 100644
--- a/lib/ASM/Services.pm
+++ b/lib/ASM/Services.pm
@@ -20,33 +20,26 @@ sub doServices {
if ($event->{from} eq 'NickServ!NickServ@services.')
{
ASM::Util->dprint("NickServ: $event->{args}->[0]", 'snotice');
- if ( $::no_autojoins && $event->{args}->[0] =~ /^Please identify/ )
+ if ( $::no_autojoins && ( $event->{args}->[0] =~ /^Please identify/ || $event->{args}->[0] =~ /^This nickname is registered/ ) )
{
$::no_autojoins = 0;
$conn->sl("NickServ identify $::settings->{nick} $::settings->{pass}" );
}
elsif ( $event->{args}->[0] =~ /^You are now identified/ )
{
- my @autojoins = @{$::settings->{autojoins}};
- if (defined($autojoins[30])) {
- $conn->join(join(',', @autojoins[0..30]));
- if (defined($autojoins[60])) {
- $conn->join(join(',', @autojoins[30..60]));
- $conn->join(join(',', @autojoins[60..$#autojoins]));
- } else {
- $conn->join(join(',', @autojoins[30..$#autojoins]));
+ my $joinstring = "";
+ foreach my $autojoin (@{$::settings->{autojoins}})
+ {
+ if ( length($joinstring) + length($autojoin) > 504 )
+ {
+ $conn->join($joinstring);
+ $joinstring = "";
}
- } else {
- $conn->join(join(',', @autojoins));
+ $joinstring .= ',' if length($joinstring);
+ $joinstring .= "$autojoin";
}
+ $conn->join($joinstring) if length($joinstring);
$conn->sl("PING :" . time);
- foreach my $chan (@autojoins[0..1]) {
- ASM::Util->dprint("Syncing $chan", "sync");
- $conn->sl('who ' . $chan . ' %tcnuhra,314');
- $conn->sl('mode ' . $chan);
- $conn->sl('mode ' . $chan . ' b');
- }
- @::syncqueue = @autojoins[1..$#autojoins];
# $conn->schedule(2, sub { $conn->privmsg($::settings->{masterchan}, 'Now joined to all channels in '. (time - $::starttime) . " seconds."); });
}
elsif ($event->{args}->[0] =~ /has been (killed|released)/ )
@@ -58,7 +51,7 @@ sub doServices {
{
ASM::Util->dprint('Got regain successful from nickserv!', 'snotice');
}
- elsif ($event->{args}->[0] =~ /Password Incorrect/ )
+ elsif ($event->{args}->[0] =~ /Invalid password/ )
{
die("NickServ password invalid.")
}