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