]> jfr.im git - erebus.git/blobdiff - TODO
admin_config - add !getconfig, remove some unused functions
[erebus.git] / TODO
diff --git a/TODO b/TODO
index 953ef4e076fee958b943eb99b4270b5175efdab5..b849f98c10a5aea59a36dcfe45e2f93fa6d30b96 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,34 +1,64 @@
-== other ==
-module: user (global access) management
-module: channel access management
-module: chanop (kick/ban/etc)
-module: userinfo (store f.e. country code, for other modules)
-
-
-== ?????? ==
-- 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)
-v1
-       ability to modify parameters (HINTNUM, etc) & store in db instead of code
-       voting for next round target points
-       question management system done via irc AND web interface (search/add/delete/edit)
-       automatic periodically displaying top 10 by country (assigned countries by stored player stats)
-
-
-v2
-       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)
-       live high score table on webpage (stats accessible)
-       error reporting system (one exists with hashie but it sucked and no one checked it)
-       question categories (able to change different question lists currently in use. i.e. tv/movies/music/general/etc categories)
-       auto topic changes for last round won (configurable by a text file or similar)
-       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)
+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