* Added ADVANCED_PLUGIN_CONFIG, ADVANCED_PLUGIN_TESTING, CAPABILITIES,
USING_UTILS, USING_WRAP, STYLE, and PLUGIN_TUTORIAL docs.
* Updated the Services plugin such that it will not spam GHOST
commands faster than once every 60 seconds (or as set by
supybot.plugins.Services.ghostDelay).
* Updated the Seen plugin so that performing seen with a leading
wildcard will not result in duplicate nicks in the response.
* Updated RSS to handle the feed's advertised character encoding in
more of its commands.
* Updated "Channel.ban list" to show how long until the ban expires.
* Fixed the bug where addressed karma adjustments would cause the bot
to crash.
* Fixed Alias.lock and Alias.unlock to work properly now that the
alias functions are no longer attributes of the Alias plugin.
* Fixed a Windows-specific NameError in log.py.
* Fixed Config.help to actually perform the string substitution of the
given config name.
* Replace Twisted with Socket as the default network driver.
* Added an --ssl option to Network.connect.
* Added a question about SSL network connections in supybot-wizard.
* Added recognition of UnrealIRCd's protected users and channelowners
as ops.
* Updated URL.last to perform a case-insensitive search.
* Updated the Author class so it performs the email munging. This
prevents munging occurring for punctuation in a person's name.
* Updated ircutils' color handling to specify a default foreground
color of white if only a background color is specified.
* Updated registry.StringWithSpaceOnRight to accept the empty string.
* Updated registry.StringSurroundedBySpaces to be a single space if
given an empty string.
* Updated utils.str.format to recognize digits before the '.' in %f
formatting.
* Stop explicitly setting a umask. Instead we'll just obey the user's
umask.
2005-09-01 James Vega <jamessansupybot.com>
* Version 0.83.1!
* Fixed a bug in Owner where plugins would not be automatically loaded
unless the bot was connected to more than one network.
2005-08-30 James Vega <jamessansupybot.com>
* Version 0.83.0!
* Updated the Services plugin to realize it is identified when
NickServ says that the bot is already identified.
* Updated Network.whois so that +s channels are only returned when in
that channel.
* Updated RSS.info to retrieve the proper information from
rssparser's results.
* Updated the RSS plugin to encode the headlines in the proper
charset, if the feed specifies an encoding.
* Fixed a bug in Todo.todo when negative priorities are used.
* Fixed a bug in Web where the entire title was not correctly parsed
from the web page.
* Fixed a bug in Web where the title was correctly parsed, but a later
parsing problem caused the command to not reply with the title.
* Fixed a bug in Misc.last where the last message in a channel was
skipped when the command was not called in that channel.
* Fixed a bug in Channel.ban remove and Channel.ignore remove when
there were no bans or ignores.
* Fixed a bug in User.hostmask list when there are no registered
hostmasks.
* Changed the prefixName keyword argument to prefixNick.
* Updated the socket handling to properly detect when an IPV6
connection should be made.
* Updated irclib to handle IRCds (like IRCNet) which send a
MAXLIST-style value for the MAXBAN 005 key.
* Updated the plugin loading to happen during __init__ instead of when
receiving the 001 message. This allows the bot to connect to networks
that require a CTCP response on connect.
* Updated the SIGHUP handler to reload the ignoresdb.
* Fixed a bug in ircutils.isNick so that it no longer allows nicks to
start with a hyphen.
* Fixed a bug in the first spec which would cause an error to be
raised if the first converter failed.
2005-05-30 James Vega <jamessansupybot.com>
* Version 0.83.0rc3!
* Updated Topic such that it can undo the first topic change performed
in a channel.
* Removed -O and -OO options for scripts/supybot.
* Removed password hashing options for scripts/supybot-adduser.
* Fixed a bug where RSS.remove wasn't removing the feed from
conf.supybot.plugins.RSS.feeds.
* Fixed a bug in Topic.set where setting the first topic would change
the entire topic.
* Fixed an AttributeError in the Ctcp plugin.
* Fixed a problem where Supybot would attempt to connect to a network
it was already connected to.
* Fixed a problem where a command with the same name as its plugin had
to be invoked as "plugin command".
* Fixed an exception when irc.reply was called with a non-string
argument.
* Fixed an ImportError in Twisted driver when OpenSSL wasn't
available.
* Updated Socket driver to fix some longstanding issues.
* Added supybot.drivers.maxReconnectWait, which determines the maximum
amount of time the bot will wait before attempting to reconnect to an
IRC server.
* Added utils.python.Synchronized metaclass to ensure synchronized
access to class methods.
* Moved utils.changeFunctionName to utils.python.changeFunctionName.
2005-05-12 James Vega <jamessansupybot.com>
* Version 0.83.0rc2!
* Added News, Unix, and Insult plugins which were missing in the
previous RC.
* Updated Misc.list to show the full configuration variable name when
the plugin has no commands.
* Fixed an HtmlParseError exception in Web's title command and
titleSnarfer.
* Fixed an ImportError exception when calling Todo.todo with no
arguments.
* Fixed a bug where Channel.{enable,disable} would throw an exception
if only a command names was specified.
* Added utils.str.ordinal (patch from genjamin AT gmail DOT com).
2005-05-02 James Vega <jamessansupybot.com>
* Version 0.83.0rc1!
* Added supybot-botchk script. This script can be run from a
cron job to make sure your Supybot restarts when the computer it
runs on is rebooted, and can make sure the bot restarts if it
ever crashes (which it shouldn't). It also allows restarting the
bot without shelling out to the box it runs on; if you quit the
bot, it'll automatically restart.
* Added supybot-plugin-doc script, which generates documentation for a
plugin.
* Added SSL server support for the Twisted driver.
* Added Web plugin, which contains most of the commands that were
in the (formerly included) Http plugin.
* Added Reply plugin, which contains several commands that were
in the Misc and Utilities plugins.
* Added Games plugin, which contains several commands that were
in the (formerly included) Fun plugin.
* Added String plugin, which contains several commands that were
also in the formerly included Fun plugin.
* Added Topic.fit, which adds a new topic to the end of the
channel topic, removing topics at the beginning as necessary to
squeeze the new topic in.
* Added Seen.any, which reports the last time a person was seen
at all, rather than just the last time a person said something in
a PRIVMSG.
* Added Web.fetch, which replies with the text of the given URL.
This might be useful in combination with Utilities.re command,
for pseudo-parsing URLs within aliases.
* Added Note.next to retrieve the next unread note (patch from Sune
Foldager. Come back, Sune!).
* Updated User.capabilities always to respond in private (for
owner users) and to prevent non-owner-users from retrieving other
user's capabilities.
* Updated Relay.{join,part} so they require the admin capability.
* Updated Plugin.contributors to pull author/contributor information
from the plugin in addition to the authors already hard-coded in
Supybot.
* Added conf.supybot.protocols.irc.queuing.rateLimit.join to throttle
how fast Supybot joins channels.
* Added conf.supybot.plugins.Herald.requireCapability, which specifies
the capability a user needs to affect another user's herald.
* Added conf.supybot.plugins.ShrinkUrl.bold, which specifies whether
the plugin should use bold in its responses.
* Renamed conf.supybot.plugins.Herald.throttleTime to
conf.supybot.plugins.Herald.throttle.
* Renamed conf.supybot.plugins.Herald.throttleTimeAfterPart to
conf.supybot.plugins.Herald.throttle.afterPart.
* Renamed the general log file (misc.log) to messages.log.
* Renamed Google.metagoogle to Google.meta.
* Renamed conf.supybot.protocols.irc.queueDuplicateMessages to
conf.supybot.protocols.irc.queuing.duplicates.
* Updated Alias.add so that alias names can coincide with plugin names.
* Added netsplit throttling to Herald. Now if only we could do
that to Relay...
* Changed Todo's db format to a single flatfile db per user.
* Fixed a bug where the nickInChannel converter would add the channel
to the args list.
* Fixed some exceptions in RSS.
* Fixed a problem with RSS not properly escaping feed names.
* Fixed supybot.utils.str parsing of regular expression separators
other than / (patch from gcbirzan).
* Fixed Owner.enable so that commands can actually be re-enabled.
* Fixed Bug 1190350, incorrect extraction of a website's title.
* Added various functions to supybot.utils.file (touch, writeLine,
readLines, chunks).
* Renamed the 'regexps' attribute in callbacks.PluginRegexp
(formerly callbacks.PrivmsgCommandAndRegexp) to unaddressedRegexps
to callbacks.PluginRegexp so as to complement addressedRegexps.
* Removed the extra argument to utils.str.pluralize which specified
whether or not to pluralize the string.
* Changed the order of the arguments to utils.str.nItems.
2005-01-16 James Vega <jamessansupybot.com>
* Version 0.80.0!
* Updated Babelfish to include Dutch, Greek, Russian, and traditional
Chinese as supported languages.
* Updated RSS.rss to obey supybot.reply.oneToOne.
* Updated registry.py to specify which registry value has an improper
docstring.
* Fixed a bug in Ebay.auction, the "Current bid" regexp needed to be
updated.
2005-01-12 James Vega <jamessansupybot.com>
* Version 0.80.0rc3!
* Updated the Geekquote snarfer to snarf qdb.us' links.
* Fixed a bug in Infobot, mis-typed registry value.
* Fixed Network.connect to actually use the supplied password.
* Fixed supybot.databases.plugins.channelSpecific.getChannelLink()
to return the proper channel link instead of returning the given
channel.
2005-01-11 James Vega <jamessansupybot.com>
* Version 0.80.0rc2!
* Implemented Observer.remove, which disables and removes the observer
from all channels.
* Added supybot.databases.channelSpecific.link.allow to determine
whether a channel allows other channels to link to its database.
* Added supybot.plugins.BadWords.stripFormatting, which determines
whether the bot will strip any formatting before filtering bad words.
* Added supybot.plugins.Markov.ignoreBotCommands, which determines
whether the Markov plugin will learn commands given to the bot.
* Added a Network.driver command, which reports the current driver
being used.
* Added an Infobot.update command, which allows the user to import an
existing Infobot factpack.
* Added a Topic.replace command, which replaces the given topic with a
new topic.
* Added a Note.search command, which allows the user to search for
notes they have sent or received.
* Added supybot.databases.channelSpecific.getChannelLink(), which
returns a channel based on how channels link to each other.
* Added supybot.plugins.Channel.banmask which specifies the default
method of generating Channel.kban's banmask.
* Renamed supybot.databases.plugins.channelSpecific.channel to
supybot.databases.plugins.channelSpecific.link.
* Updated RSS.announce such that it adds the arguments to the current
list of announced feeds instead of overwriting the current list.
* Update the Google groupsSnarfer to work with Google's beta groups
website.
* Updated Network.disconnect to announce that the disconnection
attempt has started.
* Updated Debian.bug to handle website changes.
* Updated Observer.{add,remove} to require the Admin capability.
* Updated Infobot so that it actually works reasonably well; removed
the deprecation.
* Updated Sourceforge to handle changes in the website.
* Updated UrbanDict to handle changes in the website.
* Updated plugins.getChannel and plugins.makeChannelFilename to
properly handle the new channelSpecific database setup.
* Fixed a bug with ShrinkUrl.ln; the url needed to be urlquoted before
being passed off to ln-s.net.
* Fixed some database conversion bugs in fundbConvert.py.
* Fixed a bug in socketDrivers where reconnection attempts would
always occur immediately, thus continually blocking the bot.
* Fixed an exception in registry.OnlySomeString's error method;
the parent method doesn't accept an argument.
* Fixed a bug in RSS where announcing the same feed in multiple
channels would cause improper displaying of the new feeds.
2004-12-22 Jeremy Fincher <jemfinchsupybot.com>
* Version 0.80.0pre6!
* Added a Topic.separator command, which replaces the current
separator with a new separator, changing the topic to reflect the
change.
* Changed the supybot.user configuration variable so that if it
isn't configured, the user will stay up-to-date with the current
version of the bot. To take advantage of this, set your
supybot.user configuration variable to ""
* Removed the supybot.databases.users.hash configuration
variable, so all bots hash by default.
* Fixed a bug with AutoMode's auto-banning feature; a variable
was misspelled.
* Fixed a bug with ChannelValues picking up children that aren't
channels.
* Fixed Misc.apropos not to be case-sensitive.
* Fixed bug in User.register; it works now.
2004-12-20 Jeremy Fincher <jemfinchsupybot.com>
* Version 0.80.0pre5!
* Added a "shuffle" command to the Utilities plugin, which
shuffles its arguments. Useful in combination with
Utilities.last, which returns the last argument it's given, in
combination with Utilities.apply, in order to pick a random
string (think aliases).
* Added supybot.plugins.Relay.noticeNonPrivmsgs, for making the
relay plugin use NOTICEs rather than PRIVMSGs to relay
non-PRIVMSG messages to a channel. This often affects tab
coloring in IRC clients and thus makes it so that relay messages
color the tabs like the actual messages would have.
* Numerous bug fixes. Many, many bugs fixed. Oodles and oodles
of bugs have been fixed. Myriad bugs fixed. Get the idea? :)
2004-12-17 James Vega <jamessansupybot.org>
* Version 0.80.0pre4!
* supybot.databases.plugins.channelSpecific.channel is now a
channelValue so that individual channels can decide to link their
databases.
* Deprecated asyncoreDrivers. Use twistedDrivers or socketDrivers
instead.
* Moved {eval,exec} from Owner.py to Debug.py in the sandbox.
* Numerous bug fixes.
2004-09-30 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.80.0pre3!
* Deprecated FunDB, added two new plugins, Lart and Praise, to
handle the same features individually for larts and praises.
There is a script in tools/ that will convert from a FunDB to a
lart or praise database.
* Deprecated the Infobot plugin, in expectation of a rewrite.
* Deprecated the Quotes plugin, since we don't know anyone who
seriously uses it. Let us know if you do use it, because it may
be removed in a future version.
* Added Karma.{dump,load} for dumping and subsequently loading
the Karma database.
* Changed the News database implementation to a flatfile
database.
* Removed the tinyurl shrinking code from the URL plugin and put
it in the ShrinkUrl plugin, and added the ability to use ln-s.net
as different URL shrinker as well.
* Added an outFilter to the ShrinkUrl plugin that will shrink any
outgoing URL that is longer than the minimum length.
* Added a Freenode plugin as proof-of-concept; the bot can now
use CAPAB IDENTIFY-MSG to ignore users that aren't identified.
* Added the ability for the Seen plugin to match nicks with
wildcards.
* Added a showLinks configuration option to the RSS plugin to
show links during announcements (and another such variable for
non-announcements).
* Added the spellit, hebrew, and shrink filters to the Filter
plugin.
* Added the ability to log to separate directories to
ChannelLogger.
* Added the option to Lookup.add to add lookups that don't reply
with the key.
* Added "at" and "until" commands to the Time plugin; they're not
perfect, and they don't parse nearly enough times, but they're
somewhat tolerable for now.
* Added a Sourceforge.stats command.
* Added single-letter commands to the Words plugin when a hangman
game is active.
* Added supybot.plugins.Services.disabledNetworks, to disable the
Services plugin specific networks.
* Added supybot.protocols.irc.vhost, for binding to a vhost
before connecting.
* Added supybot.reply.format.time.elapsed.short, offering now a
"short" formatting for elapsed times.
* Added supybot.commands.quotes, for configuring which quotes can
be used to quote arguments to commands.
* Added supybot.databases.plugins.channelSpecific.channel,
specifying the "default channel" for non-channel-specific
databases to use.
* Moved the supybot.humanTimestampFormat configuration variable
to supybot.reply.format.time.
* Added a configuration variable determining the maximum length
of replies internally, so they can't suck up as much CPU as they
would otherwise.
* Added a configuration variable determining the maximum nesting
depth allowed, so exceedingly nested commands will be stopped
before they're executed.
* Added configuration variables concerning the formats used by
the central and plugin logging facilities.
* Added a configuration variable determining the quote characters
used by the bot to quote literal strings.
* Added support for line-wrapping the registry configuration
file.
* Moved supybot.reply.{brackets,pipeSyntax} to
supybot.commands.nested.
* Fixed a longstanding bug with the bot "forgetting"
channel-specific configuration variables if they weren't
exercised during the duration of the bot's uptime.
* Fixed renames so they're finally persistent.
* Fixed a bug having to do with Note and unsent notes.
* Fixed several bugs in the interaction of Infobot with other
plugins.
* Added commands.wrap, the new method for wrapping commands and
handling type validation errors consistently throughout the bot.
* Upgraded many of the outside projects we include to their
newest versions.
2004-09-17 James Vega <jamessanusers.sf.net>
* Version 0.80.0pre2!
* Added supybot.plugins.Google.colorfulSnarfer, which determines
whether the word 'google' in the bot's output will be made colorful
(like Google's logo).
* Added the Time plugin, to hold all of our Time related commands.
* Added max() and min() to Math.calc.
* Added Unix.pid, which allows the Owner to retrieve the pid of the
bot's process.
* Added supybot.plugins.Sourceforge.enableSpecificTrackerCommands,
which enables the rfe, bug, and patch commands.
* Added Topic.topic, which returns the current topic of the channel.
* Updated conf.Databases to use a more sane database ordering and
include anydbm.
* Updated various plugins to use our new-style database abstraction.
Plugin databases using this new-style will be named Plugin.dbtype.db.
2004-09-12 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.80.0pre1!
* Added the facility to supporting several different database
implementations in a plugin, allowing the user to specify which
databases are supported as well as in what order of preference.
* Added the Insult plugin, for colorful, creative insults.
* Added the UrbanDict plugin, for defining words based on
UrbanDictionary.com.
* Added the Observer plugin, for watching a channel for regexps
and running commands when the bot sees such regexps.
* Moved Http.geekquote to a new Geekquote plugin, added a command
for using qdb.us, and added a snarfer.
* Added a SuperIgnore plugin, a good example of an inFilter and a
way to completely, totally ignore people.
* Changed the name of the Network plugin to Internet.
* Added a new Network plugin, and moved some commands from Owner,
Misc, and Relay to it.
* Added CTCP flood protection.
* Added a supybot.plugins.Karma.allowUnaddressedKarma
configuration variable, for allowing karma increments/decrements
similar to Infobot.
* Added supybot.reply.whenAddressedBy.nicks, to allow users to
specify a list of nicks to which the bot will respond as if they
were its own nick.
* Added the ability to support multiple-word karma
increments/decrements.
* Changed Owner.rename to be handled persistently; now renames
work across restarts of the bot or reloads of a plugin.
* Changed Misc.last to include a timestamp for when the message
was sent.
* Added the Channel.alert command, to send all currently
connected ops on a channel a message.
* Changed the MoobotFactoids plugin to allow commands to be
nested in factoids definitions and searches.
* Removed the futurama command in favor of adding a
futurama.supyfact file to supybot-data.
* Improved the Http.kernel command, showing more kernel types.
* Added a new contributors command and a way of storing
contributors and their contributions in a plugin.
* Changed the name of Anonymous.action to Anonymous.do, to be
more consistent with "say" and other bots (MozBot, iirc).
* Added the ability for channel bans and ignores and global
ignores to have expiration times.
* Added invalid command flood protection.
* Changed RSS' headlines output to bold the separators in order
to make it easier to distinguish the headlines.
* Added a --no-network option to supybot-wizard.
* Added several attributes to IrcMsg objects as they pass through
the bot; currently we tag them with receivedAt, receivedBy, and
receivedOn.
* Added RichReplyMethods.errorInvalid, a nice helper method for
sending errors about invalid values.
* Changed the --nonetwork and --noplugins options to test/test.py
to --no-network and --no-plugins.
* Changed plugins.makeChannelFilename, swapping the order of the
channel and filename arguments and making the channel optional.
* Changed the first argument to callbacks.Privmsg.callCommand to
be a name rather than a method, for greater justice.
* Added a new mechanism for ordering plugins (subclasses of
callbacks.Privmsg) which is much more flexible than a simple
priority system.
2004-09-06 James Vega <jamessanusers.sf.net>
* Version 0.79.9999!
* Added stripFormatting option to ChannelLogger plugin, which
determines whether non-printable formatting characters are logged.
* Added Sourceforge.patches command to complement the current bugs
and rfes commands.
* Added abs() to Math.calc.
* Improved the interface for Config.list. Now groups and values
are listed, with groups being denoted by a leading .
* Improved Config.config such that the user can specify the entire
config variable name (conf.supybot....).
* Fixed a bug where ChannelLogger wouldn't log ignored nicks.
* Fixed an incorrect path in INSTALL.
* Fixed some missing imports in Unix's configure method.
* Fixed a bug where an owner could publically retrieve a private
configuration variable.
* Fixed an exception when trying to remove non-existent Heralds.
* Fixed an exception in RSS.getHeadlines.
* Fixed a couple bugs in Poll, when retrieving the Poll id.
* Fixed a problem with trying to use socket.inet_pton under
Windows; Python doesn't build their Win32 port with IPV6 support,
so we have to brute-force IPV6 detection.
* Fixed a few bugs with how Infobot handled the SQLite db.
* Fixed others/convertcore.py so that liter-based units are
properly capitalized (L not l) and use 1000 as the conversion rate
for MB, KB, etc. since MiB, KiB, etc. are also known units.
* Fixed a bug where Infobot would confirm an unaddressed factoid
definition.
* Fixed a problem where Google.stats didn't keep track of all
searches.
2004-08-31 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.79.999!
* Added the ability to send long fortunes line-by-line rather
than all in one (or several) messages; it will do this if
supybot.reply.oneToOne is set to False.
* Added many configuration variables to the Unix plugin, allowing
configurable commands and options to those commands.
* Changed the output of Config.list to show groups with a
preceding , rather than use the --groups option.
* Changed the Google.stats (formerly Google.info) command to be
persistent, using the registry to record old values for the
number of searches made and the number of seconds Google has
spent searching for the bot.
* Added module __revision__ logging to our exception logs, for
more information in bug reports.
* Fixed a bug with asyncoreDrivers' handling of reconnects; it
would not reconnect when commanded to if it had reconnected
before.
* Fixed several bugs where the bot was testing nicks for
equivalence without first normalizing them, leading to some false
negatives.
* Fixed a bug with the handling of
supybot.reply.withNoticeWhenPrivate so all private messages
really are replied to with a notice.
* Fixed Http.geekquote to match the current bash.org layout.
Also, made sure all ids are valid ids before requesting a quote
(apparently bash.org is returning a certain quote for all invalid
ids).
* Fixed a bad regular expression in the Ebay plugin which could
cause the bot to suck up 100% CPU for a signficant (perhaps
practically infinite) amount of time.
* Fixed a bug where the bot would sometimes reconnect to a
network after being told to disconnect.
* Fixed an uncaught exception in Owner.connect when the user
forgets the network name
2004-08-30 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.79.99! We're getting asymptotically closer to
0.80.0!
* Added Anonymous.action, to anonymously perform actions in a
specified channel.
* Added a Karma.clear, so channel ops can clear the karma for a
given name.
* Added a Topic.redo, to redo the last undo.
* Added supybot.protocols.irc.umodes, to allow the bot to set
user modes upon connecting to a network.
* Fixed numerous bugs involved with disconnecting, reconnecting,
and using multiple networks.
* Fixed a bug that would prevent the bot from quitting except via
multiple Ctrl-Cs.
* Fixed some mis-interaction between the Karma plugin and the
Infobot plugin.
* Fixed RSS's announcements.
* Fixed bug in Later whereby no more than one message could be
queued for a nick.
* Fixed Services.configure, as well as several bugs in Services
which sometimes prevented the bot from identifying.
* Fixed bugs in the Poll module that caused the list and poll
commands not to work.
* Fixed the ebay snarfer.
* Fixed exception raised by some CTCP messages when the URL
plugin was loaded.
* Fixed Debian.version.
* Fixed Amazon's use of unicode.
2004-08-27 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.79.9!
* Added Infobot, a plugin to emulate Infobot.
* Added Anonymous, a plugin for anonymously saying things to a
channel.
* Added Tail, a plugin which will tail logfiles and send the
new lines to a configurable list of targets.
* Added NickCapture, a plugin which tries to recapture a nick
that's being used by someone else, both by watching for QUITs
with that nick and by checking via ISON for that nick.
* Changed the behavior of "seen" with the --user switch instead to
be a separated command, Seen.user.
* Changed the behavior of "seen" with no arguments instead to be
a separate command, Seen.last.
* Moved the connect and disconnect commands from the Relay plugin
to the Owner plugin, so a Supybot can be on multiple networks
without ever loading the Relay plugin.
* Added relay bot detection to the Relay plugin. Now, rather
than get involved in a loop with another relay bot, a Supybot
will (if it has ops) rain down its wrath upon the offender.
* Added supybot.plugins.Quotes.requireRegistration, which
determines whether a user need be registered to add Quotes to
the Quotes database.
* Added supybot.plugins.RSS.showLinks, which determines whether
the bot will show links to the RSS headlines along with the
normally displayed titles.
* Removed supybot.reply.withPrivateNotice and split it into two
separate configuration variables, supybot.reply.withNotice and
supybot.reply.inPrivate.
* Added supybot.log.stdout.wrap, to allow optional (defaulting to
True) wrapping of stdout logs.
* Added supybot.databases.plugins.channelSpecific, a value that
determines whether the database used for channel-based plugins
will be a channel-specific database or a global database. This
value, ironically enough, is channel-specific -- channels can
each individually decide to be "part of the Borg" or to "be their
own channel." The default, of course, is for databases to be
channel-specific.
* Changed the way channel databases are handled; instead of
generating channel-<name> files, instead we create a subdirectory
of the data directory named channel, and then stick all the files
in there. It's a much cleaner way to do things, in our opinion.
* Added several configuration variables to the Status plugin to
determine how verbose the cpu command is. These are, of course,
channel-specific.
* Added a configuration variable to the Dunno plugin,
supybot.plugins.Dunno.prefixNick, which determines whether the
bot will prefix the nick of the user giving an invalid command to
its "dunno" response. Formerly, it never would; the default for
this variable, however, is True, because that's how the rest of
Supybot works.
* Added Owner.rename, a command for renaming commands in other
plugins.
* Added Config.channel, for getting/setting channel configuration
variables.
* Fixed the problem with channels with dots or colons in them
raising exceptions whenever the registry was accessed.
* Changed Fun.eightball to provide a similar answer for a question
asked multiple times.
* Changed Fun.roulette to use a 6-barrel revolver.
* Changed Bugzilla to use the registry, rather than a custom
flatfile database format.
* Added the KeepAlive plugin, to send useless keepalive messages
to someone every some period. It's mostly just because we
noticed that MozBot had one, and we couldn't allow ourselves to
be outdone.
* Changed the URL plugin to use flatfiles rather than SQLite
database. Also reduced the functionality of the last command by
removing some options that no one ever really used, and removed
the random command (who uses that anyway?)
* Changed the Words plugin not to use SQLite. We lose the
anagram command, but crossword and hangman become much easier to
use, since all the user has to do is put a words file in
data/words.
* Changed the Relay plugin to rely only on the registry, allowing
it to start and join all networks and channels with no user/owner
interaction at all. Also, removed the Relay.say and
Relay.reconnect commands, since both can be accomplished easily
using the Relay.command command in combination with
Owner.reconnect and Anonymous.say commands.
* Added supybot.reply.withNoticeWhenPrivate, to make the bot
reply with a notice when it privately messages a user -- this
generally means that the user's client won't open a query window,
which may be nice. Do note that users can override this setting
via the user registry variable of the same name.
* Added supybot.nick.alternates, which allows a list of alternate
nicks to try, in order, if the primary nick (supybot.nick) is
taken. Also added a nick-perturbation function that will change
supybot.nick if there are no alternates or if they're all taken
as well. As a result, removed supybot.nickmods.
* Changed ChannelLogger to log channels to logs/ChannelLogger,
rather than simply logs.
* Added the ChannelRelay plugin, to relay messages between two
channels. This might be useful for people who want to forward
CVS update messages from one channel (such as commits) to
another.
* Added Channel.mode, to set modes in the channel, Channel.limit,
to set the channel limit, Channel.moderate and
Channel.unmoderate, to set +m and -m, respectively, and
Channel.key to set or unset the channel keyword.
* Added a new plugin, Format, which offers several commands for
formatting strings on IRC. Moved several commands from to it
from the Utilities plugin.
* Improved the functionality of RSS.announce. Calling it with
no arguments now lists the currently announced feeds. Removing
feeds is done by specifying the --remove option.
* Added a reconnect command to the Owner plugin.
* Added aol and rainbow filters to the Filter plugin.
* Added Nickometer plugin, a translation of Infobot's Nickometer.
* Added multiple recipient support for notes.
* Added BadWords.list, to list the bad words currently being
censored by the bot.
* Changed Misc.help to allow plugins to specify their own help,
and added help for several of the more confusing plugins.
* Added Dunno.stats, to return the number of dunnos in the
database.
* Added the Currency plugin, to perform currency conversions.
* Added conf.supybot.plugins.Karma.allowSelfRating, which
determines whether users are allowed to adjust the karma of their
current nick.
* Added --nolimit option to Misc.last, which causes it to return
all matches that are in the history.
* Added conf.supybot.plugins.Herald.defaultHerald, which provides
a default herald to use for unregistered users. Herald.default
was also added as a friendly interface to managing the
defaultHerald.
* Added Weather.wunder, which uses wunderground.com to report the
current weather status.
* Changed supybot.defaultCapabilities to be a space-separated
list rather than a comma-separated list. Also added a check to
make sure -owner was in supybot.defaultCapabilities, and to
require a command-line option to allow it not to be present.
* Added Sourceforge.fight, which returns the list of specified
projects and their bug/rfe count in sorted order, least to most.
* Added Utilities.reply for replying to a person with text. Like
echo, but it prepends the nick like the bot normally does.
* Changed Utilities.success to accept an optional <text> argument
for text to be appended to the success message.
* Changed User.{addhostmask,removehostmask,register,unregister}
to allow owner users to do what they will with their users. You
can now add hostmasks, remove hostmasks, register users, and
unregister users willy-nilly.
* Changed and moved several configuration variables.
supybot.{throttleTime,maxHistoryLength,pingServer,pingInterval}
all moved to supybot.protocols.irc; supybot.httpPeekSize moved to
supybot.protocols.http; supybot.threadAllCommands moved to
supybot.debug.threadAllCommands, and probably a few others I
forgot to mention.
* Added Http.zipinfo, which returns a veritable plethora of
information about the supplied zip code.
* Added a configuration variable for every plugin, "public", that
determines whether the plugin is considered public (i.e., whether
it will show up in the list command when the list command isn't
given the --private option).
* Added Misc.author, a command for finding out which author
claims a particular plugin.
* Added Topic configuration supybot.plugins.Topic.format template
string allowing full customization of the Topic items.
* Added Topic.lock and Topic.unlock, for locking and unlocking
the topic (setting +t or -t, respectively)
* Added Topic.restore, for restoring the topic to the last-sent
topic. Useful for when people change your carefully crafted
topic by means other than the bot.
* Changed supybot.brackets so you can now provide the empty
string, which means you cannot do nesting of commands.
* Added Utilities.last, which replies with the last string
given to it. This is useful for sequencing commands and then
replying with the output of the last commnad.
* Updated RSS.info to accept a feed name as well as a url.
* Added a signal handler for SIGTERM, so you folks killing your
bots uncleanly won't have as many bugs :)
* Added a signal handler for SIGHUP that reloads the bot's
various configuration files.
* Added a new configuration variable, supybot.pidFile, which
determines what file the bot should write its PID to. The
default is not to write the PID file at all.
* Added a comma argument to utils.commaAndify, which specifies the
character to use in place of the comma.
2004-04-16 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.77.2!
* Fixed numerous bugs, high and low, big and small and
in-between. Definitely worthy of a release.
* Added supybot.plugins.ChannelLogger.includeNetworkName, so the
logs aren't strangified when relaying between channels.
* Added a --capability option to User.list, to allow people to
list all the users possessing a certain capability. The main
reason this was added is so jemfinch can tell who owns which
Supybots on supybot :)
* Added Utilities.success, mostly for making aliases such that
they can respond with success if no errors were encountered in
any nested commands.
* Changed the name of the new filter, colorstrip, to be
stripcolor. Better now than after it was highly established :)
* Added configuration variables
supybot.plugins.Services.NickServ.password (which replaces the
old supybot.plugins.Services.password) for specifying the
NickServ password, as well as
supybot.plugins.Services.ChanServ.{op,halfop,voice}, which
determine what the bot should request of ChanServ when it
identifies or joins a channel. These latter variables are, of
course, channel variables.
* Added configuration variable
supybot.plugins.Babelfish.languages (which replaces the old
supybot.plugins.Babelfish.disabledLanguages) for specifying
which languages will be translated/spoken.
* Fixed bug 863601, plugin BadWords fails on color codes.
* Replaced Sourceforge.{rfe,bug} with Sourceforge.tracker, which
can query any tracker type (not just RFEs and bugs) and responds
with more information, a la trackerSnarfer.
* Added supybot.log.individualPluginLogfiles, which determines
whether plugin logs will be logged to their individual logfiles
in addition to the misc.log logfile.
* Added supybot.plugins.WordStats.ignoreQueries, which, when
true, makes the bot ignore queries (and not increment its word
statistics).
* Added the LogToIrc plugin, for sending logs to an IRC
channel or nick. Useful for traceback notification and whatnot.
* Changed supybot.log.timestampFormat to specially handle the
empty string -- if it's set to the empty string, it will log
times in seconds-since-epoch format.
* Added supybot.plugins.Weather.convert, which determines whether
or not Weather.{weather,cnn,ham} will convert temperature to the
configured temperatureUnit.
* Changed User.setpassword not to require the <old password> to
be correct if the requesting user has the owner capability (and
isn't the owner themself).
* Added ircutils.strip{Bold,Reverse,Underline,Formatting}, which
will remove the specified formatting or all forms of formatting
in the case of stripFormatting.
2004-04-09 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.77.1!
* Added supybot.reply.errorWithNotice to make the bot give its
error messages in a notice.
* Added Filter.colorstrip, an outfilter that strips all color
codes from messages.
* Added supybot.plugins.BadWords.{replaceMethod, nastyChars,
simpleReplacement, requireWordBoundaries}; see the associated
help strings to find out what they do.
* Added supybot.plugins.Babelfish.disabledLanguages, to disable
certain languages from being translated/spoken.
* Added supybot.reply.maximumMores, to give users the ability to
set the maximum number of "more" chunks replies will generate.
* Added supybot.reply.truncate, to turn off the normal chunking
of replies that later can be retrieved with the more command.
Setting this variable to On means that no chunks will ever be
created.
* Added supybot.plugins.Enforcer.takeRevengeOnOps, which makes
the bot even take revenge on channel,ops who try to violate the
channel configuration. Of course, such people can change the
channel configuration to their bidding, but it's a decent
protection against errant botscripts or something.
* Added supybot.plugins.Channels.alwaysRejoin, to make the bot
always rejoin when it's kicked.
* Added supybot.databases.users.hash, allowing those running bots
to specify the default hashed/unhashed state of user passwords in
the config file.
* Added Debian.bug, which retrieve bug info from Debian's BTS.
* Changed Relay.names to Relay.nicks, to be consistent with
Channel.nicks.
* Added supybot.brackets, a configuration variable for specifying
which set of matching brackets to use for nested commands. Valid
values are [] (the default), {}, <>, and ().
* Added a configuration variable to ChannelLogger, timestamp,
which determines whether the bot will timestamp its logfiles.
This is a channel-specific variable, of course.
* Updated ChannelLogger not to log messages starting with
[nolog], in order to allow private information to remain private.
* Added a configuration variable to ChannelLogger,
flushImmediately, to cause all channel logs to be flushed every
time they're modified, for those people who like to read the logs
through tail -f or something similar.
* Updated WordStats to allow removing of tracked words.
* Updated Seen.seen to accept no arguments and return the last
message spoken by anyone.
* Updated the Herald plugin to use the standard substitute until
we get it updated to use commands as heralds instead of plain
strings.
* Updated echo to use the standard substitute on its reply.
* Updated Network.whois so that it can now retrieve
information on all domains.
* Updated the Weather plugin to be retrieve weather from either
hamweather.net or cnn.com. Also added
supybot.plugins.Weather.{command,temperatureUnit} so that you can
specify which command (Weather.cnn or Weather.ham) to use when
Weather.weather is called and in which unit (C, F, K) to report
the weather.
* Updated standard replies (such as supybot.replies.success, etc.)
to use the standard substitute (such as $nick, $who, $channel,
etc.) in their text.
* Fixed snarfers to respect lobotomies.
* Fixed Admin.join not to add the channel to the supybot.channels
registry entry if joining the channel wasn't successful.
2004-02-20 Jeremy Fincher <jemfinchsupybot.org>
* Version 0.77.0!
* Changed the format of the user and channel databases to
something much more readable and user-editable. Be sure, if
you're upgrading, to run tools/ircdbConvert.py on your user and
channel databases *BEFORE* installing the new version.
* Updated almost every document we have, and added a
GETTING_STARTED document. Yay!
* Added several new options for Channel.kban: --exact, --nick,
--user, --host, for more flexibility in determining what the
banmask is.
* Added a Scheduler plugin for scheduling events to occur at
specific times.
* Added a Herald plugin for announcing to the channel the arrival
of certain users.
* Changed the reply method of the irc object given to plugins not
to require a msg object.
* Added inter-factoid references for MoobotFactoids. Simply
define a factoid as "see <factoid-key>" (and nothing else) and it
will automatically go pick up the value for that factoid and
display it in its place. Sort of a "symlink" for MoobotFactoids.
* Added the ability to reply to factoids without the "whatis" in
the Factoids plugin. Now, you can use "foo" instead of "whatis
foo".
* Added --{from,to} and --sent options to Note.sent.
* Changed Note.get to simply be "note". Instead of "note get
145", you should use "note 145".
* Changed channel capabilities to use a comma to separate the
channel from the capability instead of a period. This is because
channels can include periods (but not commas) and since we now
allow "plugin.command" capabilities, there's no way to know
whether a given dot is separating the channel from the capability
or the plugin from the command.
* Removed Admin.setprefixchar, since it's unneeded with the new
configuration.
* Removed Status.bestuptime, since it was buggy and no one felt
like maintaining it.
* Added Http.cyborg, a fun little command for getting cyborg
abbreviations for names.
* Added Sourceforge.totalbugs and Sourceforge.totalrfes
* Removed Owner.{set,unset} since they matter not.
* Made the smileys and frowns configurable in ChannelDB.
* Added a vast array of new configurables -- check out the various
config commands in Configurable plugins to see.
* Added better error reporting for Admin.join, explaining to the
user if the bot can't join the channel.
* Added a title-snarfer to the URL plugin.
* Added Relay.command, a command for sending commands to the bot
on a different network.
* Added Bugzilla.search, a new command for searching a bugzilla
installation
* Added an INVITE handler in Admin, allowing users with the admin
capability to INVITE the bot to a channel. There's also a config
variable, alwaysJoinOnInvite, that will cause the bot to join
a channel whenever someone invites it to a channel, not just users
with the admin capability.
* Added conf.requireChannelCommandsToBeSentInChannel for requiring
all channel-related commands to be sent in the channel.
* Added conf.followIdentificationThroughNickChanges for having the
bot update user's identified hostmask when they change nicks.
* Added conf.replyWhenNotAddressed, a configuration variable for
having the bot always attempt to parse a message as a command.
* Added conf.replyWhenAddressedByNick, a configuration variable
for having the bot *not* respond when addressed by its nick.
* Added conf.replyWithNickPrefix, a configuration variable for
having the bot not prefix the nick of the person giving a command
to the reply.
* Changed all "zegrep" stuff to "zgrep -e" stuff, since zegrep is
on fewer platforms than zgrep.
2003-12-12 Jeremy Fincher <jemfinchsupybot.org>