diff options
| author | 2020-08-29 16:06:19 -0500 | |
|---|---|---|
| committer | 2020-08-29 16:06:19 -0500 | |
| commit | 24002b6b585962bf9218ad643727b30d4ed018dd (patch) | |
| tree | de4a4836d52610a0f4963b47fa3473844be34d15 | |
| parent | Everyone Ping: Fixed rule, edited config (diff) | |
Everyone ping: Send embed on ping, fixed check
When a user pings the everyone role, they now get an embed explaining
why what they did was wrong.
The ping detection was also fixed to not thing that every message was a
ping (changed form `>=` to `>`).
| -rw-r--r-- | bot/rules/everyone_ping.py | 32 | 
1 files changed, 29 insertions, 3 deletions
| diff --git a/bot/rules/everyone_ping.py b/bot/rules/everyone_ping.py index bfc400831..65ee1062c 100644 --- a/bot/rules/everyone_ping.py +++ b/bot/rules/everyone_ping.py @@ -1,6 +1,14 @@ +import logging +import textwrap  from typing import Dict, Iterable, List, Optional, Tuple -from discord import Member, Message +from discord import Embed, Member, Message + +from bot.cogs.moderation.utils import send_private_embed +from bot.constants import Colours + +# For embed sender +log = logging.getLogger(__name__)  async def apply( @@ -15,10 +23,28 @@ async def apply(      ev_msgs_ct = 0      for msg in relevant_messages: -        if '@everyone' in msg.content: +        if "@everyone" in msg.content:              ev_msgs_ct += 1 -    if ev_msgs_ct >= config['max']: +    if ev_msgs_ct > config["max"]: +        # Send the user an embed giving them more info: +        member_count = "{:,}".format(last_message.guild.member_count).split( +            "," +        )[0] +        embed_text = textwrap.dedent( +            f""" +            Hello {last_message.author.display_name}, please don't try to ping {member_count}k people. +            **It will not have good results.** +            If you want to know what it would be like, imagine pinging Greenland. Please don't ping Greenland. +        """ +        ) +        print(embed_text) +        embed = Embed( +            title="Everyone Ping Mute Info", +            colour=Colours.soft_red, +            description=embed_text, +        ) +        await send_private_embed(last_message.author, embed)          return (              f"pinged the everyone role {ev_msgs_ct} times in {config['interval']}s",              (last_message.author,), | 
