From c6f2bcab5ab8b4af06f730eb27c4f177afda55cc Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Sun, 6 Dec 2009 00:13:12 +0100 Subject: [PATCH] Converted SMS --- Commands/SMS.pm | 99 ++++++++++++++++++++++++------------------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/Commands/SMS.pm b/Commands/SMS.pm index eba2d65..452e317 100644 --- a/Commands/SMS.pm +++ b/Commands/SMS.pm @@ -17,76 +17,75 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * #**************************************************************************/ -package NDIRC::Commands::SMS; - use strict; use warnings; use feature ':5.10'; -use Moose; -use MooseX::MethodAttributes; - +use MooseX::Declare; +use NDIRC::Dispatcher; -sub sendsms - : Help(.sendsms message | number has to be an international number, like +44234234562 for a uk number or +1234528234 for a north american number) - : ACL(irc_sendsms) - : Type(member) -{ - my ($self,$c,$msg) = @_; - my ($number,$message) = $msg =~ /^(\S+) (.+)$/ or die 'ARGS'; - my $dbh = $c->model; +command sendsms => { + help => q(.sendsms message | number has to be an international number, like +44234234562 for a uk number or +1234528234 for a north american number), + acl => q(irc_sendsms), + type => q(member), +}, class extends NDIRC::Command { + method execute($c,$msg) { + my ($number,$message) = $msg =~ /^(\S+) (.+)$/ or die 'ARGS'; + my $dbh = $c->model; - if (length $message > 140){ - $c->reply("Message is too long"); - return; - } - if ($number =~ /^\+([1-9]\d+)$/){ - $number = $1; - }else{ - my ($sms) = $dbh->selectrow_array(q{ -SELECT sms FROM users WHERE username ilike $1 - AND uid IN (SELECT uid FROM groupmembers WHERE gid = 'M') - },undef,$number); - $sms //= 'No number, or invalid user'; - if ($sms =~ /^\+([1-9]\d+)$/){ + if (length $message > 140){ + $c->reply("Message is too long"); + return; + } + if ($number =~ /^\+([1-9]\d+)$/){ $number = $1; }else{ - $c->reply("User $number has number '$sms' which is not a valid international number"); - return; + my ($sms) = $dbh->selectrow_array(q{ +SELECT sms FROM users WHERE username ilike $1 + AND uid IN (SELECT uid FROM groupmembers WHERE gid = 'M') + },undef,$number); + $sms //= 'No number, or invalid user'; + if ($sms =~ /^\+([1-9]\d+)$/){ + $number = $1; + }else{ + $c->reply("User $number has number '$sms' which is not a valid international number"); + return; + } } - } - my $sms = $dbh->prepare(q{ + my $sms = $dbh->prepare(q{ INSERT INTO sms (uid,number,message) VALUES($1,$2,$3) RETURNING id - }); - $sms->execute($c->uid,$number,$message); - my ($id) = $sms->fetchrow_array; - $c->reply("Message added to queue, you can see the status with: .smsstatus $id"); -} + }); + $sms->execute($c->uid,$number,$message); + my ($id) = $sms->fetchrow_array; + $c->reply("Message added to queue, you can see the status with: .smsstatus $id"); + } +}; -sub smsstatus - : Help(.smsstatus smsid | Gives information about a given sms) - : ACL(irc_smsstatus) - : Type(member) -{ - my ($self,$c,$msg) = @_; - my ($id) = $msg =~ /(\d+)/ or die 'ARGS'; - my $dbh = $c->model; +command smsstatus => { + help => q(.smsstatus smsid | Gives information about a given sms), + acl => q(irc_smsstatus), + type => q(member), +}, class extends NDIRC::Command { + method execute($c,$msg) { + my ($id) = $msg =~ /(\d+)/ or die 'ARGS'; + my $dbh = $c->model; - my $sms = $dbh->selectrow_hashref(q{ + my $sms = $dbh->selectrow_hashref(q{ SELECT s.id, u.username, s.number, s.status, s.cost ,s.time AT TIME ZONE 'GMT' AS time FROM sms s JOIN users u USING (uid) WHERE id = $1 - }, undef, $id); + }, undef, $id); - if($sms->{id}){ - $c->reply("SMS $sms->{id} was sent by $sms->{username} to $sms->{number} cost: $sms->{cost}. Last status at $sms->{time}: $sms->{status}"); - }else{ - $c->reply("Could not find any sms with id: $id"); + if($sms->{id}){ + $c->reply("SMS $sms->{id} was sent by $sms->{username} to $sms->{number} cost: $sms->{cost}. Last status at $sms->{time}: $sms->{status}"); + }else{ + $c->reply("Could not find any sms with id: $id"); + } } -} +}; 1; -- 2.39.2