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