]> ruin.nu Git - NDIRC.git/commitdiff
Add megahal support to delling
authorMichael Andreen <harv@ruin.nu>
Thu, 20 Aug 2009 22:42:42 +0000 (00:42 +0200)
committerMichael Andreen <harv@ruin.nu>
Thu, 20 Aug 2009 22:42:42 +0000 (00:42 +0200)
Bot.pm
Delling.pm

diff --git a/Bot.pm b/Bot.pm
index c90f8339d0d061e6009c10c5dd88ac6729ed8860..1200424a94cfba04219b6415cc1dfd685ce222e2 100644 (file)
--- a/Bot.pm
+++ b/Bot.pm
@@ -128,7 +128,7 @@ sub _build_disp {
                $disp->load(@commands);
        }
 
                $disp->load(@commands);
        }
 
-       my $channels = new IO::File 'channels';
+       my $channels = new IO::File 'channels' or die $!;;
        while (<$channels>){
                my ($chan, @types) = split /\s+/;
                say "$chan - @types";
        while (<$channels>){
                my ($chan, @types) = split /\s+/;
                say "$chan - @types";
index e08f7910b98c8d4daf90a9c66acd616a2ae1455f..224a6572650bfccd2109e34016d87a8d96ece066 100644 (file)
@@ -28,6 +28,14 @@ extends 'NDIRC::Bot';
 use POE::Session;
 use ND::DB;
 
 use POE::Session;
 use ND::DB;
 
+use AI::MegaHAL;
+
+has hal => (
+       is => 'ro',
+       isa => 'Object',
+       lazy_build => 1,
+);
+
 sub irc_public {
        my ($self,$sender, $who, $where, $msg) = @_[OBJECT,SENDER, ARG0 .. ARG2];
        my ($nick,$username,$address) = ( split /[!@]/, $who );
 sub irc_public {
        my ($self,$sender, $who, $where, $msg) = @_[OBJECT,SENDER, ARG0 .. ARG2];
        my ($nick,$username,$address) = ( split /[!@]/, $who );
@@ -40,7 +48,11 @@ sub irc_public {
        my $seen = $dbh->prepare_cached(q{UPDATE users SET laston = NOW() WHERE hostmask = ?});
        $seen->execute($address);
 
        my $seen = $dbh->prepare_cached(q{UPDATE users SET laston = NOW() WHERE hostmask = ?});
        $seen->execute($address);
 
-       if ($msg =~ /^(\S+): (.+)$/ && $self->disp->has_command('anon',$channel)){
+       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;
                my $text = $2;
                unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){
                my $_ = $1;
                my $text = $2;
                unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){
@@ -53,7 +65,6 @@ sub irc_public {
        }
 }
 
        }
 }
 
-
 sub irc_msg {
        my ($self,$sender, $who, $where, $msg) = @_[OBJECT,SENDER, ARG0 .. ARG2];
        my ($nick,$username,$address) = ( split /[!@]/, $who );
 sub irc_msg {
        my ($self,$sender, $who, $where, $msg) = @_[OBJECT,SENDER, ARG0 .. ARG2];
        my ($nick,$username,$address) = ( split /[!@]/, $who );
@@ -125,4 +136,15 @@ sub refresh {
        return;
 }
 
        return;
 }
 
+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;
+};
+
 1;
 1;