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