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