1 2005-01-07 Clinton Ebadi <clinton@unknownlamer.org>
3 * source/BotConfig.C (set_option_value): call watcher list
4 (run_fun_): Added to support watcher list calling
6 2005-01-06 Clinton Ebadi <clinton@unknownlamer.org>
8 * source/BotConfig.C (set_option_value): Fuck you STL
9 (push_back_): Reimplemented so that it doesn't need std::bind1st
10 because the STL is being stupid
12 2004-12-26 Clinton Ebadi <clinton@unknownlamer.org>
14 * source/BotConfig.C (read_config): Implemented properly
15 (get_option_values): Implemented properly
16 (set_config_file): Fixed
18 2004-07-10 Clinton Ebadi <clinton@unknownlamer.org>
20 * bobot++.texinfo (Built-In Commands): Added empty stubs to the
23 2004-06-22 Clinton Ebadi <clinton@unknownlamer.org>
25 * source/BotConfig.C: New file (implementation of configuration database)
27 * source/BotConfig.H: New File (semi-generic configuration database)
29 2004-06-17 Clinton Ebadi <clinton@unknownlamer.org>
31 * bobot++.texinfo (Starting the Bot): New section
33 2004-06-14 Clinton Ebadi <clinton@unknownlamer.org>
35 * bobot++.texinfo (Protection): Added Section
36 (User Levels): Rewrote section to be useful
37 (bot.users): Added section
39 2004-06-12 Clinton Ebadi <clinton@unknownlamer.org>
41 * source/DCCChatConnection.C (connect): Checks to make sure the
42 person initiating a DCC CHAT with the bot is at least a FRIEND of
45 * README: Fixed a typo
47 * scripts/bobot-utils.scm (ctcp-quote): Implemented ctcp-quote
48 (bot:ctcp-quote): Renamed ctcp-quote to bot:ctcp-quite (whoops)
50 2004-05-28 Clinton Ebadi <clinton@unknownlamer.org>
52 * bobot++.texinfo (bot.conf): Finished section
53 (server syntax): New section, documents the bot.conf SERVER syntax
54 (channel syntax): New section, documentes the bot.conf CHANNEL syntax
56 2004-05-13 Clinton Ebadi <clinton@unknownlamer.org>
58 * source/Main.C (real_main): std::exit instead of exit
60 2004-05-12 Clinton Ebadi <clinton@unknownlamer.org>
62 * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the
63 constructor with `n' This should fix the segfaulting.
65 2004-01-28 Clinton Ebadi <clinton@unknownlamer.org>
67 * ChangeLog: Updated copyright notice
69 2004-01-09 Clinton Ebadi <clinton@unknownlamer.org>
71 * source/Interp.C (interp_init_helper): Register
72 bot:change-command-level
74 * source/ScriptCommands.C (ChangeCommandLevel): Added
75 ChangeCommandLevel to change the level a user needs to be to run a
78 * source/ScriptCommands.H: Added ChangeCommandLevel
80 2003-10-12 Clinton Ebadi <clinton@unknownlamer.org>
82 * source/String.H: Changed #define STRING_H to BSTRING_H
84 2003-08-04 Clinton Ebadi <clinton@unknownlamer.org>
86 * scripts/bobot-utils.scm (bot:sent-to-me?): New procedure, used
87 to see if a message was sent to the bot (this is better than
88 bot:match-to-me because the hook isn't invalidated when the bot's
91 * source/DCCConnection.H: Added `nuh' back and added an
93 Added setter `set_autoRemove(bool)'
95 * source/DCCConnection.H: Removed all friends
96 Added accessors (get_bot, get_lastSpoken, get_autoRemove; get_bot
97 reveals the pointer to the bot [PRIVATE POINTER] which probably
98 isn't so nice, but there isn't much to be done about it with the
99 current design of the bot)
101 * source/DCCChatConnection.H: Removed all friends
103 * source/DCCConnection.H: DCCConnection is now a pure virtual
104 class with the subclass DCCChatConnection
106 2003-07-29 Clinton Ebadi <clinton@unknownlamer.org>
108 * source/Socket.C (connect): log errors to the bot log instead of
111 2003-07-23 Clinton Ebadi <clinton@unknownlamer.org>
113 * source/Parser.C (parseMessage): use the find method of std::map
114 to find the command to call instead of [] and then extract the
115 pointer to the userFunction from that if it exists. This appears
116 to fix the crash when one uses an undefined command followed by
119 2003-04-09 Clinton Ebadi <clinton@unknownlamer.org>
121 * source/Interp.C (interp_init_helper): Bind bot:setfloodrate to
122 ScriptCommands::SetFloodRate
124 * source/ScriptCommands.C (SetFloodRate): New Method: SetFloodRate
126 * source/Bot.C (init_user_functions): Make SETFLOODRATE available
129 * source/Bot.H: Made MAX_MESSAGES writeable
131 * source/UserCommands.H: New method: SetFloodRate
133 * source/Commands.H: New method: SetFloodRate
135 2003-04-03 Clinton Ebadi <clinton@unknownlamer.org>
137 * configure.ac: Merged all AC_OUTPUTs at the end
139 2003-04-02 Clinton Ebadi <clinton@unknownlamer.org>
141 * scripts/bobot-utils.scm: Make exported symbols from
142 the-bot-module available in the guile-user module so that scripts
143 loaded with Interp::Load function.
145 2003-03-30 Clinton Ebadi <clinton@unknownlamer.org>
147 * scripts/bobot-utils.scm (bot:load-module): Loads a file from the
148 %bot:loadpath into its own module and returns that (unnamed) module
149 (bot:use-module): Calls bot:load-module and then adds the newly
150 loaded module to the (current-module)'s use-list
152 * source/Interp.C (interp_init_helper): New procedure to initialize
153 the-bot-module (this is the old Interp::Startup verbatim)
154 (interp_post_startup_helper): New procedure to export
155 the-bot-module from bot_module
156 (Startup): Now calls interp_init_helper and
157 interp_post_startup_helper to initalize the bot module system
159 * source/Interp.H: Added private variable bot_module to Interp
161 2002-11-04 Clinton Ebadi <clinton@unknownlamer.org>
163 * scripts/bobot-utils.scm: Added bot: to regex functions (yes,
164 this breaks existing scripts, this is the unstable tree after all)
166 2002-11-03 Clinton Ebadi <clinton@unknownlamer.org>
168 * source/Mask.C (match): Made Mask::match case insensitive
170 2002-09-23 Clinton Ebadi <clinton@unknownlamer.org>
172 * source/Interp.C (scm_apply_wrapper): turned off locking of
173 Interp::mutex to see if this makes the bot work again...and it
176 2002-09-07 Clinton Ebadi <clinton@unknownlamer.org>
178 * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated
179 everything to use aclocal/automake 1.6
181 2002-08-27 Clinton Ebadi <clinton@unknownlamer.org>
183 * source/DCCPerson.H (class DCCPerson): Added
184 UserCommands::DCCList as a friend (friends are better than the old
185 DCC() function at least).
187 * source/DCCManager.H (class DCCManager): Added
188 UserCommands::DCCList as a friend
190 * source/Interp.H (class Interp): Made function scm_apply_wrapper
191 a friend so it can lock Interp::mutex
193 * source/Interp.C (scm_apply_wrapper): Lock Interp::mutex if
194 MULTITHREAD is defined (it is always defined when scripting is
195 enabled) so that Sockets can be made multithreaded using
198 * source/DCCPerson.H: Removed DCC method and made Bot a friend
199 Made DCCManager a friend
201 * source/DCCManager.H (class DCCManager): Removed MAP() method
202 and made Bot a friend of DCCManager
204 2002-08-18 Clinton Ebadi <clinton@unknownlamer.org>
206 * source/Interp.C (Startup): Renamed bot:DCC-chat-send to
209 * bobot++.texinfo (Hook Types): Fixed a typo (I wrote
210 user!nick@host instead of the correct nick!user@host).
212 * source/Interp.C (Startup): Register bot:DCC-chat-send
214 * source/ScriptCommands.C (sendDCCChatMessage): Added method again
216 2002-08-08 Clinton Ebadi <clinton@unknownlamer.org>
218 * source/String.C (String): The std::string copy constructor now
219 extracts the c_str of the std::string and then takes the strlen of
220 that before copying it. This fixes a bug with DCC where if you did
221 e.g. "!help" the bot would reply with "No TOPIC PRIVMSG FOUND" or
222 something like that, depending on what the last message was
223 because Socket will insert a \0 into its semi-static buffer, so
224 the len of the String will not equal the strlen of its char*.
226 2002-08-07 Clinton Ebadi <clinton@unknownlamer.org>
228 * source/DCCPerson.H: Removed destructor (I = idiot)
230 * source/DCCConnection.H: DCCManager is now a friend of
231 DCCConnection (ugh, the bot has way too many friends).
233 * source/DCCPerson.H: Added DCC member that returns a const
234 DCCConnection* (the dcc connection). This isn't saved anywhere
235 because when a DCCPerson is destroyed, its connection is also
238 * source/Bot.H: dccConnections is now a DCCManager
240 * source/DCCPerson.H: Added destructor
241 Added handleInput method
243 * source/DCCManager.C: New file
244 (addConnection): Wrote method, add a DCCConection to the manager
246 * source/DCCManager.H: New file
248 * source/Interp.C (Startup): Register bot:DCC-chat-send
249 (Startup): Removed sendDCCChatMessage stuff
251 * source/ScriptCommands.C (sendDCCChatMessage): New method:
252 sendDCCChatMessage (to, message) sends message to to.
254 * source/DCCConnection.C (connect): Run DCC_CHAT_BEGIN hook with
255 one arg: from (user!nick@host).
257 * source/DCCParser.C (parseLine): Runs DCC_CHAT_MESSAGE hook with
258 two args: from (user!nick@host) and line
260 2002-08-06 Clinton Ebadi <clinton@unknownlamer.org>
262 * source/Interp.C (Startup): Two new Scheme values:
263 hooks/dcc/chat-begin and hooks/dcc/chat-message for the
264 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE hooks.
266 * source/BotInterp.H: Added two new enum values to Hook:
267 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE for the DCC chat start and DCC
270 2002-08-05 Clinton Ebadi <clinton@unknownlamer.org>
272 * source/Parser.C (parseCTCP): Removed call to htonl and fixed
273 DCC! Ack, sockets take their arguments in network byte order so
274 there is no need to convert to host...now DCC _sort of_ works.
276 2002-08-04 Clinton Ebadi <clinton@unknownlamer.org>
278 * source/UserList.C (save): Increment iterator twice to get around
281 * source/ServerQueue.C: Now sends SEND_* hooks instead of
282 triggered general hooks.
284 * source/Interp.C (Startup): New scheme side defines: hooks/send/*
285 (* = the new SEND_ hooks, but lowercase).
287 * source/BotInterp.H: New hook types (SEND_..., ... = ACTION,
288 CTCP, PUBLIC, MESSAGE). These are triggered on send messages.
290 2002-08-01 Clinton Ebadi <clinton@unknownlamer.org>
292 * source/Bot.C (set_log_file): Oops! Fixed logging. Now the bot
295 * source/Socket.C (readLine): Now uses a static std::string that
296 starts out with 512 chars. This will never need to be resized for
297 usualy IRC messages, but might be for DCC messages
299 2002-07-31 Clinton Ebadi <clinton@unknownlamer.org>
301 * scripts/bobot-utils.scm (not-from-me): New syntax.
303 * source/ScriptCommands.C (AddHook): Now takes another optional
304 arg--name that will name the hook (see the hooks section in the
305 manual for what this does).
307 * source/BotInterp.H: Added name field to Hook
309 2002-07-29 Clinton Ebadi <clinton@unknownlamer.org>
311 * source/ServerQueue.C (sendPrivmsg): Now calls hooks on own
312 PRIVMSGes because the IRC server doesn't echo them back to the
313 bot. This could be useful for something (e.g. log script).
315 2002-07-27 Clinton Ebadi <clinton@unknownlamer.org>
317 * source/Interp.C (Shutdown): Runs bot:exit-hook hooks
318 (Startup): New var for Scheme: bot:exit-hook. Calls the thunks
319 associated with the hook when Interp::Shutdown is called (bot exit).
321 2002-07-23 Clinton Ebadi <clinton@unknownlamer.org>
323 * source/BotInterp.H (Hook<): Changed behavior of Hook's <. If a
324 hook is greater than or less than the other hook, only the
325 priority is considered. However, if both hooks have the same
326 priority, then the fallthru-ness is considered, with fallthru
327 hooks being greater than non-fallthru hooks.
329 * source/BotInterp.C (hptr_lt): Added this static function to be
330 used to sort the hooks list (now hooks should be sorted using
331 Hook's operator < instead of using pointer comparision, meaning
332 the new hook system will work correctly)
334 * scripts/bobot-utils.scm: Make bot:log use for-each instead of
335 map because we don't need the result of the displays (this would
336 just be a list of #<undefined> values and is a waste of memory).
338 2002-07-13 Clinton Ebadi <clinton@unknownlamer.org>
340 * source/Bot.C (Bot): userFunctions is now a map for efficiency
341 (worst case search is now NlogN instead of N). This improvement is
342 not as drastic as the one gained by making the Parser functions
343 list a map (because we don't scan this map for every message), but
344 it helps to clean up the code
346 2002-07-12 Clinton Ebadi <clinton@unknownlamer.org>
348 * source/Parser.H: Removed userFunctionsStruct
350 * source/Interp.C (Startup): ScriptCommands::sendCTCP registered
351 as bot:send-CTCP for Scheme
353 * source/ScriptCommands.C (sendCTCP): Wrote sendCTCP
355 2002-07-11 Clinton Ebadi <clinton@unknownlamer.org>
357 * source/ServerQueue.C (sendUser): Changed . . in USER command to
358 0 * (which is the Right Way to because <mode> must be a number...)
360 * source/Parser.C (init): New method of Parse. This initalizes the
361 functions map. functions replaces the old functions array, and
362 should yield better performance (since the functions array had to
363 be scanned for every incoming message)
365 * source/Parser.H: New member, functions (private)
367 2002-07-10 Clinton Ebadi <clinton@unknownlamer.org>
369 * source/Interp.C (Startup): New symbols: bot:user-*
370 [none|user|trusted|friend|master] are defined in Scheme as the
371 different levels of the users.
372 (Startup): All bot-* variables are now bot:*
374 2002-07-09 Clinton Ebadi <clinton@unknownlamer.org>
376 * source/Bot.H: Made some variables private because they shouldn't
377 be changed at runtime
379 * source/Parser.C (parseCTCP): Reneabled DCC CHAT (I want to test
380 this out to see if it works and make it work)
382 * source/Bot.C (Bot::Bot): New var: logs_dir. Set to the log file
385 * scripts/bobot-utils.scm: Fixed a typo (I forgot the / after
386 scripts in the user scripts dir) that made bobot++ not able to
387 load scripts from the user scripts dir
389 2002-07-08 Clinton Ebadi <clinton@unknownlamer.org>
391 * source/BotInterp.C (RunHooks): Changed iterators to
392 reverse_iterators because the hooks list is sorted in ascending
393 order--higher priority and fallthrough hooks appear _after_ the
394 lower priority and non-fallthrough hooks.
396 * source/Main.C (print_long_help): Added function
397 (print_short_help): Renamed from printUsage
398 (namespace): Most stuff in here is now defined in an anonymouse
399 namespace so it doesn't have external linkage
400 (real_main): Uses getopt_long instead of getopt. Added several
401 command line arguments (bobotpp --help for a full list).
403 * scripts/bobot-utils.scm (bot-load): Function moved from
406 * source/Interp.C (Startup): Autoloads
407 PREFIX/bobotpp/scripts/bobot-utils.scm now
408 (Startup): New Scheme variable: bot-sys-scripts-dir (system
411 * source/bobot-scheme.scm.in: Removed
413 * source/Makefile.am: Removed bobot-scheme.scm compiliation
415 * configure.ac (PREFIX): configure.ac defined prefix now
417 * source/Main.C (real_main): Default configuration is now read
418 from /etc/bobotpp/default
419 * source/bobot-scheme.scm.in: Added file. This defines the
420 'bot-load' procedure which will load a file from
421 $HOME/.bobotpp/scripts/ or @datadir@/bobotpp/scripts/ if the
422 script doesn't exist in the user script dir.
424 2002-07-01 Clinton Ebadi <clinton@unknownlamer.org>
426 * bobot++.texinfo: Started docs (just a skeleton right now)
428 * source/ScriptCommands.C (AddHook): Now takes pri and fall opt
429 args to set a hooks priority and whether or not it will
430 fallthrough. These args are optional.
432 * source/Interp.C (Startup): addhook now takes 3 req and 2 opt args
434 * source/BotInterp.C (AddHook): Now uses priority and fallthrough
435 (RunHooks): exec fallthrough hooks first.
437 * source/BotInterp.H: Changed Hooks to have priority
438 Added fhooksMap to BotInterp (fallthrough)
440 * source/UserCommands.C (AddShit): Converted to use Commands
442 2002-06-21 Clinton Ebadi <clinton@unknownlamer.org>
444 * source/Commands.C (AddUser): Fixed a one-off (function call was
445 before a brace instead of after one) that caused a segfault when
446 the user mask was a wildcard
448 2002-06-20 Clinton Ebadi <clinton@unknownlamer.org>
450 * all files: Updated address of the FSF
452 * source/UserCommands.C (AddUser): Uses Commands now instead of
453 manipulating the bot directly
455 2002-06-18 Clinton Ebadi <clinton@unknownlamer.org>
457 * source/ScriptCommands.C (AddShit): Filled in function.
459 * source/Interp.C (Startup): Bind bot-adduser to
460 ScriptCommands::AddUser instead of Action
461 (Startup): Bind bot-addshit to ScriptCommands::AddShit
463 * source/ScriptCommands.C (AddUser): Filled in function
465 * source/ServerList.C (delServer): Changed (n - 1) to n...n-1
466 would have caused problems if you used more than one server
468 * source/Parser.H: Changed const char* to String in userFunctionStruct
470 * source/String.H: Added std::string compatibility members
472 * configure.ac: You can now disable Crypt and scripting
474 * source/*: Added #include "config.h" where needed
476 * configure.ac: Added AM_CONFIG_HEADER
478 * config.h.in: added file
480 * source/Queue.C: Didn't notice iostream.h here! Fixed
483 Copyright 2002,2003,2004 Clinton Ebadi
484 Copying and distribution of this file, with or without modification, are
485 permitted provided the copyright notice and this notice are preserved.