diff options
| -rw-r--r-- | bot/rules/discord_emojis.py | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/bot/rules/discord_emojis.py b/bot/rules/discord_emojis.py index 6e47f0197..41faf7ee8 100644 --- a/bot/rules/discord_emojis.py +++ b/bot/rules/discord_emojis.py @@ -2,16 +2,17 @@ import re  from typing import Dict, Iterable, List, Optional, Tuple  from discord import Member, Message +from emoji import demojize -DISCORD_EMOJI_RE = re.compile(r"<:\w+:\d+>") +DISCORD_EMOJI_RE = re.compile(r"<:\w+:\d+>|:\w+:")  CODE_BLOCK_RE = re.compile(r"```.*?```", flags=re.DOTALL)  async def apply(      last_message: Message, recent_messages: List[Message], config: Dict[str, int]  ) -> Optional[Tuple[str, Iterable[Member], Iterable[Message]]]: -    """Detects total Discord emojis (excluding Unicode emojis) exceeding the limit sent by a single user.""" +    """Detects total Discord emojis exceeding the limit sent by a single user."""      relevant_messages = tuple(          msg          for msg in recent_messages @@ -19,8 +20,9 @@ async def apply(      )      # Get rid of code blocks in the message before searching for emojis. +    # Convert Unicode emojis to :emoji: format to get their count.      total_emojis = sum( -        len(DISCORD_EMOJI_RE.findall(CODE_BLOCK_RE.sub("", msg.content))) +        len(DISCORD_EMOJI_RE.findall(demojize(CODE_BLOCK_RE.sub("", msg.content))))          for msg in relevant_messages      )  |