Added a special Scripting command group and implemented Fictionscript Alpha
New decorators for commands:
@slow_command marks a command that will take a long time to return; the bot will react with an hourglass when it starts working on such a command, and will remove the hourglass when it's done.
@auto_reply is an important one. This converts any string returned by the command to a CommandReply. A command that returns a CommandReply will automatically have its output sent to the user - with no need to call message.reply() inside the command handler itself. This makes the command work waaaaay nicer with the scripting system.
Also added some more abstract attributes to make cmd_help and cmd_cmds work a bit better. If you want a better explanation than that, pull me into a call about it
General architectural changes
@auto_reply, as described above
Partial Replies - a way to have multiple command handlers with the same name work nicely together. this uses those abstract attributes i mentioned before
CommandFailure, a return value for command handlers to use to signal errors
Any exception thrown inside a command handler will have its message and traceback packed into a CommandFailure automatically - this is useful for debugging, but custom CommandFailure messages look nicer, especialy for errors that are known to be possible, like invalid user input
content interceptors: command groups can now define a function that will modify the content of all incoming messages. this is only used for arcane scripty reasons rn, but I figured I should let people know about it
help messages are structured differently now: the name of the handler should no longer be included; it is appended automatically
Made "UPLOAD_TO_SUPABASE" a .env option, since I don't have a URL/Key so this was keeping me from running the app