Eggtimer

The eggtimer bot (or colloquially eggy) was originally written as a mIRC-script by amb. When something with "egg" was said in the channel, eggy would read a line from quotes.txt and say it. Eggy had, at that time, functions, starting with quote_ - quote_add to add quotes, quote_num to get number of quotes, quote_get to get a certain quote by ID, and others. Some would only be available to the creator, amb, but most functionality was available to everyone.

Then, one day, Mortal asked amb for the quotes.txt. He originally had no intent to use it for any programmatical purpose, but then, he wanted to use it to make a bot, not constricted by the evil proprietaryth of mIRC.

The choice of language fell on PHP. Mortal went around, looking for existing IRC sockets, and found one - k.Bot. He modified it, and gave it support for all kinds of fancy things.

Now, eggtimer is a part-time chatbot (Mortal runs it on his desktop computer, ain't got no fancy server box), serving many purposes.

Functionality
Functionality is added to eggtimer through modules. They're included when needed - the module.command.*.php files are called when the bot is mentioned in a function-like way. Functions can be called in a lot of ways:


 * 1) eggtimer, function args.
 * 2) function args, eggtimer.
 * 3) oh hey eggy, function args.
 * 4) other variations using various supported interjections.

A quick dump of functions:

eggtimer, help Please enter help  for more info. These manual pages exist: issuingcommands. These modules exist: aaaaa, addquote, auth, bc, draw, eval, find, fortune, gameoflife, google, gtfo, help, highlight, join, lastquote, loggrep, make, md5, nick, part, php, pwned, quotenum, rot13, say, sentenceparser, set, setsetting, stfu, tell, template, thetime, thx, upload, uptime, voice, when, whoami, whoareyou.

The "manpages" are simply manpage.*.txt files which can be read. The other commands are the names of the module.command.*.php files - for some of them, additional help is available, for example:

eggy, help find To perform a new search, "find [OR/AND/NOT] ". You can only search for alpha-numeric characters, and the search is case-insensitive. After the search is performed, use the function "['show' ['me']] ['search'] 'result' ['no'|'#'|'number'] ".

Of course, eggy has kept his quote-functionality as well.

 NO EGGY Did somebody call for a really hairy plumber?  O RLY EGGY shutupshutshutupshutup SHUT THE FUCK UP