privmsg($event->{to}->[0], "This bot has been running for " . (time - $::starttime) . " seconds" . ", is tracking " . (scalar (keys %::sn)) . " nicks" . " across " . (scalar (keys %::sc)) . " tracked channels." . " It is using " . $size . "KB of RAM" . " and has used " . $cputime . " of CPU time."); ]]> privmsg($event->{to}->[0], $1 . " is on: " . ASM::Util->commaAndify(@{$::sn{lc $1}->{mship}})); ]]> privmsg($event->{to}->[0], "source is at http://svn.linuxrulz.org/repos/antispammeta"); ]]> {DBH}; if ($1 eq 'log') { $dbh = $::db->{DBH_LOG}; } $::db->raw($conn, $event->{to}->[0], $dbh, $2); ]]> getLink(lc $chan); if ( lc $link ne lc $chan ) { $conn->privmsg($event->{to}->[0], "Error: $chan is linked to $link - use $link instead."); return; } $::channels->{channel}->{$chan}->{monitor} = $switch; ASM::XML->writeChannels(); $conn->privmsg($event->{to}->[0], "Monitor flag for $chan set to $switch"); ]]> privmsg($event->{to}->[0], "help is at http://meta.wikimedia.org/wiki/User:WHeimbigner/AntiSpamMeta"); $conn->privmsg($event->{to}->[0], "You can also get faster help by emailing william dot heimbigner at ttu dot edu - or bug ErrantEgo or tomaw"); ]]> privmsg($event->{to}->[0], "db is at http://antispammeta.net/query.html"); ]]> query($channel, $nuh[0], $nuh[2], $nuh[4]); $conn->privmsg($event->{to}->[0], "$result results found."); ]]> privmsg($event->{to}->[0], "The d flag may not be assigned over IRC. Edit the configuration manually."); return; } $::users->{person}->{$acct} = { 'flags' => $flags }; ASM::XML->writeUsers(); $conn->privmsg($event->{to}->[0], "Flags for NickServ account $acct set to $flags"); ]]> privmsg($event->{to}->[0], "This command has been deprecated"); ]]> {person}->{$nick}->{flags})) { $conn->privmsg($event->{to}->[0], "Flags for $nick: $::users->{person}->{$nick}->{flags}"); } else { $conn->privmsg($event->{to}->[0], "$nick has no flags"); } ]]> privmsg($event->{to}->[0], "The d flag may not be assigned over IRC. Edit the configuration manually."); return; } $::users->{person}->{$nick}->{flags} = $flags; ASM::XML->writeUsers(); $conn->privmsg($event->{to}->[0], "Flags for $nick set to $flags"); ]]> {person}->{$nick}); ASM::XML->writeUsers(); $conn->privmsg($event->{to}->[0], "Byebye $nick"); ]]> getLink(lc $chan); if ( lc $link ne lc $chan ) { $conn->privmsg($event->{to}->[0], "Error: $chan is linked to $link - use $link instead."); return; } if ($level eq '') { $level = 'low'; } unless (defined($::channels->{channel}->{$chan}->{msgs})) { $::channels->{channel}->{$chan}->{msgs} = {}; } unless (defined($::channels->{channel}->{$chan}->{msgs}->{$level})) { $::channels->{channel}->{$chan}->{msgs}->{$level} = []; } my @tmphl = @{$::channels->{channel}->{$chan}->{msgs}->{$level}}; push(@tmphl, $nick); $::channels->{channel}->{$chan}->{msgs}->{$level} = \@tmphl; ASM::XML->writeChannels(); $conn->privmsg($event->{to}->[0], "$nick added to $level risk messages for $chan"); ]]> getLink(lc $chan); if ( lc $link ne lc $chan ) { $conn->privmsg($event->{to}->[0], "Error: $chan is linked to $link - use $link instead."); return; } foreach my $risk ( keys %::RISKS ) { next unless defined($::channels->{channel}->{$chan}->{msgs}->{$risk}); my @ppl = @{$::channels->{channel}->{$chan}->{msgs}->{$risk}}; @ppl = grep { lc $_ ne lc $nick } @ppl; $::channels->{channel}->{$chan}->{msgs}->{$risk} = \@ppl; } ASM::XML->writeChannels(); $conn->privmsg($event->{to}->[0], "$nick removed from targets for $chan"); ]]> {channel}})) { foreach my $level (keys(%{$::channels->{channel}->{$chan}->{hilights}})) { if (grep(/^${nick}$/i, @{$::channels->{channel}->{$chan}->{hilights}->{$level}})) { push @channels, $chan . " ($level)"; } } } if (! @channels) { $conn->privmsg($event->{to}->[0], "$nick isn't on any hilights"); } else { $conn->privmsg($event->{to}->[0], "$nick is hilighted for " . join(', ', @channels)); } ]]> privmsg($event->{to}->[0], "Error: I don't recognize $level as a valid level."); return; } my $link = ASM::Util->getLink(lc $chan); if ( lc $link ne lc $chan ) { $conn->privmsg($event->{to}->[0], "Error: $chan is linked to $link - use $link instead."); return; } unless (defined($::channels->{channel}->{$chan}->{hilights})) { $::channels->{channel}->{$chan}->{hilights} = {}; } unless (defined($::channels->{channel}->{$chan}->{hilights}->{$level})) { $::channels->{channel}->{$chan}->{hilights}->{$level} = []; } foreach my $nick (@nicks) { my @tmphl = @{$::channels->{channel}->{$chan}->{hilights}->{$level}}; push(@tmphl, $nick); $::channels->{channel}->{$chan}->{hilights}->{$level} = \@tmphl; } ASM::XML->writeChannels(); $conn->privmsg($event->{to}->[0], ASM::Util->commaAndify(@nicks) . " added to $level risk hilights for $chan"); ]]> getLink(lc $chan); if ( lc $link ne lc $chan ) { $conn->privmsg($event->{to}->[0], "Error: $chan is linked to $link - use $link instead."); return; } foreach my $risk ( keys %::RISKS ) { next unless defined($::channels->{channel}->{$chan}->{hilights}->{$risk}); my @ppl = @{$::channels->{channel}->{$chan}->{hilights}->{$risk}}; foreach my $nick (@nicks) { @ppl = grep { lc $_ ne lc $nick } @ppl; } $::channels->{channel}->{$chan}->{hilights}->{$risk} = \@ppl; } ASM::XML->writeChannels(); $conn->privmsg($event->{to}->[0], "Removing hilights for " . ASM::Util->commaAndify(@nicks) . " in $chan"); ]]> {channel}->{$chan})) { $::channels->{channel}->{$chan} = { }; ASM::XML->writeChannels(); } $conn->join($chan); my @autojoins = @{$::settings->{autojoins}}; @autojoins = (@autojoins, $chan); $::settings->{autojoins} = \@autojoins; ASM::XML->writeSettings(); ]]> part($chan); my @autojoins = @{$::settings->{autojoins}}; @autojoins = grep { lc $_ ne lc $chan } @autojoins; $::settings->{autojoins} = \@autojoins; ASM::XML->writeSettings(); ]]> sl($1); ]]> quit($1); ]]> readXML(); my @strbl = io('string_blacklist.txt')->getlines; chomp @strbl; @::string_blacklist = @strbl; my @eline=io('exempt.txt')->getlines; chomp @eline; %::eline = (); foreach my $item (@eline) { $::eline{lc $item} = 1; } $conn->privmsg($event->{to}->[0], 'config files were re-read'); ]]> privmsg($event->{to}->[0], $1); ]]> me($event->{to}->[0], $1); ]]> privmsg($event->{to}->[0], "This command is now deprecated. Use ;restrict nick/account/host lineToRestrict +notrigger instead, i.e. ;restrict account eir +notrigger"); ]]> {$type . 's'}->{$type}->{$who}->{$restriction}; $conn->privmsg($event->{to}->[0], "Removed $restriction restriction for $type $who"); } if ($mode eq '+') { if (! defined($::restrictions->{$type . 's'}->{$type}->{$who})) { $::restrictions->{$type . 's'}->{$type}->{$who} = {}; } $::restrictions->{$type . 's'}->{$type}->{$who}->{$restriction} = $restriction; $conn->privmsg($event->{to}->[0], "Added $restriction restriction for $type $who"); } ASM::XML->writeRestrictions(); ]]> notRestricted(lc $event->{nick}, "noops")) { my $tgt = $event->{to}->[0]; $tgt = $1 if (defined($1)); my $msg = $1; $msg = $2 if defined($2); unless (defined($::ignored{$tgt}) && ($::ignored{$tgt} >= $::RISKS{'opalert'})) { $::ignored{$tgt} = $::RISKS{'opalert'}; $conn->schedule(30, sub { delete($::ignored{$tgt})}); my $hilite=ASM::Util->commaAndify(ASM::Util->getAlert($tgt, 'opalert', 'hilights')); my $txtz = "[\x02$tgt\x02] - $event->{nick} wants op attention ($msg) $hilite"; my @tgts = ASM::Util->getAlert($tgt, 'opalert', 'msgs'); ASM::Util->sendLongMsg($conn, \@tgts, $txtz); } } ]]> > io 'string_blacklist.txt'; $conn->privmsg($event->{to}->[0], "$str blacklisted"); ]]> {nick} plugin)\x02 - ${reason}; ping "; $txtz = $txtz . ASM::Util->commaAndify(ASM::Util->getAlert(lc $chan, $risk, 'hilights')) if (ASM::Util->getAlert(lc $chan, $risk, 'hilights')); $txtz = $txtz . ' !att-' . $chan . '-' . $risk; my @tgts = ASM::Util->getAlert($chan, $risk, 'msgs'); if (length($txtz) <= 380) { $conn->privmsg(\@tgts, $txtz); } else { my $splitpart = rindex($txtz, " ", 380); $conn->privmsg(\@tgts, substr($txtz, 0, $splitpart)); $conn->privmsg(\@tgts, substr($txtz, $splitpart)); } ]]>