aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MrAwesomeRocks <[email protected]>2020-08-29 16:06:19 -0500
committerGravatar MrAwesomeRocks <[email protected]>2020-08-29 16:06:19 -0500
commit24002b6b585962bf9218ad643727b30d4ed018dd (patch)
treede4a4836d52610a0f4963b47fa3473844be34d15
parentEveryone 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.py32
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,),