X-Git-Url: https://git.hcoop.net/clinton/bobotpp.git/blobdiff_plain/31433d2778da92ba2e8c67e6811d077246d11efd..cbd61b54f9e74dafab0ebbd3d79bac93d188f38f:/TODO diff --git a/TODO b/TODO dissimilarity index 97% index 53b01f1..524470c 100644 --- a/TODO +++ b/TODO @@ -1,68 +1,68 @@ -2.2 will be released when most of these are done - -General: -* Compile with -Wall and kill all warnings -* Make String more compatible with std::string - - Make operator >> act like all other >>'s, and add getline - + Add compatibility operators to String -* Remove gh_* and other deprecated guile stuff -* finish ISO C++-ification (remove deprecated uses of static, casts) -* Add Scheme utils function to convert "normal" dates into time since - 1970. -* Make bot-random use the Guile RNG instead of C RNG (better?) -* Add commands to delete a hook - - return an iterator to the hook and let the user kill it? - - OR give the hook a new field ("name") and use that - - all part of the new hooks system I guess -* Convert UserCommands to use Commands -* Expand Commands to do everything the bot can do -* Add new commands to Scheme afterwards -* It would be interesting to see what SWIG could do here... - (eliminate ScriptCommands in favor a SWIG wrapper maybe?) Why - though? Well, maybe not kill ScriptCommands completely. Just make - it's interface a simple wrapper around Commands that automatically - adds the Bot* first arg as Interp::bot. This would eliminate a lot - of the type checking. OTOH, I'll have to look in to this more when - I get back. -* Use getopt long -* User config dir - -Networking: -* Add a networked interface to guile repl - - Admins only - - SSH? Telnet? DCC-Chat? - - Access to repl will require use to authenticate - - Allow the load & reloading of scripts w/o restarting bot - - Allow server to be disabled at run because of security... -* Enable DCC support (I have to find docs on DCC first!) -* Add Channel logging (log full text of channel if enabled) - -Config: -* Change bot.conf syntax (just load it with guile) -(set-cmdchar #\!) -(set-name "DumbBot") -(set-userlist "bot.users") -(set-shitlist "bot.shit") -(set-logfile "bot.log") - -(add-server "irc.openprojects.net") -(add-server "trollaxor.com") - -(add-channel "#bobot") ; all networks - -;;; note that (add-server) would be a macro that defines -;;; a symbol for the network -(server-add-channel irc.openprojects.net "#umbclinux:::") -(server-add-channel irc.openprojects.net "#tpu:::") -;;; add-channels just maps args to server-add-channel -(server-add-channels trollaxor.com "#trolls:::" "#crapflooders:::") -(server-set-name trollaxor.com "TrollBot") - - - Support per-server channels, logfiles, cmdchars, everything... -* Move default config location to PREFIX/Bobot++/default/ and allow - users to specify a config folder under PREFIX/Bobot++ to use with - -c. E.g. To use PREFIX/Bobot++/foo/, call bobotpp -c foo. Keep -f - and -d. - -Documentation: -- Texinfo manual (including scripting section) \ No newline at end of file +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 +* Convert Hooks and ServerQueue to internally use a std::priority_queue<> +* 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 + +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 \ No newline at end of file