Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement automatic chat cooldown to prevent spamming and selfbots #162

Open
Stefatorus opened this issue Mar 17, 2022 · 3 comments
Open

Comments

@Stefatorus
Copy link

I propose implementing a system to automatically enable chat cooldown when there is a high risk of rules being broken. For that, a "chat risk scoring system" may be useful, where each action is given a penalty. When the penalty stacks up, the bot will automatically implement timeouts to keep the chat safe and limit what spammers can do.

Example:

  • Sending normal message: 1 penalty score
  • Mentions to normal users: 3 penalty score
  • Mentions to staff members: 8 penalty score.
  • Sending a link in chat: 3 penalty score
  • Sending a link with embed in chat: 5 penalty score
  • Large text message (that covers a large chat area): 15 penalty score
  • Sending discord invite: 15 penalty score

The penalty score can be used to detect malicious users and while it isn't conclusive to warrant punishment, it can prevent spamming with the intention to create annoyance, advertising, or in general being toxic (eg: Spamming the chat)

Examples:

  • Score over 30 / minute: 3 second cooldown (Potentially hot discussion topic that may lead to contraction and drama)
  • Score over 60 / minute: 10 second cooldown (Very hot discussion or individual spamming)
  • Score over 100 / minute: 1 minute cooldown (High risk of individual heavily abusing, advertising, etc)

This system shouldn't be too hard to implement programmatically and should increase the quality of chatting, prevent spammers and advertisers, and help the moderation team do their job more efficiently and do damage control.

@Sniped
Copy link
Contributor

Sniped commented Mar 17, 2022

One concern of mine that I have towards this feature is the possibility of one person spamming and ruining the channel for everyone. I think that we should determine whether or not a user is accumulating the majority of points per minute by some marginal amount (set threshold in config) and punish that user instead of implementing a channel cooldown for that specific individual.

I also have another question: how long should we wait to take down a channel cooldown? Some x minutes after the channel point accumulation rate has decreased down to a point where the cooldown can be removed safely?

@Stefatorus
Copy link
Author

One concern of mine that I have towards this feature is the possibility of one person spamming and ruining the channel for everyone. I think that we should determine whether or not a user is accumulating the majority of points per minute by some marginal amount (set threshold in config) and punish that user instead of implementing a channel cooldown for that specific individual.

I also have another question: how long should we wait to take down a channel cooldown? Some x minutes after the channel point accumulation rate has decreased down to a point where the cooldown can be removed safely?

The bot's main benefit would be effectively handling situations like botting, etc. Obviously, a trust system can be further implemented to allow older accounts a larger capacity to handle these situations.

Additionally, it would serve as a tool to help staff, not to replace manual response by staff members, so in the case where only one user is flaming or behaving against the rules, they can revert the bot's slowmode.

A similar solution was used by the official discord winter discord to minimize spam considering their extremely large-sized discord server and has proven good results. What could be implemented (if discord allows it), is changing these to timeouts, so they only affect the users in question. However, the capacity of implementing custom times for timeouts is not something I'm sure bot developers can do.

@Sniped
Copy link
Contributor

Sniped commented Mar 18, 2022

The bot's main benefit would be effectively handling situations like botting, etc. Obviously, a trust system can be further implemented to allow older accounts a larger capacity to handle these situations.

I'm a bit confused on what you're saying here, what do you mean by a trust system? The older the account is, the more points they're able to accumulate before further action is dealt?

Additionally, it would serve as a tool to help staff, not to replace manual response by staff members, so in the case where only one user is flaming or behaving against the rules, they can revert the bot's slowmode.

So, the mods will have to manually revert the slowmode on the channel, rather than it being done automatically for them? I understand that this would be a tool to help staff, though it can be a bit inconvenient for chatters if they have to wait for a moderator to lift the slowmode all because one person was being a bad apple.

What could be implemented (if discord allows it), is changing these to timeouts, so they only affect the users in question.

I like this solution more, however, if we were to implement this, we should only do so in cases where one or two people are accumulating points for a channel, as I said previously.

However, the capacity of implementing custom times for timeouts is not something I'm sure bot developers can do.

It can be done, fairly easy actually, take a look at GuildMember#timeout on the discord.js docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants