You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
BuildTools cc39a73782 add rel. paths for plugins to todo 3 years ago
default_plugins split config-defined plugins and builtin plugins 4 years ago
plugins split config-defined plugins and builtin plugins 4 years ago
.gitignore every single time. 4 years ago
LICENSE Initial commit 4 years ago
README.md add rel. paths for plugins to todo 3 years ago
client.py add a few REST api wrappers 3 years ago
config.json hot reloading and authentication 4 years ago
disc_api.py api stuff werks, client will idle and get events. 4 years ago
grim_logger.py api stuff werks, client will idle and get events. 4 years ago
main.py stray variable from messier times (we don't talk about back then) 3 years ago
plugin_manager.py plugin handler spawns daemon threads 3 years ago

README.md

modular-discord-bot-fw

framework for discord bots that uses contained files for individual feature plugins that can be modified and reloaded on the fly

basic structure:

  • client class has implementations for handling opcodes
    • event response is up to the client (!!)
    • this lets us expose events for plugins to hook into, but keeps core API interaction defined in-class
    • any and all bot features should be useable via independent feature plugins
      • these are dynamically found and run, so they can be hotloaded, modified, etc. without disconnecting or restarting the whole bot session

todo board

core:

  • basic rate limiting
  • make sure broken sockets are properly addressed with a resume or reconnect
  • initial presence in config
  • full REST api implementation
  • relative/nonreal ecscapt values for the config's plugin.py

plugins:

  • save session config to file
    • re: runtime modufication of authenticated users and such

done:

  • plugin manager & hook integration
  • default plugins so the bot does something out of the box
    • plugin reloading, user (command) authentication, etc. will also probably be written in plugin form
  • take config as cli param
  • plugins need to be asynchronously run (or something)