Done: * DCC CHAT min user level * Lots of hooks related stuff that I never wrote down * Abstract DCC support so that DCC FILE may be easily implemented * Wrote config database class * Compile without warnings * bot:protection/[none|no-ban|no-kick|no-deop] constants * bot:aop/[no|yes] constants * Utils::valid_nickname_p should have a configurable max nick length 2.2: * Finish Texinfo manual * Register a lazy catch handler (in Interp::Startup) that prints more debug info to the log (filename, line number, column number, etc.). Check the mod_guile source for the lazy catch handler in it. * Utils::valid_nickname_p should have a configurable max nick length (now that most networks allow for longer than nine character nicks). This is dependant upon the new configuration system * Finish adding commands to Scheme for sending messages (e.g. bot:send-CTCP to send a CTCP message) * Add util functions for doing stuff like quoting CTCP messages * Finish adding hooks/send hooks * Add DCC_CHAT_END hook for Scheme * Commands::sendCTCP, Commands::sendCTCPReply 2.4: * Use configuration database class * Extend AOP to support +v (0 = no op, 1 = +o, 2 = +v) * Add !setcommandlevel (move ScriptCommands implementation to Commands and add a UserCommands) * Improve the help system 2.4/3.0 (2.4 iff backwards compatibility is maintained, 3.0 otherwise): General: * Eliminate String class * Finish converting UserCommands to use Commands * Audit code and see what data in classes should be made private and have getters/setters added (e.g. logFileName in Bot--if this is changed the log file doesn't change after the Bot is started). * DCC FILE support (sending and recieving) * Possibly convert BotConfig to use boost::any instead of std::string as t_value * Remove StrinkTokenizer, replace with boost::tokenizer * Remove string procedures from Utils, replace with boost::string_algo * Use boost::timer for internal timers Scripting: * Add commands to delete a hook - return an iterator to the Hook - this would require a new SMOB to be created - Scheme could pass Hook objects around and do nifty things - At least allow all hooks of a type with the same name field to be deleted at once (also all hooks with the same name). Also allow deleting based on the regexp Networking: * Add a networked interface to guile repl - This can (should) be done as a script, but requires non-coop threads support to be done easily (and thus requires Guile 1.8) - Admins only - Telnet - Store authorized users and passwords in bot.telnet file - Bot master can add new telnet users - MUST HAVE PASSWORD * See if Socket::readLine could be sped up (profile it first to see if it even matters) Definitely 3.0: * Remove gh_* when Guile 1.8 is released * Replace large select-loop in Bot::waitForInput with multithreaded - To clarify: There will be one thread for DCCs and another thread for the current irc server connection, each with its own select loop. There may also be a thread for the network repls if I implement those. Maybe: * New config values in config db should be added before old values (this is faster but breaks the way server lists work in 2.x) * Make it possible to use Scheme functions in the Parser itself