use POE::Session;
use ND::DB;
-use AI::MegaHAL;
-
-has hal => (
- is => 'ro',
- isa => 'Object',
- lazy_build => 1,
-);
+use NDIRC::DiscordContext;
my ($tick,$stattick) = (0,0);
my $last_announcement = 0;
$seen->execute($address);
my $nickname = $irc->nick_name;
- if ($msg =~ /^$nickname: (.*)/i){
- my $text = $self->hal->do_reply($1);
- $irc->yield(privmsg => $channel, "$nick: $text");
- }elsif ($msg =~ /^(\S+): (.+)$/ && $self->disp->has_command('anon',$channel)){
- my $_ = $1;
+ if ($msg =~ /^(\S+): (.+)$/ && $self->disp->has_command('anon',$channel)){
+ local $_ = $1;
my $text = $2;
unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){
$msg = ".anon $_ $text";
}
}elsif ($self->parseCommand($msg,$irc,$nick,$address,$channel,$dbh)){
#Command parsed and run successfully
- }elsif($self->disp->has_command('teachbot',$channel)){
- $msg =~ s/^\S+:\s*//;
- $self->hal->learn($msg);
}
};
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}){
}
-sub _build_hal {
- my $hal = AI::MegaHAL->new('Path' => '.', 'Banner' => 0, 'Prompt' => 0, 'Wrap' => 0, 'AutoSave' => 1);
- return $hal;
-}
-
after sig_usr2 => sub {
my $self = shift;
- say 'Saving brain!';
- $self->hal->_cleanup;
};
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}.'#'.$author->{discriminator};
+ my $author_id = $author->{id};
+ return if $author->{'id'} eq $self->discord_id; # Ignore my own messages
+
+ my $channel = "D-".$channel_id;
+ if (exists $self->discord_channels->{$channel_id}) {
+ $channel = 'dm' if ($self->discord_channels->{$channel_id}->{type} == 1);
+ }
+
+ say localtime(time) . " - $channel_id $channel $author_name $author_id";
+
+ my ($p,$command,$args) = ($msg =~ /^([.!~])(\S+)(?: (.+))?/);
+
+
+ return 0 unless $self->disp->has_command($command,$channel);
+
+ say localtime(time) . " - $msg";
+
+ my $c = NDIRC::DiscordContext->new({
+ discord_id => $author_name,
+ channel_id => $channel_id,
+ channel => $channel,
+ disp => $self->disp,
+ model => DB(),
+ discord => $self->discord,
+ });
+
+ return $self->disp->run_command($c,$command,$args);
+
+};
+
1;