object-Object / Yot

A moderation and utility Discord bot, written in Lua.
MIT License
4 stars 1 forks source link

2.3 todo list #2

Open object-Object opened 4 years ago

object-Object commented 4 years ago

Commands

Settings

  • [ ] welcome_channel

Features

  • [ ] join/leave messages (customizable)
  • [ ] ability to customize ban messages

Reaction Menus

  • [ ] make this
  • [ ] use for settings command

Other

  • [ ] strings.en-CA.json
  • store permission names, english enum as key (?)
  • [ ] use discordia.storage for:
    • [ ] conn
    • [x] options
    • [x] strings table
    • en-CA
  • [x] organize modules in folders by event and event group (e.g. modules/client/messageCreate/warningManager.lua)
  • [ ] don't allow people to warn/mute/ban people who are >= them in the role list
  • command.checkRoleOrder
  • false/nil by default
  • table of argument numbers that are members to be checked?
    • or just check all member args
  • check role order if set
  • make this a guildSetting
    • ignore_role_order
    • default false
  • [ ] don't allow warning_kick_level and warning_ban_level to be equal
  • [ ] is_enabled and is_disabled methods for settings columns
  • [ ] rename $settings update to $settings set and make it only work if the setting is enabled
  • [ ] make $settings enable only work if the setting is disabled
  • [ ] generic functions for testing if Yot can do something
  • argument for required discord permissions?
  • [ ] generic functions for testing if a user can do something
  • [ ] add reason handling to all the kicks and bans
  • generic function for this?
  • [ ] put the responsible user in the audit log reason
  • [ ] handle false returns from kick/ban method in $kick/$ban
  • [ ] rename command.permissions to command.userPermissions
  • [ ] command.botPermissions
  • for perms the bot needs for a command to be runnable
  • check after command.userPermissions
  • [ ] make the persistent roles embed mention the roles
  • [ ] add arg validation to the command handler, instead of each command
  • commands would have command.arguments table, each entry in table is also table with properties about the argument
    • name, type
    • checkRoleOrder for member args
  • table in command handler with valid types of arguments (e.g. member, user, message)
  • "The command could not be run because the user in argument 1 could not be found."
  • handle reasons here as well
  • [ ] respond to DMs containing discord links by giving them the bot invite link
  • [ ] new tables: guild_modules, guild_commands
  • column for each module/command, and for guild id (foreign keyed to guild_settings)
  • value between -1 and 1
  • -1: not set, use defaults
  • 0: disabled
  • 1: enabled
  • [ ] per-guild language settings (need people to translate everything)
  • [x] put commands in categories / folders
  • [x] get rid of commandHandler.doSubcommands, make commandHandler.doCommands also handle subcommands
  • [ ] pcall command:run() so commands don't fail silently
  • [ ] Improve error messages shown to users
  • [ ] Allow blacklisting users
  • [ ] Ratelimit commands
  • [ ] Only tell people about DM forwarding once
  • [ ] Let users set DM preferences
  • [ ] userSettings?
  • [ ] Use webhooks for forwarding DMs, sending errors, etc
  • [ ] Hourly status refresh
  • [ ] Make it possible for subcommands to have different permissions
  • [ ] Redo the settings command to use a reaction menu - put the old settings commands under $settings manual
  • [ ] In the big unified argument handler, have it show all of the issues, not just one at a time
  • [ ] In the big unified argument handler, let permissions be conditional (e.g. only require kickMembers for $warn if the server has enabled kicking members at a level)
  • [ ] setting.type to help give better choices in reaction menu
  • [ ] Status: Adding reactions... / Status: Ready
  • [ ] If a warned user is to be kicked but isn't in the guild, silently ignore the kick; just treat it as a normal warning
  • [ ] text fallback if link embeds are disabled?
  • [ ] bring back the coloured dots for warning status
  • [ ] put embed colours in options.lua
  • [ ] require users to have the permissions of a command before being able to change them, in addition to whatever the permissions on the settings command are
  • [ ] arguments with spaces (eg. reasons) should be enclosed in quotes