SideProjectGuys / invite-manager-bot

A discord bot that tracks invites and much more
https://docs.invitemanager.co/
GNU General Public License v3.0
165 stars 135 forks source link

Moderation commands #62

Closed AndreasGassmann closed 5 years ago

AndreasGassmann commented 6 years ago

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:

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 the mute 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.

santium commented 6 years ago

I like this idea a lot. It will open the door for new users as well as additional features in the future.

Valandur commented 5 years ago

Initial release with v5. Open separate issues for bugs with mod commands