Bot::BasicBot::Pluggable::Module::Infobot - infobot clone redone in B::B::P.
Does infobot things - basically remembers and returns factoids. Will ask another infobot about factoids that it doesn't know about, if you want. Due to persistent heckling from the peanut gallery, does things pretty much exactly like the classic infobot, even when they're not necessarily that useful (for example, saying "Okay." rather than "OK, water is wet."). Further infobot backwards compatibility is available through additional packages such as Bot::BasicBot::Pluggable::Module::Foldoc.
The following examples assume you're running Infobot with its defaults settings, which require the bot to be addressed before learning factoids or answering queries. Modify these settings with the Vars below.
<user> bot: water is wet. <bot> user: okay. <user> bot: water? <bot> user: water is wet. <user> bot: water is also blue. <bot> user: okay. <user> bot: water? <bot> user: water is wet or blue. <user> bot: no, water is translucent. <bot> user: okay. <user> bot: water? <bot> user: water is translucent. <user> bot: forget water. <bot> user: I forgot about water. <user> bot: water? <bot> user: No clue. Sorry.
A fact that begins with "<reply>" will have the "<noun> is" stripped:
<user> bot: what happen is <reply>somebody set us up the bomb. <bot> user: okay. <user> bot: what happen? <bot> user: somebody set us up the bomb.
A fact that begins "<action>" will be emoted as a response:
<user> bot: be funny is <action>dances silly. <bot> user: okay. <user> bot: be funny? * bot dances silly.
Pipes ("|") indicate different possible answers, picked at random:
<user> bot: dice is one|two|three|four|five|six <bot> user: okay. <user> bot: dice? <bot> user: two. <user> bot: dice? <bot> user: four.
You can also use RSS feeds as a response:
<user> bot: jerakeen.org is <rss="http://jerakeen.org/rss">. <bot> user: okay. <user> bot: jerakeen.org? <bot> user: jerakeen.org is <item>; <item>; etc....
You can also ask the bot to learn a factoid from another bot, as follows:
<user> bot: ask bot2 about fact. <bot> user: asking bot2 about fact... <user> bot: fact? <bot> user: fact is very boring.
Finally, you can privmsg the bot to search for particular facts:
<user> search for options. <bot> I know about 'options indexes', 'charsetoptions override', etc....
Defaults to 3; the minimum length a factoid, or inquiry, must be before recognizing it.
Defaults to 25; the maximum length a factoid, or inquiry, can be before ignoring it.
Defaults to 20; the number of facts to return for "search for <term>" privmsg.
Defaults to 0; when enabled, the bot will answer factoids without being addressed.
Defaults to 0; when enabled, the bot will learn factoids without being addressed.
Defaults to 1; determines whether the bot requires a question mark before responding to a factoid. When enabled, the question mark is required (ie. "water?"). When disabled, the question mark is entirely optional (ie. "water" would also produce a response).
A comma-, space-, or pipe- separated list of words the bot should not learn or answer. This prevents such insanity as the learning of "where is the store?" and "how is your mother?" The default list of stopwords contains "here", "how", "it", "something", "that", "this", "what", "when", "where", "which", "who" and "why").
A pipe-separated list of responses the bot will randomly choose from when it doesn't know the answer to a question. The default list of response contains "Dunno.", "I give up.", "I have no idea.", "No clue. Sorry.", "Search me, bub.", and "Sorry, I don't know."
Defaults to 0.
Searching on large factoid lists is ... problematic.
If we request an RSS feed that takes a long time, we'll timeout and drop off.
"is also" doesn't work on <reply>s (ie. "<bot> cheetahs! or <reply>monkies.")
"is also" doesn't work on <action>s (same as the previous bug, hobo.)
The pipe syntax for random replies doesn't actually work. At all. Um.
We should probably make a "choose_random_response" function.
There needs to be a settable limit on how many RSS items to return.
"<bot>?" fails, due to removal of <bot> name from $mess->body.
"ask" syntax doesn't work in a private message.
The tab stops are set to 2, not 4. OHMYGOD.
If a "search" fails, the bot doesn't tell you.
"search" is case-sensitive.
If Title module is loaded, <rss> factoids don't work cos of told/fallback.
Tom Insam <email@example.com>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.