- Date: Thu, 16 Dec 1999 10:07:23 -0500
- From: Kevin Lenzo <lenzo@cs.cmu.edu>
- Subject: status of 0.50 (1.0? 0.99?)
Hi folks,
I just wanted to let you know about the things i've been
workin on a little bit for 0.50 (possibly 1.0). I'd
like to get a prototype out to you shortly.
1) everything runs under use strict; !
2) everything is a module (see list at end)
3) readline support, CPAN-like shell
[lenzo@haven i050c]$ perl -MInfobot -e shell
[ 1] Session start at Thu Dec 16 09:45:39 1999 [945355539]
[ 2] Modules +Weather +W3Search +Babelfish +Nickometer +Convert +Exchange +Extras +Purldoc
+METAR +Math +Whois +Nslookup +ModuleMgr +Zippy +Example +Excuse +Insult (17)
[ 3] This is Infobot 0.50 [Quixote]
>
4) command-line execution.
[lenzo@haven i050c]$ perl -MInfobot -e 'e("x is y")'
okay
[lenzo@haven i050c]$ perl -MInfobot -e 'e("x")'
x is, like, y
5) command-line switches for raw and raw_quote for mail
filtering, etc. works on files or on STDIO
[lenzo@haven i050c]$ perl -MInfobot -e 'raw'
hello
bonjour, Player
what is x
it has been said that x is bar
[lenzo@haven i050c]$ cat > foo.file
hello
x is foo
no, x is bar
x
[lenzo@haven i050c]$ perl -MInfobot -e 'raw_quote("foo.file")'
> hello
hey, Player
> x is foo
...but x is sdsad...
> no, x is bar
OK
> x
x is bar
6) Infobot::Modules degrade gracefully and provide
diagnostic info when they fail. Bot still works
without them. All modules are derived from
the class Infobot::Module, which does most of
the heavy work. Modules can define a regex
or define a matches() operator. Modules can be
turned on or off at run-time.
[ 1] Session start at Thu Dec 16 10:02:04 1999 [945356524]
[ 2] Module Weather **** NOT OK
[ 3] ./Infobot/Module/Weather.pm did not return a true
value at Infobot.pm line 278, <FH> chunk 52.
[ 4] Modules +W3Search +Babelfish +Nickometer +Convert
+Exchange +Extras +Purldoc +METAR +Math +Whois
+Nslookup +ModuleMgr +Zippy +Example +Excuse
+Insult (16)
[ 5] This is Infobot 0.50 [Quixote]
vs a good run (with more verbosity -- 3 is the default).
[lenzo@haven i050c]$ perl -MInfobot -e 'shell(verbosity=>4)'
[ 1] Session start at Thu Dec 16 10:04:03 1999 [945356643]
[ 2] db are -> ./data/i-Quixote-are [8 entries]
[ 3] db seen -> ./data/i-Quixote-seen [3 entries]
[ 4] db karma -> ./data/i-Quixote-karma [0 entries]
[ 5] db is -> ./data/i-Quixote-is [14 entries]
[ 6] Channel file ./conf/infobot.channels loaded (10 lines)
[ 7] Module Babelfish 0.01 OK
[ 8] Module METAR 0.01 OK
[ 9] Module ModuleMgr 0.01 OK
[ 10] Module W3Search 0.01 OK
[ 11] Module Weather 0.01 OK
[ 12] Module Zippy 0.01 OK
[ 13] Module Extras 0.01 OK
[ 14] Module Example 0.01 OK
[ 15] Module Whois 0.01 OK
[ 16] Module Math 0.01 OK
[ 17] Module Exchange 0.01 OK
[ 18] Module Nslookup 0.01 OK
[ 19] Module Convert 0.01 OK
[ 20] Module Excuse 0.01 OK
[ 21] Module Insult 0.01 OK
[ 22] Module Nickometer 1.02 OK
[ 23] Module Purldoc 0.01 OK
[ 24] Modules +Weather +W3Search +Babelfish +Nickometer +Convert +Exchange +Extras +Purldoc +METAR
+Math +Whois +Nslookup +ModuleMgr +Zippy +Example +Excuse +Insult (17)
[ 25] Term::ReadLine support enabled
[ 26] This is Infobot 0.50 [Quixote]
7) A first attempt at internationalization with
Infobot::Language and Infobot::Language::English.
This actually lets us do a lot more -- it can
let us do things like use the 'rude' variation
for someone.
8) fork/don't fork is a bot-level option. modules
specify their "weight" and a bot policy decides
how to process them.
9) all messages are sent using an Infobot::Message
object that is traceable, and so processing flow
can be analyzed by watching the message-passing.
10) a start at at least stubbing out POD docs for
everything.
OK, now things that need to be done:
1) I ripped out the IRC handling to focus on the
basic workings of it, but the hooks are still
there. Either POE::Component::IRC will have to
be hooked in here, and user verification extended
to handle the new multiprotocol situation.
2) The DBs need some work. I'd like the dbs to be
a separate process what other interfaces (like
the Natural Language -> db query interface) can
all use, allowing 1 db to be shared by many faces.
3) Set up a SocketFactory to handle random clients;
POE looks good for the IRC + SocketFactory.
The bot actually does not require POE by itself,
but will for the full blown version
4) More work on Entity.pm, resolution of names
across protocols, and access control.
5) Tests for all modules.
6) Makefile.PL and Infobot::Bundle on CPAN.
7) More documentation.
8) More.
These are the code modules so far:
./Infobot.pm
./Infobot/DB.pm
./Infobot/RDF.pm
./Infobot/Module/Babelfish.pm
./Infobot/Module/METAR.pm
./Infobot/Module/ModuleMgr.pm
./Infobot/Module/W3Search.pm
./Infobot/Module/Weather.pm
./Infobot/Module/Zippy.pm
./Infobot/Module/Extras.pm
./Infobot/Module/Example.pm
./Infobot/Module/Whois.pm
./Infobot/Module/Math.pm
./Infobot/Module/Exchange.pm
./Infobot/Module/Nslookup.pm
./Infobot/Module/Convert.pm
./Infobot/Module/Excuse.pm
./Infobot/Module/Insult.pm
./Infobot/Module/Nickometer.pm
./Infobot/Module/Purldoc.pm
./Infobot/Question.pm
./Infobot/Statement.pm
./Infobot/Process.pm
./Infobot/Console.pm
./Infobot/Interbot.pm
./Infobot/Message.pm
./Infobot/Entity.pm
./Infobot/Module.pm
./Infobot/_hold/Karma.pm
./Infobot/_hold/Seen.pm
./Infobot/_hold/Search.pm
./Infobot/_hold/Speller.pm
./Infobot/_hold/Traceroute.pm
./Infobot/_hold/Help.pm
./Infobot/_hold/Tell.pm
./Infobot/Language/English.pm
./Infobot/Language.pm
kevin
lenzo@cs.cmu.edu