* Added QuoteGrabs module which allows people to grab interesting quotes from other people and store them in the bot for later retrieval (also optionally have the bot randomly snarf quotes) * Renamed URLSnarfer plugin to just URL. * Moved TwistedCommands plugin to sandbox. * Renamed Notes plugin to just Note. * Renamed FunCommands plugin to just Fun. * Removed the Moobot plugin (either moved the commands to the Fun plugin or dropped them entirely). * Added Movies plugin which searches IMDb (www.imdb.com) for movie info. * Added Ebay plugin for snarfing eBay URLs as well as getting info on certain auction numbers. * Added Dunno plugin as an optional replacement for the boring 'no such command' response. * Added MoobotFactoids plugin for moobot-style factoids (which are meant to mimic blootbot-style factoids). * Removed all example strings from plugins. To be replaced with an automated process later. * Command names in a plugin no longer have to make sure that they are unique and don't conflict with commands in another plugin. Commands that are ambiguous are greeted with an error message and instructions to the user on how to disambiguate the command. So any command that used to have the plugin name in it or some shortened form of the plugin name probably got changed, as it was done across all plugins I'm not going to include each name change like this. * Made aliases persistent across reloads/bot restarts. * Fixed alias recursion detection from triggering on non-recursive aliases. * TODO: document all the changes in makeNewAlias * Reworked the admin capability checking in BadWords.py to make it require admin capability for any command in the plugin instead of checking for that capability in each command in the plugin. * Converted several plugins to the new Configurable plugin type (ChannelDB, Dict, Enforcer, Gameknot, Google, Python, Relay) * Switched ChannelDB databases to use integer user ids instead of text nicks. * Added monitoring of occurrences of certain words on a per-user basis, adding 2 new databases and several new commands ("wordstats", in ChannelDB). * Moved karma out of ChannelDB and into its own plugin. * ChannelLogger.py: TODO: document what these changes are * Removed "dictserver" command in favor of using the Configurable framework with the Dict plugin instead. * Added a "change" command to change factoid values in the Factoids plugin. * Added another greet command to the Friendly plugin. * Moved uptime-related commands to from FunDB to the Status plugin. * Added substitutions for 'me' and 'my' in insult/praise/lart. * Changed {excuse,lart,praise} to allow accessing {excuse,lart,praise}s by id. * Removed the "googlesite" function. * Fixed up the google groups snarfer to handle more display styles. * Switched freshmeat searches from using regexps to using XML parsing to obtain the needed info. * Made all multiline geekquotes into one line, and remove the option of choosing a multiline geekquote. * Added an --id switch to geekquote to pick a specific geekquote. * Renamed "internic" command to "whois". * Changed most commands in News to require the 'news' capability. * Actually implemented the 'change' and 'old' commands for News. * Added ASPN Python Cookbook URL snarfer/parser. * Moved quotegrabs out of Quotes to their own module. * Made relay names output sorted by mode and then alphabetically. * Removed 'relaycolor' command in favor of Configurable framework. * Added total memory usage to 'cpustats' output for several *nix platforms. * Removed the total percentage of CPU time from 'cpustats'. * Made sure that shuffling the topic actually shuffles the topic. * Made topic numbering 1-indexed instead of 0-indexed (but -1 is still the last topic and -2 next to last and so on). * Fixed a bug where special characters would lock up the spell command (now accepts only alpha characters to being a word). * Changed spell from keeping an open fd for the life of the plugin to opening and closing fd's on the fly (if the fd got closed unexpectedly, the spell command would block). * Added Bugzilla module * Changed the name of the "bug" command in the AdminCommands plugin to "reportbug" instead. * Added QUIT stat-keeping to ChannelDB. This added another column to the database; you'll need to add a 'quits' column to both user_stats and channel_stats. Good luck. * Removed the OwnerCommands.say command; it wasn't useful enough, and is so easily written that anyone can have it back if they want it. * Changed OwnerCommands.load (and loadPluginModule) to be case-insensitive, so "load funcommands" works just as well as "load FunCommands". 2003-10-12 Jeremy Fincher * Version 0.73.1! * Fixed a bug in Math.{calc,rpn} where certain functions ("degrees" in particular) that didn't like complex arguments would fail on numbers on which they shouldn't. * Added an optional "key" argument to ChannelCommands.cycle. * Fixed bolding in supybot-wizard.py. * Fixed handling of the secure flag by ircdb.IrcUser.setAuth; previously it didn't prevent someone with an unmatched hostmask from identifying. * Fixed imports in the DCC plugin. * Fixed a bug where the bot would not reply to nick-addressed messages on a channel if his nick wasn't entirely lowercased. * Fixed the Relay plugin to relay topic changes; an oversight not caught earlier because supybot has for a long time managed our topics. * Fixed a bug in the Services plugin where the bot would ghost himself if his nick didn't match in case the nick given. * Added the ability for PrivmsgCommandAndRegexp to have regexps that are called *after* callbacks.addressed has been called on the message -- see ChannelDB.{increase,decrease}Karma for an example. * Fixed bug in supybot-wizard.py where plugins without configure functions would raise an uncaught exception. * Fixed debincoming to work since the removal of baseplugin; it was missing an import. * Fixed MiscCommands.doPrivmsg to send an IrcObjectProxyRegexp to the replyWhenNotCommand function. * Fixed debversion to display the correct output when no matching packages were found. * Fixed ChannelDB to import conf; karma didn't work otherwise. * Fixed a bug in the Enforcer plugin that would cause the bot to ban everyone from the channel whenever ChanServ deopped someone. * Changed the "whois" command in the Network plugin to "internic" instead. 2003-10-05 Jeremy Fincher * Version 0.73.0! * Added the News plugin, news handling for channels. * Changed the initial character of anti capabilities to '-' instead of '!'. '!' can be the initial character in a channel name, and so any command using getChannel and accepting a capability as its first argument (several in ChannelCommands) will have difficulties (the channel then *must* be specified since getChannel will consider !capability to be a channel name). Note that this means you'll need to either remove and re-create or edit your config files to change ! to - in capabilities. * Removed the "cvsup" command; it's been useless since we had a global install, and can only serve to confuse. * Added a "private" command to MiscCommands to allow users to specify that a response should be made in private. * Added a "secure" flag to user database records that *requires* that one of the user's hostmasks match if the user is to be recognized. This flag may be set with the "setsecure" command. * Added a convert command to the Math plugin. More conversions are necessary, if anyone's interested in doing it. The available units are available via the "units" command. * Fixed the pydoc command to allow access to standard Python modules that are shared libraries rather than pure Python code. * Added a "Python" plugin and moved FunCommands.{pydoc,zen} to it. * Fixed the supybot- scripts to use optparse so they now accept many command line options (but most importantly, the --help option :)) * Added a debincoming command to the Debian plugin; it searches the available packages at http://incoming.debian.org/ * Moved the "bug" command from MiscCommands to AdminCommands in order to prevent possible abuse. * Changed ChannelDB.seen to default to using nicks; a --user option can be passed to use the old behavior. Note that this means you'll have to update your ChannelDB database; use this SQL statement to do so: CREATE TABLE nick_seen ( name TEXT UNIQUE ON CONFLICT REPLACE, last_seen TIMESTAMP, last_msg TEXT );