Done (2.2): * 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 * More detailed script error reporting * Commands::sendCTCP, Commands::sendCTCPReply * Add DCC_CHAT_END hook for Scheme * Implement ctcp-quote Solved By Inactivity: * Remove gh_* when Guile 1.8 is released Guile 1.8 was released ages ago; no need to put this off to 3.0 * Add a networked interface to guile repl Guile Debugging Server (GDS) does a fine job of this albeit only intentionally on the localhost. The bot is not particularly threadsafe and so the usefulness of GDS is limited... 2.4: * Finish converting UserCommands to use Commands * Eliminate String class * Make internals threadsafe - Need to lock *List, Hooks, and ServerQueue it seems * 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 - Generate help dynamically rather than using a static file - Commands register help entries * Enhance the scripting layer - Implement ctcp-dequote - Finish adding commands to Scheme for sending messages - Finish adding hooks/send hooks - Add commands to delete a hook - Saner module loading - Higher level interface (e.g. define-command NAME (ARGS) vs define + bot:addcommand) - New API in module (bobot++ FOO) instead of (bobotpp ...) to allow old script to continue working with the old interface * DCC FILE support (sending and recieving) * Finish configuration database class * Finish Texinfo manual * Enhance global UserList - Add something similar to the UserList per server, but storing *every* user ever seen in any channel - Channel user lists should merely maintain pointers into this - Rename UserList to AuthenticationList or similar to reflect its actual purpose, and clean up its interface 2.4/3.0 (2.4 iff backwards compatibility is maintained, 3.0 otherwise): General: * 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). * 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 Definitely 3.0: * 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: * Make it possible to use Scheme functions in the Parser itself