From: timriker <timriker@c11ca15a-4712-0410-83d8-924469b57eb5>
Date: Mon, 8 Nov 2004 21:46:54 +0000 (+0000)
Subject: new pager support
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c6a762234be629769025f83fc0e841618a8c4e05;p=infobot.git

new pager support


git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@1030 c11ca15a-4712-0410-83d8-924469b57eb5
---

diff --git a/blootbot/files/sample/blootbot.chan b/blootbot/files/sample/blootbot.chan
index c7a806a..44840f9 100644
--- a/blootbot/files/sample/blootbot.chan
+++ b/blootbot/files/sample/blootbot.chan
@@ -44,6 +44,7 @@ _default
     +limitcheck
     +log
     +nickometer
+    +page
     +perlMath
     +plug
     +quote
diff --git a/blootbot/src/CommandStubs.pl b/blootbot/src/CommandStubs.pl
index d638cbf..fd10ecd 100644
--- a/blootbot/src/CommandStubs.pl
+++ b/blootbot/src/CommandStubs.pl
@@ -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/blootbot/src/Modules/pager.pl b/blootbot/src/Modules/pager.pl
new file mode 100644
index 0000000..56bc495
--- /dev/null
+++ b/blootbot/src/Modules/pager.pl
@@ -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
diff --git a/blootbot/src/modules.pl b/blootbot/src/modules.pl
index bbce57c..0fcf722 100644
--- a/blootbot/src/modules.pl
+++ b/blootbot/src/modules.pl
@@ -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",