]> ruin.nu Git - NDIRC.git/blobdiff - Delling.pm
Initial Discord support
[NDIRC.git] / Delling.pm
index e6ce4e5e328b8a2042ae72c6b66b61e64246f7e5..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;
 
@@ -45,7 +47,7 @@ after irc_public => sub {
 
        my $nickname = $irc->nick_name;
        if ($msg =~ /^(\S+): (.+)$/ && $self->disp->has_command('anon',$channel)){
-               my $_ = $1;
+               local $_ = $1;
                my $text = $2;
                unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){
                        $msg = ".anon $_ $text";
@@ -112,7 +114,7 @@ SELECT uid,pid,hostmask,password
 FROM users u WHERE hostmask = ?
                }, undef, $address);
                if ($user){
-                       if ($user->{password} eq ''){
+                       unless ($user->{password}) {
                                $irc->yield(privmsg => $disp->targets->{members}, "$nick: Get a new random password with /msg delling !getpass . If you don't know your username, then you can get it with .points");
                        }
                        if ($tick > 12 && not defined $user->{pid}){
@@ -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;