aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/rules/everyone_ping.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/bot/rules/everyone_ping.py b/bot/rules/everyone_ping.py
new file mode 100644
index 000000000..29a734478
--- /dev/null
+++ b/bot/rules/everyone_ping.py
@@ -0,0 +1,31 @@
+from typing import Dict, Iterable, List, Optional, Tuple
+
+from discord import Member, Message
+
+
+async def apply(
+ last_message: Message,
+ recent_messages: List[Message],
+ config: Dict[str, int],
+) -> Optional[Tuple[str, Iterable[Member], Iterable[Message]]]:
+ """Detects if a user has sent an '@everyone' ping."""
+ relevant_messages = tuple(
+ msg for msg in recent_messages if msg.author == last_message.author
+ )
+
+ ev_msgs_ct = 0
+ if config["enabled"]:
+ for msg in relevant_messages:
+ ev_role = msg.guild.default_role
+ msg_roles = msg.role_mentions
+
+ if ev_role in msg_roles:
+ ev_msgs_ct += 1
+
+ if ev_msgs_ct > 0:
+ return (
+ f"pinged the everyone role {ev_msgs_ct} times",
+ (last_message.author),
+ relevant_messages,
+ )
+ return None