1 2006-06-28 Clinton Ebadi <clinton@unknownlamer.org>
3 * source/Bot.C (set_log_dir): Create directory if it doesn't exist
4 (readConfig): Catch case of a line consisting of spaces and don't
5 print and error message
7 2006-02-03 Clinton Ebadi <clinton@unknownlamer.org>
9 * source/Interp.C (Startup): Removed loading of bobot-utils.scm
10 (Startup2): Load bobot-utils.scm here
12 * source/Interp.H: Added Startup2 method
14 * source/Bot.C (Bot): Call Interp::Startup2
16 * source/Main.C (main): Moved Interp::Startup call to after the
18 (main): Moved Interp::Startup back
20 2005-09-12 Clinton Ebadi <clinton@unknownlamer.org>
22 * bobot++.texinfo (High Level Message Functions): Removed
23 duplicate bot:say entry
24 (Channel Control): Converted section to new format, and documented
27 2005-08-07 Clinton Ebadi <clinton@unknownlamer.org>
29 * bobot++.texinfo (Bot Control Commands): Convert to @deffn and
31 (Built-In Commands): Clarified when the channel argument must be
34 2005-07-21 Clinton Ebadi <clinton@unknownlamer.org>
36 * bobot++.texinfo: Removed all multitables and replaced them with
39 2005-07-07 Clinton Ebadi <clinton@unknownlamer.org>
41 * bobot++.texinfo (Shit Levels): Added section
42 (Scheme User Levels): Removed Section
43 (Adding New Commands): Updated ref to Scheme User Levels to refer
44 to the User Levels section, and changed a @code{} into a @{var}
45 (Sending Messages): Rewrote section
46 (High Level Message Functions): Merged bot:say and bot:msg
48 (bot.users): Expanded section
49 (bot.shit): Added section
50 (bot.conf): Document initfile option
51 (bot.shit): More detail
52 (bot.users): More detail
53 (bot.init): Added section
54 (bot.conf): Documented autoexecfile option
55 (bot.autoexec): Added section
56 (Using the Bot): Added some intro text
57 (Concepts): New section, all of the level sections are now
59 Merged small doc patch from dsmith
60 (Channel Control): Added Section
61 (User List Commands): Added Section
62 (Spylist): Added Section
63 (Message Commands): Added Section
64 (Miscellaneous Commands): Added Section
65 (Shit List Commands): Added Section
66 (Channel Info): Added Section
67 (Built-In Commands): Completely Reorganized section
69 * source/Interp.C (interp_init_helper): Added bot:shit/none
70 /no-ban, /no-kick, and /no-deop constants to Scheme
72 * scripts/bobot-utils.scm (bot:sent-to-me?): Redefined as a
73 closure (this should create the regexp once instead of each time
74 the function is called)
76 * examples/bot.autoexec: Updated sample bot.autoexec
78 * examples/bot.users: Updated sample bot.users
80 * examples/bot.conf: Updated sample config
82 2005-07-06 Clinton Ebadi <clinton@unknownlamer.org>
84 * bobot++.texinfo (Sent Message Hooks): Documented hooks/send/who
87 * source/ServerQueue.C (sendWho): Call hooks/send/who
88 (sendWhois): Call hooks/send/whois
90 * source/Interp.C (interp_init_helper): Added hooks/send/who and
91 hooks/send/whois constants to Scheme
93 * source/BotInterp.H: Added SEND_WHO and SEND_WHOIS hook constants
95 * bobot++.texinfo (Misc Scripting Stuff): Documented bot:who and
97 (bot.conf): Document MAXNICKLENGTH
99 * source/Interp.C (interp_init_helper): Add bot:who and bot:whois
102 * source/ScriptCommands.C (Who): Implemented Who method
103 Removed IQUEUE macro (no longer needed)
104 (Whois): Implemented Whois method
106 * source/ScriptCommands.H: Added Who and Whois methods
108 * source/Commands.C (Who): Implemented Who
109 (Whois): Implemented Whois
111 * source/Commands.H: Add Who and Whois tethods
113 * source/Interp.C: Updated copyright notice
114 (interp_init_helper): Remove send from CTCP/CTCPReply method names
116 * source/Interp.H: Updated copyright notice
118 * source/ScriptCommands.C (CTCP): Renamed from sendCTCP
119 (CTCPReply): Renamed from sendCTCPReply
121 2005-07-05 Clinton Ebadi <clinton@unknownlamer.org>
123 * bobot++.texinfo (Low Level Message Functions): Updated docs to
124 reflect new names for ctcp functions
126 * source/Interp.C (interp_init_helper): Register
127 ScriptCommands::Notice instead of sendNotice
128 (interp_init_helper): Renamed bot:send-ctcp to bot:ctcp
129 (interp_init_helper): Renamed bot:send-ctcp-reply to bot:ctcp-reply
131 * source/ScriptCommands.C (Notice): Renamed from sentNotice
133 * source/ScriptCommands.H: Renamed sendNotice to Notice
135 * bobot++.texinfo (Hook Types): Spelling fix
137 2005-07-04 Clinton Ebadi <clinton@unknownlamer.org>
139 * scripts/bobot-utils.scm (_deprecated-fun): Set
140 current-error-port to bot:logport while calling
141 issue-deprecation-warning
143 * bobot++.texinfo: Grammar fixes on the title page
144 (Configuration): Added more info on config files.
145 (bot.conf): Added xrefs for server syntax and channel syntax
146 (server syntax): Added more detail and moved a paragraph
147 (channel syntax): Added more details, revised the examples, and
148 moved some text around
149 (User Levels): Clarified
150 (Protection): Cleaned up
151 (Automatic Op): Improved substantially
153 * source/DCCManager.C (checkInput): Call hooks/dcc/chat-end if the
156 * scripts/bobot-utils.scm (bot:log): Updated to use bot:logport
157 instead of bot-logport
159 * source/Interp.C (interp_init_helper): Add hooks/dcc/chat-end
162 * bobot++.texinfo (DCC CHAT Hooks): Document hooks/dcc/chat-end
164 * source/BotInterp.H: Add DCC_CHAT_END to enum
166 * source/DCCManager.C (checkStale): Run hooks/dcc/chat-end when
167 deleting a stale connection.
169 2005-07-03 Clinton Ebadi <clinton@unknownlamer.org>
171 * bobot++.texinfo (Hook Types): Documented all hooks
173 * source/ServerQueue.C (sendPrivmsg): Changed SEND_MESSAGE hook to
174 match dest and pass dest to send hook
176 * bobot++.texinfo (Hook Types): Changed language of
177 hooks/dcc/chat-* hook documention
178 (Received Message Hooks): Added subsub section of Hook Types
179 (Sent Message Hooks): Added subsub section of Hook Types
180 (DCC CHAT Hooks): Added subsub section of Hook Types
181 (Miscellaneous Hooks): Added subsub section of Hook Types
183 * source/Parser.C (parseScriptFunction): Changed
184 lazy_apply_wrapper to Interp::LazyApplyWrapper
185 (parseScriptFunction): Changed empty_handler to Interp::EmptyHandler
186 (parsePart): Grammar fix in log (Leaved => Left)
188 * source/Interp.H (Interp): Added LazyHandler method
190 * source/BotInterp.C (RunHooks): changed lazy_apply_wrapper to
191 Interp::LazyApplyWrapper
192 (RunTimers): Changed empty_handler to Interp::EmptyHandler
193 (RunHooks): Changed empty_handler to Interp::EmptyHandler
194 (RunTimers): Changed lazy_apply_wrapper to Interp::LazyApplyWrapper
196 * source/Interp.C (LazyHandler): Renamed from lazy_handler
197 (ScmApplyWrapper): Renamed from scm_apply_wrapper
198 (EmptyHandler): Renamed from empty_handler
200 * source/Interp.H (Interp): Removed ErrorHandler method
201 (Interp): Added LazyApplyWrapper method
202 (Interp): Added EmptyHandler method
203 (Interp): Added ScmApplyWrapper method
205 * scripts/bobot-utils.scm: Added hooks/leave as an alias for hooks/part
206 Added begin-deprecated around deprecated definitions
207 (_deprecated-fun): Added macro to define an alias for a function
208 and issue a deprecation warning when used
209 Converted all bot- aliases to use _deprecated-fun
211 * source/Interp.C (interp_init_helper): Changed Hook::LEAVE to
213 (interp_init_helper): Removed definition of hooks/leave
215 * bobot++.texinfo (Hook Types): Removed stub for hooks/leave, only
216 document hooks/part name (hooks/leave still exists, but will not
217 be documented as it is the same as hooks/part)
219 * source/Parser.C (parsePart): Use Hook::PART instead of Hook::LEAVE
221 * source/BotInterp.H: Removed Hook::LEAVE, added Hook::PART
223 * bobot++.texinfo (Scripting): Added note about most arguments
226 * source/Commands.C (NextServer): Call hooks/disconnect
228 * source/Bot.C (run): Pass extra argument to Hook::DISCONNECT
230 * bobot++.texinfo (Creating a Hook): Reformatted the bot:addhook
231 section to make it more readable
232 (Hook Types): Reformatted hooks/action
233 (Hook Types): Changed grammar of hooks/nickname (their => his)
234 (Hook Types): Documented hooks/signoff
236 2005-06-29 Clinton Ebadi <clinton@unknownlamer.org>
238 * bobot++.texinfo: Updated copyright years, changed "applies to
241 * source/Socket.C (readLine): return buf.substr (0, pos) instead
242 of using the String char * constructor (this should be faster,
243 especially for long strings since a simple copy is used instead of
244 going over each char until nul is encountered)
246 * configure.ac: Release 2.1.8
247 Change version to 2.1.9CVS
249 * source/Parser.C: Include Commands.H (fixes --disable-scripting build)
251 * source/Bot.C (Bot): Fix to make a --disable-scripting build work
253 * bobot++.texinfo (Configuration): Swapped order of config file
254 placement and config files
255 (User Levels): users not found in the user list *can* execute
256 commands as bot:user-none now.
257 (Low Level Message Functions): Changed a few @code{}s to @var{}s
259 2005-06-28 Clinton Ebadi <clinton@unknownlamer.org>
261 * bobot++.texinfo: @vskip Opt... => @vskip 0pt...
263 * source/Main.C (namespace): Added debug-scripts option
265 * source/Parser.C (parseCTCP): Hook::ACTION is now passed
266 from->getNick () instead of from->getAddress () (consistency fix)
268 * source/Main.C: Merged error handling patch from dsmith
270 * source/Parser.C: Merged error handling
273 * source/Interp.H: Merged error handling patch from dsmith
275 * source/Interp.C (lazy_handler): Merged error handling patch from
278 * source/BotInterp.H: Merged error handling patch from dsmith
280 * source/BotInterp.C: Merged error handling patch from dsmith
282 * bobot++.texinfo (Low Level Message Functions): Documented
285 * source/Parser.C (parseCTCP): Converted to use Commands::CTCPReply
287 * source/Interp.C (interp_init_helper): Bound bot:send-ctcp-reply
290 * bobot++.texinfo (Low Level Message Functions):
291 s/bot:send-CTCP/bot:send-ctcp/
293 * source/Interp.C (interp_init_helper): Renamed bot:send-CTCP to
296 * source/ScriptCommands.H: Uncommented sendCTCPReply prototype
298 * source/ScriptCommands.C (sendCTCP): Convert to use Commands::CTCP
299 (sendCTCPReply): Added
301 * source/Parser.C (parseJoin): Convert to use Commands::CTCP
303 * source/Commands.C (CTCP): Implemented
304 (CTCPReply): Implemented
305 (Action): Convert to use Commands::CTCP
307 * source/Commands.H: Added CTCP (bot, target, command, message)
308 Added CTCPReply (bot, target, command, message)
310 2005-06-27 Clinton Ebadi <clinton@unknownlamer.org>
312 * examples/bot.conf (maxnicklength): Update example config
314 * source/Utils.C (valid_nickname_p): Use b->MAX_NICKLENGTH
316 * source/Bot.C (readConfig): Look for MAXNICKLENGTH parameter
318 * source/Bot.H: Added MAX_NICKLENGTH member
320 * source/Utils.H (valid_nickname_p): Now takes Bot* as first argument
322 * source/Commands.C (Msg): Send multiple PRIVMSGs when a message
325 * source/UserCommands.C (SetVersion): Convert to use Commands::Notice
327 * source/Commands.C (Notice): Send multiple NOTICEs when a message
330 2005-06-25 Clinton Ebadi <clinton@unknownlamer.org>
332 * source/Main.C (real_main): Enable Guile debugging mode when
335 * source/Interp.C (interp_post_startup_helper): Return
336 SCM_UNSPECIFIED instead of 0
338 2005-06-24 Clinton Ebadi <clinton@unknownlamer.org>
340 * All: Updated FSF street address
342 * source/Commands.C (Msg): Move body of Say to an if inside of this
345 * source/ScriptCommands.C (sendNotice): Returns error code instead
348 * source/Commands.C (Say): Check to make sure target is a channel
349 (Msg): Extended to send messages to channels
351 2005-06-23 Clinton Ebadi <clinton@unknownlamer.org>
353 * scripts/bot.scm: Added file ((bobotpp bot) module for other
354 modules to gain access to bobot++ interface)
356 * source/Commands.C (Notice): Commented out check/abort if target
357 is a channel (there doesn't seem to be a reason for this to not work)
359 * source/Interp.C (interp_init_helper): Register bot:notice with scheme
361 * bobot++.texinfo (High Level Message Functions): Document bot:notice
363 * source/Message.H: Added operator== to Message (tests for error
366 * source/Commands.C: Removed message type macros
368 * source/Message.H: Moved message type macros to Message.H
370 * source/ScriptCommands.C (sendNotice): Implemented sendNotice
372 * source/ScriptCommands.H: Uncomment sendNotice
374 * source/Bot.C (waitForInput): Use %02d when formatting
375 Hooks::TIMER argument instead of %2d, and switch to snprintf to
378 * bobot++.texinfo (Hooks): Clarified intro text about hooks (order
381 * source/Bot.C (run): Added call to Hooks::DISCONNECT
382 (hooks/disconnect) when the bot is disconnected from the server
384 * bobot++.texinfo: Applied documentation patch from Dale P. Smith
385 (Hook Types): Added hooks/disconnect argument
387 2005-06-06 Clinton Ebadi <clinton@unknownlamer.org>
389 * bobot++.texinfo: Change @vskip 0 to @vskip 0pt to make this work
390 again (thanks dsmith)
392 2005-06-01 Clinton Ebadi <clinton@unknownlamer.org>
394 * source/Interp.C (interp_init_helper): Added
395 bot:protection/[none|ban|kick|deop] constants to Scheme
396 (interp_init_helper): Added bot:aop/[yes|no] constants
398 2005-05-31 Clinton Ebadi <clinton@unknownlamer.org>
400 * configure.ac: Release Bobot++ 2.1.7
401 Changed version to 2.18.CVS
403 * source/UserList.C (save): Remove workaround for BUG #2
405 * source/Parser.C (parse001): make realNick lowercase when doing
406 the comparison to bot->nickName to prevent pushing a second copy
407 of the bot onto the userlist (closes BUG #2)
409 * source/Bot.C (Bot): cleaned up constructor
410 (waitForInput): replaced gh_list with scm_list_n
412 * source/UserList.C: Cleaned up some formatting
414 * source/Main.C: Formatted code more cleanly
415 (real_main): changed a few Strings to std::strings
417 * source/String.C (operator): Made index signed again, it's not
418 worth fixing this warning
420 * source/Bot.C: Add casts to make this compile with unsigned int
421 as operator[] in String
423 * source/String.C (operator): Made index unsigned
425 * source/Utils.C: Made a few things unsigned to kill warnings
427 * source/Socket.C (readLine): Made pos unsigned
429 * source/Bot.C (Bot): Fixed initializer list order to kill warnings
431 * source/BotInterp.C (RunTimers): Removed unused variable (Timer *t)
433 * source/StringTokenizer.C (count_tokens): Changed return type to
435 (more_tokens_p): Made counter unsigned
437 * source/StringTokenizer.H (class StringTokenizer): Made pos
438 std::string::size_type instead of int
440 * source/Commands.C (TBan): Returns Ok is the ban is done instead
441 of falling off the end (oops)
443 * source/BotInterp.H: Add general catch case (false)
445 2005-03-11 Clinton Ebadi <clinton@unknownlamer.org>
447 * configure.ac: Release 2.1.6
448 Changed version to 2.1.7CVS
450 2005-02-28 Clinton Ebadi <clinton@unknownlamer.org>
452 * source/Parser.C (parseLine): use map<>::find and an iterator to
453 find the IRC command instead of map<>::operator[] to avoid a
456 * source/Bot.C (waitForInput): Removed commented out code
458 * source/Socket.C (readLine): return String (buf.c_str ()) instead
459 of String (buf) so that only the buffer up to the first null is returned
460 (readLine): Added a comment explaining the usage of buf
461 (readLine): Changed type of length (std::string::size_type instead
464 * source/String.C: Reimplemented String on top of std::string to
465 fix a few bugs and potential memory leaks
466 (toLower): use Utils::to_lower
467 (toUpper): Use Utils::to_upper
468 (trim): Use Utils::trim_str
470 * source/String.H: removed srep, replaced it with a std::string
473 * source/Utils.C (to_upper): Applied patch from Jos Hulzink
475 (trim_str): Appled patch from Jos Hulzink <josh@stack.nl> (fixes
476 counters and substr call)
478 * source/StringTokenizer.C (next_token): Applied patch from Jos
479 Hulzink <josh@stack.nl> (fixes substr call)
480 (rest): Applied patch from Jos Hulzink <josh@stack.nl> (fixes
483 2005-02-27 Clinton Ebadi <clinton@unknownlamer.org>
485 * source/Bot.H (COPYRIGHT_STRING): Remove Michael Wilson because
486 he is a lazy bum and never submitted the String replacing patch
488 2005-01-23 Clinton Ebadi <clinton@unknownlamer.org>
490 * configure.ac: Remove CC++ test
491 Changed version to 2.1.6CVS (2.1.5 released)
493 * bobot++.texinfo: Updated copyright
495 2005-01-16 Clinton Ebadi <clinton@unknownlamer.org>
497 * TODO (General): Added TODO items
498 (2.2): Moved a few items here from 2.4
500 * README (NOTE): Mention boost requirement
502 2005-01-13 Clinton Ebadi <clinton@unknownlamer.org>
504 * ChangeLog Updated copryight
506 * source/User.H: Removed forward declaration of Utils
508 * source/Bot.H: Removed forward declaration of Utils
510 * source/ChannelList.H: Removed forward declaration of Utils
512 * source/UserListItem.H: Removed forward declaration of Utils
514 * source/Utils.H: Removed class Utils, replaced with a namspace
515 (it only contained static methods)
517 * source/Bot.H (COPYRIGHT_STRING): Added 2005 and Michael Wilson
518 (he is replacing String)
520 2005-01-12 Clinton Ebadi <clinton@unknownlamer.org>
522 * source/BotConfig.C (set_option_value): Put watcher calling
523 inside of if (cf_iter != end()) to fix a segfault (if the cf_iter
524 = end then there are no watchers since this is a new value and
525 references cf_iter->second segfaults)
527 * source/Utils.C (trim_str): Fixed bug (last non-space character
530 * source/BotConfig.C (read_config): Made to use set_option_value
531 instead of manipulating options_db directly
533 * source/BotConfig.H (class BotConfig): Add set_option_value that
534 takes a t_value instead of t_value_list (most uss of
535 set_option_value will be to add a single value so this is very useful)
537 * source/BotConfig.C (set_option_value): Implemented
539 * source/UserList.C: Made to work with new Utils/StringTokenizer names
541 * source/UserCommands.C: Made to work with new
542 Utils/StringTokenizer names
544 * source/ShitList.C: Uses Utils.H now (Utils::trim_str & friends)
546 2005-01-11 Clinton Ebadi <clinton@unknownlamer.org>
548 * source/ShitList.C: Made to work with new StringTokenizer names
550 * source/ServerQueueItem.C: Made to work with new StringTokenizer names
552 * source/ServerQueue.C: Made to work with new Utils names
554 * source/ScriptCommands.C: Made work with new Utils names
556 * source/Person.C (getNick): Made work with new Utils names
558 * source/String.H: Added substr prototypes
560 * source/String.C (substr): Added substr as an alias of subString
561 (for compat with std::string before the transition)
563 * source/Parser.C: Made to work with new Utils/StringTokenizer names
565 * source/DCCParser.C: Made to work with new Utils names
567 * source/DCCChatConnection.C: Made to work new Utils names
569 * source/Commands.C: Made to work with new Utils names
571 * source/Channel.C: Made to work with new Utils names
573 * source/BotInterp.C: Made to work with new Utils
575 * source/Bot.C: Made to work with new Utils/StringTokenizer names
577 * source/String.C (operator=): Unremoved operator=(std::string)
579 * source/String.H: Unremoved operator=(std::string)
581 * source/BotConfig.C (read_config): Use Utils::trim_str
583 * source/String.C (trim): Fixed bug (p->s[i] == '\r', s/i/j/)
585 * source/Utils.C (trim_str): Implemented
587 * source/Utils.H: Added tim_str (replaces String::trim)
589 * source/BotConfig.C: Made everything work with new
590 StringTokenizer and Utils names
592 * source/Utils.H: Added to_lower
595 * source/StringTokenizer.C (rest): uses std::isspace instead of
596 checking st[pos] against ' ' and '\t'
598 * source/StringTokenizer.H: Removed CamelCasing
599 Renamed hasMoreTokens to more_tokens_p
601 * source/StringTokenizer.C: Converted to use std::string
603 * source/StringTokenizer.H: Converted to use std::string
605 * source/String.C: Removed operator=(std::string)
607 * source/String.H: Removed operator=(std::string)
609 * source/Utils.C: Added copyright
610 Reformatted to match GNU coding standard more closely
611 Converted everything to use std::string
612 (get_nick): Renamed from getNick
613 (get_userhost): Renamed from getUserHost
614 (get_key): Renamed from getKey
615 (IP_p): Renamed from isIP
616 (make_wildcard): Renamed from makeWildcard
617 (channel_p): Renamed from isChannel
618 (wildcard_p): Renamed from isWildcard
619 (valid_channel_name_p): Renamed from isValidChannelName
620 (valid_nickname_p): Renamed from isValidNickName
621 (get_level): Renamed from getLevel
622 (str2time): Renamed from strToTime
623 (str2time): Fixed potential buffer overflow (num[512] => std::string)
624 (level2str): Renamed from levelToStr
625 (prot2str): Renamed from protToStr
626 (bool2str): Renamed from boolToStr
627 (long2str): Implemented
628 (scm2str): Renamed from scm2String
629 (str2scm): Renamed from string2SCM
631 * source/BotConfig.C: Reformatted to fit GNU coding style more closely
633 * source/Utils.H: Added long2str (long int -> std::string)
635 * source/String.H: Added 2003 copyright (the year I last modified
638 * source/String.C: Added 2002 copyright (the year I last modified
641 * source/Utils.H: Updated Copyright
642 s/String/std::string/g
643 Removed camel casing and is* = *_p
646 * source/BotConfig.C: Updated Copyright
648 * source/BotConfig.H: Updated copyright
650 2005-01-08 Clinton Ebadi <clinton@unknownlamer.org>
652 * source/BotConfig.C (set_option_value): Take care of the case
653 where key is not already in the db
654 (add_watcher): Implemented
655 (read_config): Removed ',' token parsing (not needed)
657 * configure.ac: Add AC_LANG([C++]) so we can check for C++ libs
658 AC_CHECK_LIB ccgnu2 (CommonC++2)
660 * README: Updated README (reformatted, adding info, etc.)
662 2005-01-07 Clinton Ebadi <clinton@unknownlamer.org>
664 * source/BotConfig.C (set_option_value): call watcher list
665 (run_fun_): Added to support watcher list calling
667 2005-01-06 Clinton Ebadi <clinton@unknownlamer.org>
669 * source/BotConfig.C (set_option_value): Fuck you STL
670 (push_back_): Reimplemented so that it doesn't need std::bind1st
671 because the STL is being stupid
673 2004-12-26 Clinton Ebadi <clinton@unknownlamer.org>
675 * source/BotConfig.C (read_config): Implemented properly
676 (get_option_values): Implemented properly
677 (set_config_file): Fixed
679 2004-07-10 Clinton Ebadi <clinton@unknownlamer.org>
681 * bobot++.texinfo (Built-In Commands): Added empty stubs to the
684 2004-06-22 Clinton Ebadi <clinton@unknownlamer.org>
686 * source/BotConfig.C: New file (implementation of configuration database)
688 * source/BotConfig.H: New File (semi-generic configuration database)
690 2004-06-17 Clinton Ebadi <clinton@unknownlamer.org>
692 * bobot++.texinfo (Starting the Bot): New section
694 2004-06-14 Clinton Ebadi <clinton@unknownlamer.org>
696 * bobot++.texinfo (Protection): Added Section
697 (User Levels): Rewrote section to be useful
698 (bot.users): Added section
700 2004-06-12 Clinton Ebadi <clinton@unknownlamer.org>
702 * source/DCCChatConnection.C (connect): Checks to make sure the
703 person initiating a DCC CHAT with the bot is at least a FRIEND of
706 * README: Fixed a typo
708 * scripts/bobot-utils.scm (ctcp-quote): Implemented ctcp-quote
709 (bot:ctcp-quote): Renamed ctcp-quote to bot:ctcp-quite (whoops)
711 2004-05-28 Clinton Ebadi <clinton@unknownlamer.org>
713 * bobot++.texinfo (bot.conf): Finished section
714 (server syntax): New section, documents the bot.conf SERVER syntax
715 (channel syntax): New section, documentes the bot.conf CHANNEL syntax
717 2004-05-13 Clinton Ebadi <clinton@unknownlamer.org>
719 * source/Main.C (real_main): std::exit instead of exit
721 2004-05-12 Clinton Ebadi <clinton@unknownlamer.org>
723 * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the
724 constructor with `n' This should fix the segfaulting.
726 2004-01-28 Clinton Ebadi <clinton@unknownlamer.org>
728 * ChangeLog: Updated copyright notice
730 2004-01-09 Clinton Ebadi <clinton@unknownlamer.org>
732 * source/Interp.C (interp_init_helper): Register
733 bot:change-command-level
735 * source/ScriptCommands.C (ChangeCommandLevel): Added
736 ChangeCommandLevel to change the level a user needs to be to run a
739 * source/ScriptCommands.H: Added ChangeCommandLevel
741 2003-10-12 Clinton Ebadi <clinton@unknownlamer.org>
743 * source/String.H: Changed #define STRING_H to BSTRING_H
745 2003-08-04 Clinton Ebadi <clinton@unknownlamer.org>
747 * scripts/bobot-utils.scm (bot:sent-to-me?): New procedure, used
748 to see if a message was sent to the bot (this is better than
749 bot:match-to-me because the hook isn't invalidated when the bot's
752 * source/DCCConnection.H: Added `nuh' back and added an
754 Added setter `set_autoRemove(bool)'
756 * source/DCCConnection.H: Removed all friends
757 Added accessors (get_bot, get_lastSpoken, get_autoRemove; get_bot
758 reveals the pointer to the bot [PRIVATE POINTER] which probably
759 isn't so nice, but there isn't much to be done about it with the
760 current design of the bot)
762 * source/DCCChatConnection.H: Removed all friends
764 * source/DCCConnection.H: DCCConnection is now a pure virtual
765 class with the subclass DCCChatConnection
767 2003-07-29 Clinton Ebadi <clinton@unknownlamer.org>
769 * source/Socket.C (connect): log errors to the bot log instead of
772 2003-07-23 Clinton Ebadi <clinton@unknownlamer.org>
774 * source/Parser.C (parseMessage): use the find method of std::map
775 to find the command to call instead of [] and then extract the
776 pointer to the userFunction from that if it exists. This appears
777 to fix the crash when one uses an undefined command followed by
780 2003-04-09 Clinton Ebadi <clinton@unknownlamer.org>
782 * source/Interp.C (interp_init_helper): Bind bot:setfloodrate to
783 ScriptCommands::SetFloodRate
785 * source/ScriptCommands.C (SetFloodRate): New Method: SetFloodRate
787 * source/Bot.C (init_user_functions): Make SETFLOODRATE available
790 * source/Bot.H: Made MAX_MESSAGES writeable
792 * source/UserCommands.H: New method: SetFloodRate
794 * source/Commands.H: New method: SetFloodRate
796 2003-04-03 Clinton Ebadi <clinton@unknownlamer.org>
798 * configure.ac: Merged all AC_OUTPUTs at the end
800 2003-04-02 Clinton Ebadi <clinton@unknownlamer.org>
802 * scripts/bobot-utils.scm: Make exported symbols from
803 the-bot-module available in the guile-user module so that scripts
804 loaded with Interp::Load function.
806 2003-03-30 Clinton Ebadi <clinton@unknownlamer.org>
808 * scripts/bobot-utils.scm (bot:load-module): Loads a file from the
809 %bot:loadpath into its own module and returns that (unnamed) module
810 (bot:use-module): Calls bot:load-module and then adds the newly
811 loaded module to the (current-module)'s use-list
813 * source/Interp.C (interp_init_helper): New procedure to initialize
814 the-bot-module (this is the old Interp::Startup verbatim)
815 (interp_post_startup_helper): New procedure to export
816 the-bot-module from bot_module
817 (Startup): Now calls interp_init_helper and
818 interp_post_startup_helper to initalize the bot module system
820 * source/Interp.H: Added private variable bot_module to Interp
822 2002-11-04 Clinton Ebadi <clinton@unknownlamer.org>
824 * scripts/bobot-utils.scm: Added bot: to regex functions (yes,
825 this breaks existing scripts, this is the unstable tree after all)
827 2002-11-03 Clinton Ebadi <clinton@unknownlamer.org>
829 * source/Mask.C (match): Made Mask::match case insensitive
831 2002-09-23 Clinton Ebadi <clinton@unknownlamer.org>
833 * source/Interp.C (scm_apply_wrapper): turned off locking of
834 Interp::mutex to see if this makes the bot work again...and it
837 2002-09-07 Clinton Ebadi <clinton@unknownlamer.org>
839 * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated
840 everything to use aclocal/automake 1.6
842 2002-08-27 Clinton Ebadi <clinton@unknownlamer.org>
844 * source/DCCPerson.H (class DCCPerson): Added
845 UserCommands::DCCList as a friend (friends are better than the old
846 DCC() function at least).
848 * source/DCCManager.H (class DCCManager): Added
849 UserCommands::DCCList as a friend
851 * source/Interp.H (class Interp): Made function scm_apply_wrapper
852 a friend so it can lock Interp::mutex
854 * source/Interp.C (scm_apply_wrapper): Lock Interp::mutex if
855 MULTITHREAD is defined (it is always defined when scripting is
856 enabled) so that Sockets can be made multithreaded using
859 * source/DCCPerson.H: Removed DCC method and made Bot a friend
860 Made DCCManager a friend
862 * source/DCCManager.H (class DCCManager): Removed MAP() method
863 and made Bot a friend of DCCManager
865 2002-08-18 Clinton Ebadi <clinton@unknownlamer.org>
867 * source/Interp.C (Startup): Renamed bot:DCC-chat-send to
870 * bobot++.texinfo (Hook Types): Fixed a typo (I wrote
871 user!nick@host instead of the correct nick!user@host).
873 * source/Interp.C (Startup): Register bot:DCC-chat-send
875 * source/ScriptCommands.C (sendDCCChatMessage): Added method again
877 2002-08-08 Clinton Ebadi <clinton@unknownlamer.org>
879 * source/String.C (String): The std::string copy constructor now
880 extracts the c_str of the std::string and then takes the strlen of
881 that before copying it. This fixes a bug with DCC where if you did
882 e.g. "!help" the bot would reply with "No TOPIC PRIVMSG FOUND" or
883 something like that, depending on what the last message was
884 because Socket will insert a \0 into its semi-static buffer, so
885 the len of the String will not equal the strlen of its char*.
887 2002-08-07 Clinton Ebadi <clinton@unknownlamer.org>
889 * source/DCCPerson.H: Removed destructor (I = idiot)
891 * source/DCCConnection.H: DCCManager is now a friend of
892 DCCConnection (ugh, the bot has way too many friends).
894 * source/DCCPerson.H: Added DCC member that returns a const
895 DCCConnection* (the dcc connection). This isn't saved anywhere
896 because when a DCCPerson is destroyed, its connection is also
899 * source/Bot.H: dccConnections is now a DCCManager
901 * source/DCCPerson.H: Added destructor
902 Added handleInput method
904 * source/DCCManager.C: New file
905 (addConnection): Wrote method, add a DCCConection to the manager
907 * source/DCCManager.H: New file
909 * source/Interp.C (Startup): Register bot:DCC-chat-send
910 (Startup): Removed sendDCCChatMessage stuff
912 * source/ScriptCommands.C (sendDCCChatMessage): New method:
913 sendDCCChatMessage (to, message) sends message to to.
915 * source/DCCConnection.C (connect): Run DCC_CHAT_BEGIN hook with
916 one arg: from (user!nick@host).
918 * source/DCCParser.C (parseLine): Runs DCC_CHAT_MESSAGE hook with
919 two args: from (user!nick@host) and line
921 2002-08-06 Clinton Ebadi <clinton@unknownlamer.org>
923 * source/Interp.C (Startup): Two new Scheme values:
924 hooks/dcc/chat-begin and hooks/dcc/chat-message for the
925 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE hooks.
927 * source/BotInterp.H: Added two new enum values to Hook:
928 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE for the DCC chat start and DCC
931 2002-08-05 Clinton Ebadi <clinton@unknownlamer.org>
933 * source/Parser.C (parseCTCP): Removed call to htonl and fixed
934 DCC! Ack, sockets take their arguments in network byte order so
935 there is no need to convert to host...now DCC _sort of_ works.
937 2002-08-04 Clinton Ebadi <clinton@unknownlamer.org>
939 * source/UserList.C (save): Increment iterator twice to get around
942 * source/ServerQueue.C: Now sends SEND_* hooks instead of
943 triggered general hooks.
945 * source/Interp.C (Startup): New scheme side defines: hooks/send/*
946 (* = the new SEND_ hooks, but lowercase).
948 * source/BotInterp.H: New hook types (SEND_..., ... = ACTION,
949 CTCP, PUBLIC, MESSAGE). These are triggered on send messages.
951 2002-08-01 Clinton Ebadi <clinton@unknownlamer.org>
953 * source/Bot.C (set_log_file): Oops! Fixed logging. Now the bot
956 * source/Socket.C (readLine): Now uses a static std::string that
957 starts out with 512 chars. This will never need to be resized for
958 usualy IRC messages, but might be for DCC messages
960 2002-07-31 Clinton Ebadi <clinton@unknownlamer.org>
962 * scripts/bobot-utils.scm (not-from-me): New syntax.
964 * source/ScriptCommands.C (AddHook): Now takes another optional
965 arg--name that will name the hook (see the hooks section in the
966 manual for what this does).
968 * source/BotInterp.H: Added name field to Hook
970 2002-07-29 Clinton Ebadi <clinton@unknownlamer.org>
972 * source/ServerQueue.C (sendPrivmsg): Now calls hooks on own
973 PRIVMSGes because the IRC server doesn't echo them back to the
974 bot. This could be useful for something (e.g. log script).
976 2002-07-27 Clinton Ebadi <clinton@unknownlamer.org>
978 * source/Interp.C (Shutdown): Runs bot:exit-hook hooks
979 (Startup): New var for Scheme: bot:exit-hook. Calls the thunks
980 associated with the hook when Interp::Shutdown is called (bot exit).
982 2002-07-23 Clinton Ebadi <clinton@unknownlamer.org>
984 * source/BotInterp.H (Hook<): Changed behavior of Hook's <. If a
985 hook is greater than or less than the other hook, only the
986 priority is considered. However, if both hooks have the same
987 priority, then the fallthru-ness is considered, with fallthru
988 hooks being greater than non-fallthru hooks.
990 * source/BotInterp.C (hptr_lt): Added this static function to be
991 used to sort the hooks list (now hooks should be sorted using
992 Hook's operator < instead of using pointer comparision, meaning
993 the new hook system will work correctly)
995 * scripts/bobot-utils.scm: Make bot:log use for-each instead of
996 map because we don't need the result of the displays (this would
997 just be a list of #<undefined> values and is a waste of memory).
999 2002-07-13 Clinton Ebadi <clinton@unknownlamer.org>
1001 * source/Bot.C (Bot): userFunctions is now a map for efficiency
1002 (worst case search is now NlogN instead of N). This improvement is
1003 not as drastic as the one gained by making the Parser functions
1004 list a map (because we don't scan this map for every message), but
1005 it helps to clean up the code
1007 2002-07-12 Clinton Ebadi <clinton@unknownlamer.org>
1009 * source/Parser.H: Removed userFunctionsStruct
1011 * source/Interp.C (Startup): ScriptCommands::sendCTCP registered
1012 as bot:send-CTCP for Scheme
1014 * source/ScriptCommands.C (sendCTCP): Wrote sendCTCP
1016 2002-07-11 Clinton Ebadi <clinton@unknownlamer.org>
1018 * source/ServerQueue.C (sendUser): Changed . . in USER command to
1019 0 * (which is the Right Way to because <mode> must be a number...)
1021 * source/Parser.C (init): New method of Parse. This initalizes the
1022 functions map. functions replaces the old functions array, and
1023 should yield better performance (since the functions array had to
1024 be scanned for every incoming message)
1026 * source/Parser.H: New member, functions (private)
1028 2002-07-10 Clinton Ebadi <clinton@unknownlamer.org>
1030 * source/Interp.C (Startup): New symbols: bot:user-*
1031 [none|user|trusted|friend|master] are defined in Scheme as the
1032 different levels of the users.
1033 (Startup): All bot-* variables are now bot:*
1035 2002-07-09 Clinton Ebadi <clinton@unknownlamer.org>
1037 * source/Bot.H: Made some variables private because they shouldn't
1038 be changed at runtime
1040 * source/Parser.C (parseCTCP): Reneabled DCC CHAT (I want to test
1041 this out to see if it works and make it work)
1043 * source/Bot.C (Bot::Bot): New var: logs_dir. Set to the log file
1046 * scripts/bobot-utils.scm: Fixed a typo (I forgot the / after
1047 scripts in the user scripts dir) that made bobot++ not able to
1048 load scripts from the user scripts dir
1050 2002-07-08 Clinton Ebadi <clinton@unknownlamer.org>
1052 * source/BotInterp.C (RunHooks): Changed iterators to
1053 reverse_iterators because the hooks list is sorted in ascending
1054 order--higher priority and fallthrough hooks appear _after_ the
1055 lower priority and non-fallthrough hooks.
1057 * source/Main.C (print_long_help): Added function
1058 (print_short_help): Renamed from printUsage
1059 (namespace): Most stuff in here is now defined in an anonymouse
1060 namespace so it doesn't have external linkage
1061 (real_main): Uses getopt_long instead of getopt. Added several
1062 command line arguments (bobotpp --help for a full list).
1064 * scripts/bobot-utils.scm (bot-load): Function moved from
1067 * source/Interp.C (Startup): Autoloads
1068 PREFIX/bobotpp/scripts/bobot-utils.scm now
1069 (Startup): New Scheme variable: bot-sys-scripts-dir (system
1072 * source/bobot-scheme.scm.in: Removed
1074 * source/Makefile.am: Removed bobot-scheme.scm compiliation
1076 * configure.ac (PREFIX): configure.ac defined prefix now
1078 * source/Main.C (real_main): Default configuration is now read
1079 from /etc/bobotpp/default
1080 * source/bobot-scheme.scm.in: Added file. This defines the
1081 'bot-load' procedure which will load a file from
1082 $HOME/.bobotpp/scripts/ or @datadir@/bobotpp/scripts/ if the
1083 script doesn't exist in the user script dir.
1085 2002-07-01 Clinton Ebadi <clinton@unknownlamer.org>
1087 * bobot++.texinfo: Started docs (just a skeleton right now)
1089 * source/ScriptCommands.C (AddHook): Now takes pri and fall opt
1090 args to set a hooks priority and whether or not it will
1091 fallthrough. These args are optional.
1093 * source/Interp.C (Startup): addhook now takes 3 req and 2 opt args
1095 * source/BotInterp.C (AddHook): Now uses priority and fallthrough
1096 (RunHooks): exec fallthrough hooks first.
1098 * source/BotInterp.H: Changed Hooks to have priority
1099 Added fhooksMap to BotInterp (fallthrough)
1101 * source/UserCommands.C (AddShit): Converted to use Commands
1103 2002-06-21 Clinton Ebadi <clinton@unknownlamer.org>
1105 * source/Commands.C (AddUser): Fixed a one-off (function call was
1106 before a brace instead of after one) that caused a segfault when
1107 the user mask was a wildcard
1109 2002-06-20 Clinton Ebadi <clinton@unknownlamer.org>
1111 * all files: Updated address of the FSF
1113 * source/UserCommands.C (AddUser): Uses Commands now instead of
1114 manipulating the bot directly
1116 2002-06-18 Clinton Ebadi <clinton@unknownlamer.org>
1118 * source/ScriptCommands.C (AddShit): Filled in function.
1120 * source/Interp.C (Startup): Bind bot-adduser to
1121 ScriptCommands::AddUser instead of Action
1122 (Startup): Bind bot-addshit to ScriptCommands::AddShit
1124 * source/ScriptCommands.C (AddUser): Filled in function
1126 * source/ServerList.C (delServer): Changed (n - 1) to n...n-1
1127 would have caused problems if you used more than one server
1129 * source/Parser.H: Changed const char* to String in userFunctionStruct
1131 * source/String.H: Added std::string compatibility members
1133 * configure.ac: You can now disable Crypt and scripting
1135 * source/*: Added #include "config.h" where needed
1137 * configure.ac: Added AM_CONFIG_HEADER
1139 * config.h.in: added file
1141 * source/Queue.C: Didn't notice iostream.h here! Fixed
1144 Copyright 2002,2003,2004,2005 Clinton Ebadi
1145 Copying and distribution of this file, with or without modification, are
1146 permitted provided the copyright notice and this notice are preserved.