| 1 | (-*- text -*-) |
| 2 | User Visible Changes In Bobot++ |
| 3 | |
| 4 | IMPORTANT NOTES: |
| 5 | As of version 1.98 unknown_lamer is the new maintainer. Also as of |
| 6 | version 1.98, you must have Guile 1.5.6+ or 1.6.x in order to |
| 7 | compile scripting support. |
| 8 | |
| 9 | As of version 2.2.0 no new updates are promised. I am splitting out |
| 10 | the Parser and a few other well written bits and using them from |
| 11 | Scheme to implement most of the Bobot++ functionality in pure |
| 12 | Scheme. The time spent maintaining this not terribly good C++ (a |
| 13 | good bit of which is my fault due to my inexperience when I began |
| 14 | maintaing Bobot++) is a waste to me now. I would rather be hacking |
| 15 | on a Lisp program instead. |
| 16 | |
| 17 | I will still accept patches, and may fix bugs if I have time (and |
| 18 | people report them). I may finish the manual since the scripting |
| 19 | section is all that remains, and that will apply to the new bot as |
| 20 | well. |
| 21 | |
| 22 | ===================================================================== |
| 23 | ====== The News ===================================================== |
| 24 | ===================================================================== |
| 25 | |
| 26 | Version 2.3.1: |
| 27 | - Guile 3.0 support |
| 28 | - Minor doc and bug fixes |
| 29 | |
| 30 | Version 2.3.0: |
| 31 | - Threadsafety enhancements |
| 32 | + Hooks are now threadsafe and hook functions can safely add new |
| 33 | hooks |
| 34 | + Channel ban lists are threadafe |
| 35 | + Channel user lists are threadsafe |
| 36 | |
| 37 | |
| 38 | Version 2.2.3 (2008-11-12): |
| 39 | - Building with Guile in a non-standard location now works |
| 40 | - Building without Guile now works again |
| 41 | - Building with GCC 4.x now works |
| 42 | + GCC prior to 4.x's libc headers exported the libc symbols from |
| 43 | both :: and std:: leading to a few unqualified libc calls sneaking |
| 44 | into Bobot++'s source |
| 45 | - All uses of the long deprecated GH API have been removed |
| 46 | + Building against libguile 1.8 built with --disable-deprecated now |
| 47 | works |
| 48 | + Building against Guile 1.6 likely no longer works |
| 49 | + However, building against guile-vm libguile does work and Bobot++ |
| 50 | is the first application built this way |
| 51 | - This will be the last of the 2.2.x series; a 2.3.x series /might/ be |
| 52 | started to enhance the scripting interface and finish the manual |
| 53 | |
| 54 | Version 2.2.2 (2006-06-28): |
| 55 | - No longer segfaults when loading bobot-utils.scm |
| 56 | - bot:match-to-me produces a valid regexp again |
| 57 | - scripts/uname now properly uses (ice-9 rdelim) instead of redelim |
| 58 | - bot:load now loads files properly |
| 59 | |
| 60 | Version 2.2.1 (2006-06-28): |
| 61 | - If the log directory does not exist the bot creates it |
| 62 | - If there are lines with only whitespace on them in the config file |
| 63 | and error message is no longer printed to the log |
| 64 | |
| 65 | Version 2.2.0 (2006-05-24): |
| 66 | - Scripting |
| 67 | + Hooks |
| 68 | * hooks/disconnect now takes an additonal argument that specifies |
| 69 | whether the disconnect was intentional or not. |
| 70 | * Added hooks/send/who |
| 71 | * Added hooks/send/whois |
| 72 | + The deprecated scripting procedure and hook names are now in a |
| 73 | `begin-deprecated' block. If your guile is built without |
| 74 | deprecated feature support, they will not be available. |
| 75 | + Renamed Functions |
| 76 | * bot:send-ctcp was renamed to bot:ctcp |
| 77 | * bot:send-ctcp-reply was renamed to bot:ctcp-reply |
| 78 | + New Functions |
| 79 | * bot:who (send WHO request) |
| 80 | * bot:whois (send WHOIS request) |
| 81 | + New Constants |
| 82 | * bot:shit/none, bot:shit/no-op, bot:shit/no-join, |
| 83 | bot:shit/no-deban shit list constants |
| 84 | - Documention |
| 85 | + Reorganized a few sections |
| 86 | + Every hook is now documented |
| 87 | + Using bot section is now much more usable |
| 88 | + Every config file is now documented |
| 89 | - The code was cleaned up a bit |
| 90 | |
| 91 | Version 2.1.8: |
| 92 | - Scripting |
| 93 | + Hooks |
| 94 | * Added bot:protection/[none|ban|kick|deop] and bot:aop/[yes|no] |
| 95 | constants to the Scheme scripting interface |
| 96 | * hooks/timer argument is now zero padded instead of space padded |
| 97 | (e.g. "11:01" instead of "11: 1") |
| 98 | * hooks/disconnect is now called when the bot is disconnected from the |
| 99 | server unintentionally (network connection timeout, server died, |
| 100 | etc.) |
| 101 | * hooks/action is now passed the user's nick instead of the full |
| 102 | address like all other hooks |
| 103 | + Message Sending |
| 104 | * Implemented bot:notice |
| 105 | * bot:msg and bot:say may both send to channels and users (instead |
| 106 | of bot:msg for users and bot:say for channels) |
| 107 | * Renamed bot:send-CTCP to bot:send-ctcp |
| 108 | * Added bot:send-ctcp-reply to send a ctcp-reply |
| 109 | + Misc |
| 110 | * Added (bobotpp bot) module that modules may use to gain access |
| 111 | to the bobot++ functions |
| 112 | + Debugging |
| 113 | * The debugging evaluator is now enabled when --debug is passed to |
| 114 | the bot |
| 115 | * New command line option: --debug-scripts enables the debugging |
| 116 | evaluator while running everything else normally |
| 117 | * Merged error handling patch from Dale Smith. This adds detailed |
| 118 | errors and backtraces when --debug/--debug-scripts is passed to |
| 119 | Bobot++. |
| 120 | - Documentation |
| 121 | + Merged documentation patch from Dale Smith (thanks) |
| 122 | - Misc |
| 123 | + NOTICEs and PRIVMSGs are now sent correctly if they contain an |
| 124 | embedded newline |
| 125 | + Max nick length is now configurable via 'maxnicklength' option in |
| 126 | bot.conf (defaults to 9) |
| 127 | - The bot now builds with --disable-scripting again (this is my fault, |
| 128 | I haven't built without it in a long time) |
| 129 | |
| 130 | |
| 131 | Version 2.1.7: |
| 132 | - Fixed a number of small bugs and corner cases |
| 133 | - Should compile without warnings (GCC 3.4) |
| 134 | |
| 135 | Version 2.1.6: |
| 136 | - The String class implementation has been redone and replaced by one |
| 137 | based on std::string (eventually String will be gone entirely, but |
| 138 | it a lot of work) |
| 139 | - Patches from Jos Hulzink <josh@stack.nl> were applied which fix a |
| 140 | few major bugs in the StringTokenizer (thanks) |
| 141 | |
| 142 | Version 2.1.5: Cleanups |
| 143 | - A DCC CHAT with the bot may now only be initiated if the user is a |
| 144 | Friend of the bot |
| 145 | - Implemented bot:ctcp-quote |
| 146 | - The Bot Configuration section of the manual has been completed. |
| 147 | - Fixed a potential (but unlikely) buffer overflow in Utils::strToTime |
| 148 | (if there were more than 512 digits in part of the string form of |
| 149 | the time the buffer would overflow) |
| 150 | - Misc. Bugfixes |
| 151 | |
| 152 | Version 2.1.4: DCC Support Enhancements |
| 153 | - Internal Change: DCCConnection is now an abstract class |
| 154 | - Internal Change: DCCChatConnection provides the functionality of |
| 155 | the old DCCConnection so that DCC FILE support can be added |
| 156 | - New Scheme Procedure: (bot:sent-to-me? message), checks to see if a |
| 157 | message was addressed to the bot. This is better than using |
| 158 | bot:match-to-me because the hook will continue to function if the |
| 159 | bot's nick changes. The only downside to using it is that there may |
| 160 | be an increased overhead of calling more hooks than could be called, |
| 161 | but that shouldn't be much of a problem. |
| 162 | - New Scheme Procedure: (bot:change-command-level command level), |
| 163 | changes the level a user command to allow a user of `level' level or |
| 164 | above to run it. |
| 165 | |
| 166 | Version 2.1.3: Something |
| 167 | - The flood rate can now be set using !setfloodrate INTEGER. The |
| 168 | default is two messages per second before the bot will ignore |
| 169 | you. (thanks to Björn Gustavsson for requesting this) |
| 170 | - The flood rate may also be set from Scheme using (bot:setfloodrate |
| 171 | integer) |
| 172 | - A very large crash bug has been fixed. Previously, if an undefined |
| 173 | command was called, any attempts to call a subsequent command would |
| 174 | cause the bot to crash. Now the bot doesn't crash. |
| 175 | |
| 176 | Version 2.1.2: Llama |
| 177 | |
| 178 | - match-to-me and match-not-channel are now bot:match-to-me and |
| 179 | bot:match-not-channel. Just use perl -pi -e |
| 180 | "s/match-to-me/bot:match-to-me" SCRIPTS (change to match-not-channel |
| 181 | for match-not-channel). |
| 182 | - Each script is now loaded into its own module so namespace clashes |
| 183 | should no longer occur |
| 184 | - New procedure: (bot:load-module INTERFACE-SPEC) will load a "bot |
| 185 | module" with the specified INTERFACE-SPEC (e.g. (foo bar)). A bot |
| 186 | module is the same as a system module except that you don't use |
| 187 | define-module to define it. The %bot:loadpath is searched for |
| 188 | INTERFACE-SPEC (when converted to a string) with an extension in |
| 189 | %bot:load-extensions. E.g. (foo bar) becomes "foo/bar". |
| 190 | - New procedure: (bot:use-module INTERFACE-SPEC) is the same as |
| 191 | bot:load-module except it will make the exported bindings from |
| 192 | INTERFACE-SPEC available in the current-module. |
| 193 | - Updated example bot and new example scripts included with the bot. |
| 194 | |
| 195 | Version 2.1.1: foom |
| 196 | |
| 197 | - Host masks are now case insensitive when matched. At least one other |
| 198 | person thought this was a good idea since IRC is case preserving but |
| 199 | not case sensitive. |
| 200 | - You can now "name" a hook using an extra arg to bot:addhook. This |
| 201 | name can be used to have multiple hooks of the same type with the |
| 202 | same regexp. The default name is "DEFAULT" so don't use that as the |
| 203 | name for your hooks. |
| 204 | - Logging now works again (oops, I didn't realize I broke it until I |
| 205 | started to work on DCC). |
| 206 | - DCC CHAT now "works." You can connect to the bot and talk to to it |
| 207 | and use Scheme hooks to talk to the user. |
| 208 | - New hooks: hooks/dcc/chat-begin and hooks/dcc/chat-message. These |
| 209 | are called when a new DCC Chat begin and when the user sends a |
| 210 | message. |
| 211 | - New Function: bot:dcc-chat-send TO MESSAGE, sends a MESSAGE to the |
| 212 | person at address TO |
| 213 | - New hooks: hooks/send/... where ... is one of action, ctcp, public, |
| 214 | or message. These are triggered when the bot does an |
| 215 | ACTION, sends a CTCP (_not_ a ctcp-reply), sends a PRIVMSG to a |
| 216 | channel, or sends a PRIVMSG to another user, respectively. There |
| 217 | will be more send hooks added later. |
| 218 | - New hooks: hooks/dcc/chat-begin and |
| 219 | hooks/dcc/chat-message. chat-begin is called when the chat starts |
| 220 | and has one argument: the address (in user!nick@host |
| 221 | format). chat-message has two arguments: from (user!nick@host) and |
| 222 | message, which is the raw message (since there is no real protocol |
| 223 | for DCC). chat-start hooks are matched against the address and |
| 224 | chat-message hooks are matched against the text "ADDRESS MESSAGE" |
| 225 | where ADDRESS is the sender's address and MESSAGE is the message. |
| 226 | |
| 227 | Version 2.1.0: Zug Zug |
| 228 | - Hooks can now be fallthrough or non fallthrough. You can set a hooks |
| 229 | priority and whether or not it falls through (i.e. continues hook |
| 230 | matching after it has been executed) using two optional args to |
| 231 | (bot-addhook). The new args are pri (integer priority) and fallthru |
| 232 | (#t or #f) and are at the end. Higher priority hooks are executed |
| 233 | before lower priority hooks, and fallthrough hooks are executed |
| 234 | before non-fallthrough hooks. |
| 235 | - The default config is read from ~/.bobotpp/config/default/ or |
| 236 | /etc/bobotpp/default/ if the user config is not found. Put your |
| 237 | default config in either dir. You may also specify a specific config |
| 238 | under these dirs using the --config or -c arg to bobotpp (see |
| 239 | bobotpp --help for the full list of commands you may use and how to |
| 240 | use them). |
| 241 | - Scripts are now stored in ~/.bobotpp/scripts/ or |
| 242 | PREFIX/share/bobotpp/scripts/ (where PREFIX is /usr/local unless you |
| 243 | changed it with the --prefix arg to configure). The new function |
| 244 | bot-load will take a filename and load it from these dirs, returning |
| 245 | #t if the file was loaded and #f if it wasn't. You can modify the |
| 246 | search list by appending to %bot-loadpath. |
| 247 | - bobot-utils.scm is now autoloaded, so you don't need to |
| 248 | load it if you want to use its functions. |
| 249 | - Logs are now in ~/.bobotpp/logs/ |
| 250 | - bot-* procedures in Scheme are now bot:*. The old bot-* functions |
| 251 | are defined as aliases in bobot-utils.scm |
| 252 | - You can now use lambda's for new commands (oops, I wasn't protecting |
| 253 | the objects from garbage collection) |
| 254 | |
| 255 | |
| 256 | Version 2.0: Stable release / CVS merges |
| 257 | - Merged stuff from Etienne Bernard's dev tree that he was working on |
| 258 | before I took over (not much) |
| 259 | - bot-adduser and bot-addshit now work from Scheme |
| 260 | |
| 261 | Version 1.99: Configure joy |
| 262 | - You can now disable scripting using --disable-scripting or |
| 263 | --enable-scripting=no |
| 264 | - Crypt can also be disabled with --disable-crypt or --enable-crypt=no |
| 265 | - Old hooks behavior has been restored (new hooks are added to the end |
| 266 | of the hooks list and processing does not stop at the first matched |
| 267 | hook). The hook behavior will change radically in 2.1. |
| 268 | |
| 269 | Version 1.98: Unknown_lamer made a large number of changes |
| 270 | - Code is now ISO C++ and compiles with GCC 3.1 |
| 271 | - Converted makefile system to use automake |
| 272 | - configure.ac now requires autoconf 2.50 (this is only a problem if |
| 273 | you modify it, but I should be the only one doing that) |
| 274 | - Transition to new Guile 1.6 API has begun |
| 275 | - Scripting must always be enabled for now (known "bug") |
| 276 | - first hook of a given type to match is the only hook executed, all |
| 277 | others are ignored. Note that the last hook to be registered is the |
| 278 | first in the list! |
| 279 | |
| 280 | |
| 281 | Version 1.97: lots of changes, especially guile's scripting support, which |
| 282 | is not yet documented. See in the scripts/ directory for |
| 283 | examples, and in Interp.C (the Startup() function) for the |
| 284 | list of all available commands. |
| 285 | |
| 286 | Version 1.30: Syntax change for "channel =" in bot.conf. See examples/bot.conf. |
| 287 | Rewrite of ident/password system. Should be more secure and |
| 288 | flexible. |