IRCBNX Chatterbot is a remake of the original Battle.net text gateway bot BNX Chatterbot for IRC. Like the original, it features a rule-based response system, an access system, and several moderation features, including:
Its chatter abilities are quite limited. The original read in user-defined DOS wildcard-like patterns and responses. For flexibility and simplicity, IRCBNX instead uses regular expressions. Unmatched rules are met with one of four default responses. Its chattering can be enabled or disabled on demand. It will also permanently ignore users who either tell it to "shutup" or attempt to abuse it.
Unfortunately, the exact origins of the original BNX Chatterbot are unknown.
Around the late 1990's, Battle.net featured a text gateway for use by bots and telnet users. Battle.net lacked many of the channel protection mechanisms commonly seen in IRC today. It also had restrictions such as 1 operator per channel. There was no such thing as a half op (or any other IRC mode). Like IRC, it also had network splitting and nickname collision problems (many splits were severe).
Groups of gamers (called "clans") used to meet up consistently in a common private channel. Some rival clans would try to take over the channel and this prompted the development of moderation bots. However, bots were also being developed to take over channels too. BNX is among one of the earliest moderation bots to appear on Battle.net. Other common examples included (not chronological order):
Eventually, takeover wars became a game in itself. An entire bot development culture emerged to produce several varieties of takeover and moderation bots. This community even reverse engineered the challenging game authentication protocols to produce ever more sophisticated takeover bots. You could login up to eight bots as apparent game clients where the text gateway only permitted one.
Around the mid 2000s, Battle.net attempted to address the takeover wars. They created so-called "Clan" channels that would only give operator status to a user sharing the name of the channel (e.g. nslay would be the unique channel operator of "Clan nslay"). However, as takeover wars had become a sport, clans continued to pit bots against bots in private channels. Finally, Battle.net restricted all text gateway connections to designated public channels. This effectively marked the end of text gateway bots. However, bots that authenticated as games still continued to wage takeover wars for a short time until finally private channels no longer featured operators.
The text gateway met its end in the late 2000s when it was deemed to be abused by spammers and advertisers.
While it seems to be a good idea to use the same case mapping as the server reports in RPL_ISUPPORT, it turns out that this introduces problems. Particularly, the hostmasks in the user list and shit list can potentially change their meaning between servers. There are also some internal programming problems that I can't seem to remember at the moment.
For simplicity and consistency, one case mapping (ascii) will be used for user-to-bot communications. The case mapping should only really matter in bot-to-server communications. Aside, it seems reasonable to assume that servers will report nicknames in their original form so that even case-sensitive comparisons could be used for IRC accounting (e.g. such as maintaining internal channel lists).
As of late January 2013, the bot now honors case mapping when dealing with the server. This change only affects two areas of the bot's programming:
The standard does not disallow the server from doing something unusual such as converting nicknames to lower case (or upper case) in IRC commands (protocol). I also suspect that nickname collisions could be problematic.
However, the access and shit list will always be interpreted in ascii case mapping. This ensures consistent interpretation of the lists across IRC networks (wherever you may bring the bot).
This is a break-down of implemented features and those that remain to be implemented. Many details are not listed but are added when remembered.