]> git.donarmstrong.com Git - infobot.git/commitdiff
new pager support
authortimriker <timriker@c11ca15a-4712-0410-83d8-924469b57eb5>
Mon, 8 Nov 2004 21:46:54 +0000 (21:46 +0000)
committertimriker <timriker@c11ca15a-4712-0410-83d8-924469b57eb5>
Mon, 8 Nov 2004 21:46:54 +0000 (21:46 +0000)
git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@1030 c11ca15a-4712-0410-83d8-924469b57eb5

files/sample/blootbot.chan
src/CommandStubs.pl
src/Modules/pager.pl [new file with mode: 0644]
src/modules.pl

index c7a806af548ce0020d76dac687b1c3c65716e97e..44840f99cbb9278a74f46d1457bbae0f5d276dd7 100644 (file)
@@ -44,6 +44,7 @@ _default
     +limitcheck
     +log
     +nickometer
+    +page
     +perlMath
     +plug
     +quote
index d638cbf6212b1723791f5bdbf9dc3d585691585b..fd10ecd01b3c6a68d43514f29ff49cabeb1370c4 100644 (file)
@@ -263,6 +263,9 @@ sub parseCmdHook {
 &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') );
 ###
 ### END OF ADDING HOOKS.
 ###
diff --git a/src/Modules/pager.pl b/src/Modules/pager.pl
new file mode 100644 (file)
index 0000000..56bc495
--- /dev/null
@@ -0,0 +1,82 @@
+# Pager
+#
+# modified from pager.pm in flooterbuck
+
+package pager;
+use strict;
+
+my $no_page;
+
+BEGIN {
+       eval qq{
+               use Mail::Mailer qw(sendmail);
+       };
+       $no_page++ if ($@);
+}
+
+sub pager::page {
+       my ($message) = @_;
+       my ($retval);
+       if ($no_page) {
+               &main::status("page module requires Mail::Mailer.");
+               return 'page module not active';
+       }
+       unless ($message =~ /^(\S+)\s+(.*)$/) {
+               return undef;
+       }
+
+       my $from = $::who;
+       my $to = $1;
+       my $msg = $2;
+
+       my $tofactoid = &::getFactoid("${to}'s pager");
+       if ($tofactoid =~ /(\S+@\S+)/) {
+               my $toaddr = $1;
+               $toaddr =~ s/^mailto://;
+
+               my $fromfactoid = &::getFactoid("${from}'s pager");
+
+               my $fromaddr;
+               if ($fromfactoid =~ /(\S+@\S+)/) {
+                       $fromaddr = $1;
+                       $fromaddr =~ s/^mailto://;
+               } else {
+                       $fromaddr = 'infobot@example.com';
+               }
+
+               my $channel = $::chan || 'infobot';
+
+               &main::status("pager: from $from <$fromaddr>, to $to <$toaddr>, msg \"$msg\"");
+               my %headers = (
+                       To => "$to <$toaddr>",
+                       From => "$from <$fromaddr>",
+                       Subject => "Message from $channel!",
+                       'X-Mailer' => "blootbot",
+               );
+
+               #my $logmsg;
+               #for (keys %headers) {
+               #       $logmsg .= "$_: $headers{$_}\n";
+               #}
+               #$logmsg .= "\n$msg\n";
+               #&main::status("pager:\n$logmsg");
+
+               my $failed;
+               my $mailer = new Mail::Mailer 'sendmail';
+               $failed++ unless $mailer->open(\%headers);
+               $failed++ unless print $mailer "$msg\n";
+               $failed++ unless $mailer->close;
+
+               if ($failed) {
+                       $retval='Sorry, an error occurred while sending mail.';
+               } else {
+                       $retval="$from: I sent mail to $toaddr.";
+               }
+       } else {
+               $retval="Sorry, I don't know ${to}'s email address.";
+       }
+       &::performStrictReply($retval);
+}
+
+"pager";
+# vim: ts=2 sw=2
index bbce57cf5211d6bb3de5bb634806bdabd8701cdf..0fcf72245f025314f7d8c1d8cc0da6f5156f24e3 100644 (file)
@@ -38,6 +38,7 @@ if ($@) {
        "kernel"        => "Kernel.pl",
        "news"          => "News.pl",
        "nickometer"    => "nickometer.pl",
+       "pager"         => "pager.pl",
        "perlMath"      => "Math.pl",
        "plug"          => "Plug.pl",
        "quote"         => "Quote.pl",