<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Obsolete Your Idols &#187; aiml</title>
	<atom:link href="http://blog.manjusri.org/tag/aiml/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.manjusri.org</link>
	<description>Book Reviews and Blather</description>
	<lastBuildDate>Mon, 21 Jun 2010 05:51:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Another Sixty Minutes Down</title>
		<link>http://blog.manjusri.org/2009/04/17/another-sixty-minutes-down/</link>
		<comments>http://blog.manjusri.org/2009/04/17/another-sixty-minutes-down/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 16:40:03 +0000</pubDate>
		<dc:creator>binder</dc:creator>
				<category><![CDATA[Nerdery]]></category>
		<category><![CDATA[aiml]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.manjusri.org/?p=169</guid>
		<description><![CDATA[And the bot is now both more and less annoying. Updated code below. #!/usr/bin/perl # mudbot by Shannon Prickett # connect a pandorabots.com chatbot with a particular TinyMUCK, Pegasus. package mudbot; use Modern::Perl; use Net::Telnet; use Net::AIML; use Expect; use vars qw{$mud_connection $mud_conversation $mud_host $mud_name $mud_pass $mud_port $mud_sent $robot}; $mud_host = 'ginka.armageddon.org'; $mud_port = '4242'; [...]]]></description>
			<content:encoded><![CDATA[<p>And the bot is now both more and less annoying.  Updated code below.</p>
<pre>
<code>
#!/usr/bin/perl

# mudbot by Shannon Prickett <stp@manjusri.org>
# connect a pandorabots.com chatbot with a particular TinyMUCK, Pegasus.

package mudbot;
use Modern::Perl;
use Net::Telnet;
use Net::AIML;
use Expect;

use vars qw{$mud_connection $mud_conversation $mud_host $mud_name $mud_pass $mud_port $mud_sent $robot};

$mud_host = 'ginka.armageddon.org';
$mud_port = '4242';
$mud_name = 'Somebot';
$mud_pass = 'YRMEME';

$robot = Net::AIML->new( botid => 'GETTHISNUMBERFROMPANDORABOTS' ); 

$mud_connection = new Net::Telnet( Host => $mud_host, Port => $mud_port )
    or die "Can't connect to $mud_host $mud_port: $!";

$mud_conversation = Expect->exp_init($mud_connection);

$mud_conversation->log_group(1);
$mud_conversation->log_user(1);
$mud_conversation->log_stdout(1);
$mud_conversation->log_file("/home/binder/src/mb/logfile", 'w');

$mud_conversation->expect(30,   '-re', qr{connect       # pretty standard MUCK greeting
                                    \s+
                                    guest
                                    \s+
                                    guest}msx,
                                sub {
                                    my $fh = shift;
                                    $fh->send("connect $mud_name $mud_pass\n");
                                    });

$mud_conversation->expect(30, 'Vote to ban the MisInformation SuperHighway',
                            sub {
                                my $fh = shift;
                                $fh->send("\@desc me=Just a Perl toy of Binder's.\n");
                                });

$mud_conversation->expect(30, 'Description set',
                            sub {
                                my $fh = shift;
                                $fh->send("home\nout\nvillage\n");
                                });

TALKLOOP: while (1) {
    print "TALKLOOP start\n";

    my $being_quiet = 0;
    my $atme = 0;
    my $prematch = '';
    my $postmatch = '';

    my $index = $mud_conversation->expect( 60, '-re', qr{ says, "} );  

    $prematch = $mud_conversation->before();
    $postmatch = $mud_conversation->after();
    $mud_conversation->clear_accum();

    next TALKLOOP unless $prematch;

    $postmatch =~ s{\"}{};
    print "$prematch said $postmatch\n";

    if ($postmatch =~ qr{$mud_name}){
        print "saw my name\n";
        $postmatch =~ s{$mud_name}{Persephone}g;
        $atme = 1;
    }

    if ( ($atme) &#038;&#038; ($postmatch =~ qr{QUIT}) ) {
        $mud_conversation->send("QUIT\n");
        exit;
    }

    if ( ($atme) &#038;&#038; ($postmatch =~ qr{be quiet}) ) {
        if ($being_quiet) {
            $mud_conversation->send("say Maximum verbosity achieved.\n");
            $being_quiet = 0;
        } else
        {
            $mud_conversation->send("say Shutting up now.\n");
            $being_quiet = 1;
        }
    }

    if ($being_quiet) {
        next TALKLOOP;
    }

    if ($atme) {
        my $response = $robot->tell($postmatch);
        print "response: $response\n";
        $mud_conversation->send("say $response\n");
    }
    else {
        if ( !$being_quiet &#038;&#038; (rand() > .75) ) {
            print "jumping in\n";
            my $response = $robot->tell($postmatch);
            print "response: $response\n";
            $mud_conversation->send("say $response\n");
        }
    }
}
continue {
    $mud_conversation->clear_accum();
}
</code>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.manjusri.org/2009/04/17/another-sixty-minutes-down/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
