From 773491e2ff444a96066af2f5ca69babca4707a2f Mon Sep 17 00:00:00 2001 From: stijndcl Date: Fri, 23 Sep 2022 20:30:00 +0200 Subject: [PATCH] Clap --- didier/cogs/fun.py | 17 +++++++++++++ didier/utils/discord/constants.py | 42 ++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/didier/cogs/fun.py b/didier/cogs/fun.py index d3e61f6..4507305 100644 --- a/didier/cogs/fun.py +++ b/didier/cogs/fun.py @@ -11,6 +11,7 @@ from didier import Didier from didier.data.apis.imgflip import generate_meme from didier.exceptions.no_match import expect from didier.menus.memes import MemeSource +from didier.utils.discord import constants from didier.views.modals import GenerateMeme @@ -25,6 +26,22 @@ class Fun(commands.Cog): def __init__(self, client: Didier): self.client = client + @commands.hybrid_command(name="clap") + async def clap(self, ctx: commands.Context, *, text: str): + """Clap a message with emojis for extra dramatic effect""" + chars = list(filter(lambda c: c.isalnum(), text)) + + if not chars: + return await ctx.reply("👏", mention_author=False) + + text = "👏".join(list(map(lambda c: constants.EMOJI_MAP.get(c), chars))) + text = f"👏{text}👏" + + if len(text) > constants.Limits.MESSAGE_LENGTH: + return await ctx.reply("Message is too long.", mention_author=False) + + return await ctx.reply(text, mention_author=False) + async def _do_generate_meme(self, meme_name: str, fields: list[str]) -> str: async with self.client.postgres_session as session: result = expect(await get_meme_by_name(session, meme_name), entity_type="meme", argument=meme_name) diff --git a/didier/utils/discord/constants.py b/didier/utils/discord/constants.py index 707d635..22eab4b 100644 --- a/didier/utils/discord/constants.py +++ b/didier/utils/discord/constants.py @@ -1,6 +1,46 @@ from enum import Enum -__all__ = ["Limits"] +__all__ = ["EMOJI_MAP", "Limits"] + + +EMOJI_MAP = { + "a": "🇦", + "b": "🇧", + "c": "🇨", + "d": "🇩", + "e": "🇪", + "f": "🇫", + "g": "🇬", + "h": "🇭", + "i": "🇮", + "j": "🇯", + "k": "🇰", + "l": "🇱", + "m": "🇲", + "n": "🇳", + "o": "🇴", + "p": "🇵", + "q": "🇶", + "r": "🇷", + "s": "🇸", + "t": "🇹", + "u": "🇺", + "v": "🇻", + "w": "🇼", + "x": "🇽", + "y": "🇾", + "z": "🇿", + "0": "0⃣", + "1": "1️⃣", + "2": "2️⃣", + "3": "3️⃣", + "4": "4️⃣", + "5": "5️⃣", + "6": "6️⃣", + "7": "7️⃣", + "8": "8️⃣", + "9": "9️⃣", +} class Limits(int, Enum):