]> ruin.nu Git - NDIRC.git/blobdiff - Delling.pm
Initial Discord support
[NDIRC.git] / Delling.pm
index bf9bb9d665d8e17cb0a5ca44710a308e0c767de4..eb9c929ee9cc98095d6e5c2998ffd6238288323c 100644 (file)
@@ -28,6 +28,8 @@ extends 'NDIRC::Bot';
 use POE::Session;
 use ND::DB;
 
+use NDIRC::DiscordContext;
+
 my ($tick,$stattick) = (0,0);
 my $last_announcement = 0;
 
@@ -216,4 +218,38 @@ after _start => sub {
  ($tick,$stattick) = DB()->selectrow_array(q{SELECT tick(),max(tick) FROM planet_stats});
 };
 
+after discord_message_create => sub {
+       my $self = shift;
+       my $hash = shift;
+
+       my $author = $hash->{author};
+       my $msg = $hash->{content};
+       my $channel_id = $hash->{channel_id};
+       my $author_name = $author->{username};
+       my $author_id = $author->{id};
+       say localtime(time) . "$channel_id $author_name $author_id";
+       return if $author->{'id'} eq $self->discord_id; # Ignore my own messages
+
+       my $channel = "#testarlite";
+
+       my ($p,$command,$args) = ($msg =~ /^([.!~])(\S+)(?: (.+))?/);
+
+       say localtime(time) . " - $msg";
+
+       return 0 unless $self->disp->has_command($command,$channel);
+
+
+       my $c = NDIRC::DiscordContext->new({
+                       discord_id => $author_id,
+                       channel_id => $channel_id,
+                       channel => $channel,
+                       disp => $self->disp,
+                       model => DB(),
+                       discord => $self->discord,
+               });
+
+       return $self->disp->run_command($c,$command,$args);
+
+};
+
 1;