If we implement moderation commands, I would like to include the following features:
High level
Most commands will function just as with any other moderation bot, with a few differences:
Strikes
Every time a user is warned, he will get a strike. It is possible to set a mod action as soon as a member hits a certain amount of strikes.
Safe Purge
It is sometimes hard to purge the right amount of messages. I would like to introduce 2 mechanisms:
!purge-until <messageID>
This command will remove all messages until the specified message. So you can just right klick the last message that should be kept, copy the ID, and delete anything that came after it.
!purge-safe <number> <user>
The bot will give a preview of what messages will be deleted. The mod can then confirm if those should be deleted.
For example:
The following messages will be deleted:
- @User1: 5 messages
- @User2: 2 messages
Are you sure? <yes/no>
Automod
We should be able to automatically detect:
Discord invite links
Mention spam
Regular spam? => Maybe learn what is usually considered spam. Could be combined with some kind of voting mechanism that gets started by the bot and requires member approval.
Trial Mods
Giving mod permissions can be tricky because you have to trust the member, which is always difficult online :). We should add a mechanism that reduces the risk of abuse by a mod, while still giving him the ability to efficiently moderate the server.
One way would be to "limit" the number of specific commands that a person can execute. For example we could limit the number of "bans" that a mod can do to 3 per 6 hours (configurable). That way mods can still moderate the server, but not abuse their powers before getting seen by another mod or an admin.
We could also "soften" the commands of "untrusted" mods. So if they do !ban, it is basically just a "!mute" until another mod verifies the action, then the person will be banned. I don't know if this makes sense though because it will come with a lot of problems (should the !ban also delete the messages, etc.).
Logging
Deleted messages should be kept, at least temporarily, to be able to review softbans and bans.
Reporting
People can report others using the !report <reason> command. This will add a log into a moderation channel where moderators can take action if necessary.
DM Advertising
Sadly DM advertising is impossible for bots to detect. However, we could add a feature where people can report DM advertisers !report-dm (ideally including a screenshot). (similar to the reporting feature above).
Cross Server Moderation
I don't know if this is allowed (Discord ToS?), but I feel like it would be helpful if server owners could get some kind of info about a user from other servers. There is already a bot that has a "global ban list", so they review bans and then ban them across all servers that have the bot installed. This is a little extreme, but I think we could at least include the information when a member joins the server. (Like a join message, but this should be seen by mods only I guess). Something like user joined, he has been banned in x servers and kicked y times. That way mods know who to keep an eye out for. We might even give an option to assign special roles for people who are "flagged" like that (so they get put in a welcome room where they have to agree to the rules for example).
I think this feature would be especially useful to help with the DM advertising problem. I suppose if people DM advertise, they do so on many different servers. Maybe they even created separate accounts to DM advertise. So as soon as discord implements a "see member list"-permission (there is a discord feedback open about that, sadly not that many upvotes), we could use that feature to put those people in a special role.
Commands
!mute <user> <time> <reason>
!warn <user> <reason>
!kick <user> <reason>
!softban <user> <reason>
!ban <user> <reason>
!history <user>
!vote <command> <args>
Can be used by regular users. Will start a voting process if the command should be executed. If either a mod/admin approves, or a predefined number of regular users, then the action will be executed.
If we implement moderation commands, I would like to include the following features:
High level
Most commands will function just as with any other moderation bot, with a few differences:
Strikes
Every time a user is warned, he will get a strike. It is possible to set a mod action as soon as a member hits a certain amount of strikes.
Safe Purge
It is sometimes hard to purge the right amount of messages. I would like to introduce 2 mechanisms:
!purge-until <messageID>
This command will remove all messages until the specified message. So you can just right klick the last message that should be kept, copy the ID, and delete anything that came after it.!purge-safe <number> <user>
The bot will give a preview of what messages will be deleted. The mod can then confirm if those should be deleted. For example:Automod
We should be able to automatically detect:
Trial Mods
Giving mod permissions can be tricky because you have to trust the member, which is always difficult online :). We should add a mechanism that reduces the risk of abuse by a mod, while still giving him the ability to efficiently moderate the server.
One way would be to "limit" the number of specific commands that a person can execute. For example we could limit the number of "bans" that a mod can do to 3 per 6 hours (configurable). That way mods can still moderate the server, but not abuse their powers before getting seen by another mod or an admin.
We could also "soften" the commands of "untrusted" mods. So if they do !ban, it is basically just a "!mute" until another mod verifies the action, then the person will be banned. I don't know if this makes sense though because it will come with a lot of problems (should the !ban also delete the messages, etc.).
Logging
Deleted messages should be kept, at least temporarily, to be able to review softbans and bans.
Reporting
People can report others using the
!report <reason>
command. This will add a log into a moderation channel where moderators can take action if necessary.DM Advertising
Sadly DM advertising is impossible for bots to detect. However, we could add a feature where people can report DM advertisers
!report-dm
(ideally including a screenshot). (similar to the reporting feature above).Cross Server Moderation
I don't know if this is allowed (Discord ToS?), but I feel like it would be helpful if server owners could get some kind of info about a user from other servers. There is already a bot that has a "global ban list", so they review bans and then ban them across all servers that have the bot installed. This is a little extreme, but I think we could at least include the information when a member joins the server. (Like a join message, but this should be seen by mods only I guess). Something like
user joined, he has been banned in x servers and kicked y times.
That way mods know who to keep an eye out for. We might even give an option to assign special roles for people who are "flagged" like that (so they get put in a welcome room where they have to agree to the rules for example).I think this feature would be especially useful to help with the DM advertising problem. I suppose if people DM advertise, they do so on many different servers. Maybe they even created separate accounts to DM advertise. So as soon as discord implements a "see member list"-permission (there is a discord feedback open about that, sadly not that many upvotes), we could use that feature to put those people in a special role.
Commands
!mute <user> <time> <reason>
!warn <user> <reason>
!kick <user> <reason>
!softban <user> <reason>
!ban <user> <reason>
!history <user>
!vote <command> <args>
Can be used by regular users. Will start a voting process if the command should be executed. If either a mod/admin approves, or a predefined number of regular users, then the action will be executed.!purge <number> <user>
!purge-safe <number> <user>
!purge-until <messageID>
!automod invite <command> <args>
!automod mentionspam <numberOfMentions> <command> <args>
!automod strikes <numberOfStrikes> <command> <args>
!config muteRole <role>
Set the role that will be assigned with themute
command.!config moderationLogChannel <channel>
Set the channel where moderation logs will be posted.!config moderationRole <role>
Define a role that can execute moderation commands, even if they don't have the required permissions.