diff --git a/PlayBot.pl b/PlayBot.pl index 64d0a5fa562d5666d626e34684317d76331e395e..81e83d4075b90ab97e079a2c52e8658d5ea9d7e0 100755 --- a/PlayBot.pl +++ b/PlayBot.pl @@ -59,7 +59,8 @@ POE::Session->create( irc_public => \&on_speak, irc_msg => \&on_query, irc_notice => \&on_notice, - _flux => \&flux + _flux => \&flux, + _later => \&later }, ); @@ -88,6 +89,20 @@ sub flux } +sub later +{ + my ($nick, $id) = @_[ARG0,ARG1]; + + my $sth = $dbh->prepare_cached('SELECT url FROM playbot WHERE id = ?'); + $log->error("Couldn't prepare querie; aborting") unless (defined $sth); + + $sth->execute($id) + or $log->error("Couldn't finish transaction: " . $dbh->errstr); + + $irc->yield(privmsg => $nick => $sth->fetch->[0]) if ($sth->rows); +} + + sub cycle { my ($arg) = @_; @@ -227,7 +242,7 @@ sub on_speak eval { %content = zippy($url) }; $site = 'zippyshare'; } - elsif ($msg =~ /!fav ([0-9]+)/) { + elsif ($msg =~ /^!fav ([0-9]+)/) { my $sth = $dbh->prepare_cached('SELECT user FROM playbot_codes WHERE nick = ?'); $sth->execute($nick) or $log->error("Couldn't finish transaction: " . $dbh->errstr); @@ -243,6 +258,14 @@ sub on_speak return; } + elsif ($msg =~ /^!later( ([0-9]*)( in ([0-9]*)(h|m)?)?)?/) { + my ($id, $time, $unit) = ($2, $4, $5); + + $time *= ($unit eq 'm') ? 60 : 3600; + $kernel->delay_set('_later', 3, $nick, $id); + + return; + } else { return; }