# WARN: this file does not reload on HUP.
#
-# use strict; # TODO
+# TODO:
+# use strict;
use vars qw($who $msgType $conn $chan $message $ident $talkchannel
- $bot_version $babel_lang_regex $bot_data_dir);
+ $bot_version $bot_data_dir);
use vars qw(@vernick @vernicktodo);
use vars qw(%channels %cache %mask %userstats %myModules %cmdstats
%hooks_extra %lang %ver);
# FIX THE FOLLOWING:
use vars qw($total $x $type $i $good);
-$babel_lang_regex = "fr|sp|es|po|pt|it|ge|de|gr|en|zh|ja|jp|ko|kr|ru";
$w3search_regex = "google";
### COMMAND HOOK IMPLEMENTATION.
# addCmdHook("SECTION", 'TEXT_HOOK',
-# (CODEREF => 'Blah',
+# (CODEREF => 'Blah',
# Forker => 1,
-# CheckModule => 1, # ???
# Module => 'blah.pl' # preload module.
# Identifier => 'config_label', # change to Config?
# Help => 'help_label',
### START ADDING HOOKS.
###
&addCmdHook("extra", 'd?bugs', ('CODEREF' => 'DBugs::Parse',
- 'Forker' => 1, 'Identifier' => 'debianExtra',
+ 'Forker' => 1, 'Identifier' => 'DebianExtra',
'Cmdstats' => 'Debian Bugs') );
&addCmdHook("extra", 'dauthor', ('CODEREF' => 'Debian::searchAuthor',
- 'Forker' => 1, 'Identifier' => 'debian',
+ 'Forker' => 1, 'Identifier' => 'Debian',
'Cmdstats' => 'Debian Author Search', 'Help' => "dauthor" ) );
&addCmdHook("extra", '(d|search)desc', ('CODEREF' => 'Debian::searchDescFE',
- 'Forker' => 1, 'Identifier' => 'debian',
+ 'Forker' => 1, 'Identifier' => 'Debian',
'Cmdstats' => 'Debian Desc Search', 'Help' => "ddesc" ) );
&addCmdHook("extra", 'dnew', ('CODEREF' => 'DebianNew',
- 'Identifier' => 'debian' ) );
+ 'Identifier' => 'Debian' ) );
&addCmdHook("extra", 'dincoming', ('CODEREF' => 'Debian::generateIncoming',
- 'Forker' => 1, 'Identifier' => 'debian' ) );
+ 'Forker' => 1, 'Identifier' => 'Debian' ) );
&addCmdHook("extra", 'dstats', ('CODEREF' => 'Debian::infoStats',
- 'Forker' => 1, 'Identifier' => 'debian',
+ 'Forker' => 1, 'Identifier' => 'Debian',
'Cmdstats' => 'Debian Statistics' ) );
&addCmdHook("extra", 'd?contents', ('CODEREF' => 'Debian::searchContents',
- 'Forker' => 1, 'Identifier' => 'debian',
+ 'Forker' => 1, 'Identifier' => 'Debian',
'Cmdstats' => 'Debian Contents Search', 'Help' => "contents" ) );
&addCmdHook("extra", 'd?find', ('CODEREF' => 'Debian::DebianFind',
- 'Forker' => 1, 'Identifier' => 'debian',
+ 'Forker' => 1, 'Identifier' => 'Debian',
'Cmdstats' => 'Debian Search', 'Help' => "find" ) );
-#&addCmdHook("extra", 'insult', ('CODEREF' => 'Insult::Insult',
-# 'Forker' => 1, 'Identifier' => 'insult', 'Help' => "insult" ) );
+&addCmdHook("extra", 'insult', ('CODEREF' => 'Insult::Insult',
+ 'Forker' => 1, 'Identifier' => 'insult', 'Help' => "insult" ) );
&addCmdHook("extra", 'kernel', ('CODEREF' => 'Kernel::Kernel',
- 'Forker' => 1, 'Identifier' => 'kernel',
+ 'Forker' => 1, 'Identifier' => 'Kernel',
'Cmdstats' => 'Kernel', 'NoArgs' => 1) );
&addCmdHook("extra", 'listauth', ('CODEREF' => 'CmdListAuth',
- 'Identifier' => 'search', Module => 'factoids',
+ 'Identifier' => 'search', Module => 'Factoids',
'Help' => 'listauth') );
&addCmdHook("extra", 'quote', ('CODEREF' => 'Quote::Quote',
- 'Forker' => 1, 'Identifier' => 'quote',
+ 'Forker' => 1, 'Identifier' => 'Quote',
'Help' => 'quote', 'Cmdstats' => 'Quote') );
-&addCmdHook("extra", 'countdown', ('CODEREF' => 'Countdown',
+&addCmdHook("extra", 'countdown', ('CODEREF' => 'countdown',
'Module' => 'countdown', 'Identifier' => 'countdown',
- 'Cmdstats' => 'Countdown') );
+ 'Cmdstats' => 'countdown') );
&addCmdHook("extra", 'lart', ('CODEREF' => 'lart',
'Identifier' => 'lart', 'Help' => 'lart') );
&addCmdHook("extra", 'convert', ('CODEREF' => 'convert',
'Forker' => 1, 'Identifier' => 'units',
'Help' => 'convert') );
&addCmdHook("extra", '(cookie|random)', ('CODEREF' => 'cookie',
- 'Forker' => 1, 'Identifier' => 'factoids') );
+ 'Forker' => 1, 'Identifier' => 'Factoids') );
&addCmdHook("extra", 'u(ser)?info', ('CODEREF' => 'userinfo',
'Identifier' => 'userinfo', 'Help' => 'userinfo',
'Module' => 'userinfo') );
-&addCmdHook("extra", 'rootWarn', ('CODEREF' => 'CmdrootWarn',
- 'Identifier' => 'rootWarn', 'Module' => 'rootwarn') );
+&addCmdHook("extra", 'RootWarn', ('CODEREF' => 'CmdrootWarn',
+ 'Identifier' => 'RootWarn', 'Module' => 'RootWarn') );
&addCmdHook("extra", 'seen', ('CODEREF' => 'seen', 'Identifier' =>
'seen') );
-&addCmdHook("extra", 'dict', ('CODEREF' => 'Dict::Dict',
- 'Identifier' => 'dict', 'Help' => 'dict',
+&addCmdHook("extra", 'Dict', ('CODEREF' => 'Dict::Dict',
+ 'Identifier' => 'Dict', 'Help' => 'dict',
'Forker' => 1, 'Cmdstats' => 'Dict') );
&addCmdHook("extra", 'slashdot', ('CODEREF' => 'Slashdot::Slashdot',
'Identifier' => 'slashdot', 'Forker' => 1,
'Cmdstats' => 'Slashdot') );
-&addCmdHook("extra", 'plug', ('CODEREF' => 'Plug::Plug',
- 'Identifier' => 'plug', 'Forker' => 1,
+&addCmdHook("extra", 'Plug', ('CODEREF' => 'Plug::Plug',
+ 'Identifier' => 'Plug', 'Forker' => 1,
'Cmdstats' => 'Plug') );
&addCmdHook("extra", 'uptime', ('CODEREF' => 'uptime', 'Identifier' => 'uptime',
'Cmdstats' => 'Uptime') );
&addCmdHook("extra", 'weather', ('CODEREF' => 'Weather::Weather',
'Identifier' => 'weather', 'Help' => 'weather',
'Cmdstats' => 'weather', 'Forker' => 1) );
+&addCmdHook("extra", 'metar', ('CODEREF' => 'Weather::Metar',
+ 'Identifier' => 'weather', 'Help' => 'weather',
+ 'Cmdstats' => 'weather', 'Forker' => 1) );
&addCmdHook("extra", 'bzflist', ('CODEREF' => 'BZFlag::list',
- 'Identifier' => 'bzflag', 'Cmdstats' => 'BZFlag',
+ 'Identifier' => 'BZFlag', 'Cmdstats' => 'BZFlag',
+ 'Forker' => 1) );
+&addCmdHook("extra", 'bzflist17', ('CODEREF' => 'BZFlag::list17',
+ 'Identifier' => 'BZFlag', 'Cmdstats' => 'BZFlag',
'Forker' => 1) );
&addCmdHook("extra", 'bzfquery', ('CODEREF' => 'BZFlag::query',
- 'Identifier' => 'bzflag', 'Cmdstats' => 'BZFlag',
- 'Forker' => 1, 'Help' => 'bzflag') );
+ 'Identifier' => 'BZFlag', 'Cmdstats' => 'BZFlag',
+ 'Forker' => 1) );
&addCmdHook("extra", 'zfi', ('CODEREF' => 'zfi::query',
'Identifier' => 'zfi', 'Cmdstats' => 'zfi',
'Forker' => 1) );
'Identifier' => 'zsi', 'Cmdstats' => 'zsi',
'Forker' => 1) );
&addCmdHook("extra", '(ex)?change', ('CODEREF' => 'Exchange::query',
- 'Identifier' => 'exchange', 'Cmdstats' => 'exchange',
+ 'Identifier' => 'Exchange', 'Cmdstats' => 'Exchange',
'Forker' => 1) );
&addCmdHook("extra", '(botmail|message)', ('CODEREF' => 'botmail::parse',
'Identifier' => 'botmail', 'Cmdstats' => 'botmail') );
-
+&addCmdHook("extra", 'HTTPDtype', ('CODEREF' => 'HTTPDtype::HTTPDtype',
+ 'Identifier' => 'HTTPDtype', 'Cmdstats' => 'HTTPDtype',
+ 'Forker' => 1) );
+&addCmdHook("extra", 'Rss', ('CODEREF' => 'Rss::Rss',
+ 'Identifier' => 'Rss', 'Cmdstats' => 'Rss',
+ 'Forker' => 1, 'Help' => 'rss') );
+&addCmdHook("extra", 'wiki(pedia)?', ('CODEREF' => 'wikipedia::wikipedia',
+ 'Identifier' => 'wikipedia', 'Cmdstats' => 'wikipedia',
+ 'Forker' => 1, 'Help' => 'wikipedia') );
+&addCmdHook("extra", 'page', ('CODEREF' => 'pager::page',
+ 'Identifier' => 'pager', 'Cmdstats' => 'pager',
+ 'Forker' => 1, 'Help' => 'page') );
+&addCmdHook("extra", 'babel(fish)?|x|xlate|translate', ('CODEREF' => 'babelfish::babelfish',
+ 'Identifier' => 'babelfish', 'Cmdstats' => 'babelfish',
+ 'Forker' => 1, 'Help' => 'babelfish') );
###
### END OF ADDING HOOKS.
###
return;
}
- # babel bot: Jonathan Feinberg++
- if ($message =~ m{
- ^\s*
- (?:babel(?:fish)?|x|xlate|translate)
- \s+
- ($babel_lang_regex)\w* # from language?
- \s+
- ($babel_lang_regex)\w* # to language?
- \s*
- (.+) # The phrase to be translated
- }xoi) {
- return unless (&hasParam("babelfish"));
-
- &Forker("babelfish", sub { &babel::babelfish(lc $1, lc $2, $3); } );
-
- $cmdstats{'BabelFish'}++;
- return;
- }
-
- my $debiancmd = 'conflicts?|depends?|desc|file|d?info|provides?';
+ my $debiancmd = 'conflicts?|depends?|desc|file|(?:d)?info|provides?';
$debiancmd .= '|recommends?|suggests?|maint|maintainer';
if ($message =~ /^($debiancmd)(\s+(.*))?$/i) {
}
# google searching. Simon++
- if ($message =~ /^(?:search\s+)?($w3search_regex)\s+(for\s+)?['"]?(.*?)["']?\s*\?*$/i) {
+ if ($message =~ /^(?:search\s+)?($w3search_regex)\s+(?:for\s+)?['"]?(.*?)["']?\s*\?*$/i) {
return unless (&hasParam("wwwsearch"));
&Forker("wwwsearch", sub { &W3Search::W3Search($1,$2); } );
my ($target) = &fixString($_[0]);
my $extra = 0;
my $chan = $talkchannel;
+ my ($for);
if ($msgType eq 'private') {
if ($target =~ /^($mask{chan})\s+(.*)$/) {
return;
}
}
+ if ($target =~ /^(.*)(\s+for\s+.*)$/) {
+ $target = $1;
+ $for = $2;
+ }
my $line = &getRandomLineFromFile($bot_data_dir. "/blootbot.lart");
if (defined $line) {
} else {
$line =~ s/WHO/$target/g;
}
+ $line .= $for if ($for);
$line .= ", courtesy of $who" if ($extra);
&action($chan, $line);
if (!defined $arg or $arg =~ /^\s*$/) {
# this is way fucking ugly.
- # TODO convert $where to hash
+ # TODO: convert $where to hash
my %hash = &sqlSelectColHash("stats", "nick,counter",
{ },
$where." ORDER BY counter DESC LIMIT 3", 1
&pSReply("zero counter for \037$type\037.");
}
} else {
- # TODO convert $where to hash and use a sqlSelect
+ # TODO: convert $where to hash and use a sqlSelect
my $x = (&sqlRawReturn("SELECT SUM(counter) FROM stats".
" WHERE $where AND nick=".&sqlQuote($arg) ))[0];
}
# defined.
- # TODO convert $where to hash
+ # TODO: convert $where to hash
my @array = &sqlSelect("stats", "nick", undef,
$where." ORDER BY counter", 1
);
return;
}
- # TODO add nick to where_href
+ # TODO: add nick to where_href
my %hash = &sqlSelectColHash("stats", "type,counter",
$where_href, " AND nick=".&sqlQuote($arg)
);
foreach (keys %hash) {
&DEBUG("_stats: hash{$_} => $hash{$_}");
# ranking.
- # TODO convert $where to hash
+ # TODO: convert $where to hash
my @array = &sqlSelect("stats", "nick", undef,
$where." ORDER BY counter", 1);
$good = 0;
&pSReply("\002$arg\002 has said \037$type\037 \002$x\002 times (\002$pct1\002 %)$xtra");
}
-sub nullski { my ($arg) = @_; return unless (defined $arg);
- foreach (`$arg`) { &msg($who,$_); } }
+sub nullski {
+ my ($arg) = @_;
+ return unless (defined $arg);
+ # big security hole
+ #foreach (`$arg`) { &msg($who,$_); }
+}
1;