From 571a0edbb31b2e0bdf8e9acbead9dd007491e705 Mon Sep 17 00:00:00 2001 From: Mega-JC <65417594+Mega-JC@users.noreply.github.com> Date: Fri, 7 Jun 2024 01:49:28 +0200 Subject: [PATCH] Add transformers.py for app command argument transformers --- snakecore/commands/__init__.py | 1 + snakecore/commands/transformers.py | 34 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 snakecore/commands/transformers.py diff --git a/snakecore/commands/__init__.py b/snakecore/commands/__init__.py index 9457962..413d2ec 100644 --- a/snakecore/commands/__init__.py +++ b/snakecore/commands/__init__.py @@ -11,6 +11,7 @@ from .bot import * from .converters import * from .decorators import * +from .transformers import * def init(global_client: discord.Client | None = None) -> None: diff --git a/snakecore/commands/transformers.py b/snakecore/commands/transformers.py new file mode 100644 index 0000000..ff81935 --- /dev/null +++ b/snakecore/commands/transformers.py @@ -0,0 +1,34 @@ +"""This file is a part of the source code for snakecore. +This project has been licensed under the MIT license. +Copyright (c) 2024-present pygame-community. + +This file defines some transformers for application command argument parsing. +""" + +import discord +from discord import app_commands +from discord.ext import commands + +_DECBotT = commands.Bot | commands.AutoShardedBot + + +class MessageTransformer(app_commands.Transformer): + "Transforms to a :class:`discord.Message`." + + async def transform( + self, interaction: discord.Interaction[_DECBotT], value: str + ) -> discord.Message: + try: + return await commands.MessageConverter().convert( + await commands.Context.from_interaction(interaction), value + ) + except commands.BadArgument: + raise app_commands.TransformerError( + value, discord.AppCommandOptionType.string, self + ) + + +Message = app_commands.Transform[discord.Message, MessageTransformer] +"Transforms to a :class:`discord.Message`." + +__all__ = ("MessageTransformer", "Message")