X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/a5c12cc792d933dcbf9308aca9ba654a7ddb203a..HEAD:/TODO diff --git a/TODO b/TODO index 062b1d6..b849f98 100644 --- a/TODO +++ b/TODO @@ -1,45 +1,64 @@ -== other == -module: help (generic help system) -module: user (global access) management -module: channel access management -module: chanop (kick/ban/etc) -module: userinfo (store f.e. country code, for other modules) - -modlib: allow lib.hook with a first argument list or tuple (aliases) - -ctlmod: needs to print out a traceback. traceback.print_exc(). - -core: watchdog timer (check how long since last received, if >5m restart) - - -== ?????? == -- Store User and Channel objects -- Add no-such-command error to Bot().parsemsg - - -== trivia == -[X] dynamic question/answers (simple maths e.g. n+7=randomnumber(4-9), what day of the week was it yesterday) -[X] twitter notifications of new rounds -[X] multiple answers (how can you cook an egg? boil|fry|poach|scramble) -[X] progressive clues -[X] anti-cheat mechanism (copy/paste random characters) -[X] ability to modify parameters (HINTNUM, etc) & store in db instead of code -[X] question management system done via irc -[X] voting for next round target points -[X] automatically change topic -[X] automatic periodically displaying top 10 by country (assigned countries by stored player stats) - implemented as part of !top10 and TOPIC instead -[X] error reporting system (one exists with hashie but it sucked and no one checked it) -[X] live high score table on webpage (stats accessible) -[X] auto topic changes for last round won (configurable by a text file or similar) - - -convert to using MySQL for question/stat/game storage -multi-channel -team play (Create/edit/addplayer/removeplayer) needs password & email address for team captain -stats. lots of them. (per round/lifetime stats, fastest, biggest streak, team stats, etc) -question categories (able to change different question lists currently in use. i.e. tv/movies/music/general/etc categories) -small challenges for preset targets (e.g. 1st to 20 points/most points in 10 mins) player vs player, team vs team, free for all) -question management system done via web -team play (Create/edit/addplayer/removeplayer) needs password & email address for team captain -question categories (able to change different question lists currently in use. i.e. tv/movies/music/general/etc categories) +vim: expandtab sw=2 ts=2 + +- add (optional) timeout for wait_for_hidden_host + +- ability for modules to register additional sockets to monitor + - this is basically done but needs more testing on non-TCP and error conditions + the module interface should probably be simplified too + - also FDs so the bot can monitor a pipe + - add a pipe which allows to input commands even when IRC connection is gone + this might be difficult since there won't be a bot or user or chan object... + +- add optional message wrapping in the core (instead of just truncation) + +- implement timers in the core and/or modlib, by adjusting the select timeout whenever a timer is pending. + call timers as part of the event loop. + this has the potential to remove a LOT of the threading. + +- fix crash when joining a channel that is forwarded (or otherwise force-joined by the server) + +- fix urls: + - disallow private addresses as much as possible + - add a time limit if possible + +- add module with !join / !part / is there clevel management? etc + +- add SQL "migrations" support to core for modules + and store module data in SQL instead of json's + +- better config... or better yet just move non-DB-related config into the database + - needs a better format if its used for generic module data; particularly because /\s#/ starts a comment instead of naming a channel + - needs to retain comments when config file is saved + +- a module for administering channel users (copy from admin_user) and adding/removing channels + +- modlib function for parsing option arguments (like !MODLOAD has now) + +- modlib 'onload' hook so modules can easily do stuff on loading + (if this exists use it to replace _key() in steam.py) + +- modlib 'need_config' function to tell the modlib you refuse to start without + a config value being specified + +- add new hook types + - 'regexhook' for watching messages matching a regex + (should this be supported in core or + just by modlib translating into a numhook('PRIVMSG')?) + - 'msghook' for watching all messages (like numhook('PRIVMSG') but + you don't have to handle parsing) + - add a way to specify a config value as a hook parameter without needing + parent (i.e. delayed resolution) + +- weather module using accuweather API, forecasts + +- fix softdeps, if they're used through lib.mod() or parent.module() they break, need a `'mod' in modules` check somewhere + +- ctlmod.unload: track what modules are unloaded and return that info to caller + +- lookup User object by auth + modules should be able to (attempt to) look up a User object by auth, that way if the user is online + !clevel and !glevel can look up their existing object and adjust the permissions there + +- sockets module: wrapping should operate on byte-level not string-level + sentences with unicode text get wrapped wrong + ... but the wrapping point needs to be determined at the string-level ugh