Fix bot module loading in Guile 1.9.x+
[clinton/bobotpp.git] / NEWS
CommitLineData
91dddabd 1(-*- text -*-)
2User Visible Changes In Bobot++
be3612f3 3
91dddabd 4IMPORTANT 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 26Version 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 34Version 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 50Version 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 56Version 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 61Version 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 87Version 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 127Version 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 131Version 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 138Version 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 148Version 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 162Version 2.1.3: Something
163- The flood rate can now be set using !setfloodrate INTEGER. The
164default is two messages per second before the bot will ignore
5c73c60a 165you. (thanks to Björn Gustavsson for requesting this)
4edefeb6 166- The flood rate may also be set from Scheme using (bot:setfloodrate
167integer)
168- A very large crash bug has been fixed. Previously, if an undefined
169command was called, any attempts to call a subsequent command would
170cause the bot to crash. Now the bot doesn't crash.
e171dcce 171
feb33b96 172Version 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 191Version 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 223Version 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 252Version 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
257Version 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
265Version 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
277Version 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
282Version 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.