# 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 <username or number> 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 <username or number> 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 <b>$sms->{id}</b> was sent by <b>$sms->{username}</b> to <b>$sms->{number}</b> cost: <b>$sms->{cost}</b>. Last status at <b>$sms->{time}</b>: $sms->{status}");
- }else{
- $c->reply("Could not find any sms with id: $id");
+ if($sms->{id}){
+ $c->reply("SMS <b>$sms->{id}</b> was sent by <b>$sms->{username}</b> to <b>$sms->{number}</b> cost: <b>$sms->{cost}</b>. Last status at <b>$sms->{time}</b>: $sms->{status}");
+ }else{
+ $c->reply("Could not find any sms with id: $id");
+ }
}
-}
+};
1;