aboutsummaryrefslogtreecommitdiffstats
path: root/botcore
diff options
context:
space:
mode:
authorGravatar Izan <[email protected]>2022-07-14 21:41:32 +0100
committerGravatar Izan <[email protected]>2022-07-14 21:59:32 +0100
commit65410a9c11d70cadd8a6d16ffc386a7cad3d1f0b (patch)
treec0ca3ddeff517ad1ed2e7869202989a1cf56d849 /botcore
parentMerge pull request #98 from python-discord/fix-stats-close (diff)
Add `clean_text_or_reply` util.
Diffstat (limited to 'botcore')
-rw-r--r--botcore/utils/commands.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/botcore/utils/commands.py b/botcore/utils/commands.py
new file mode 100644
index 00000000..2d380bef
--- /dev/null
+++ b/botcore/utils/commands.py
@@ -0,0 +1,21 @@
+from typing import Optional
+
+from discord import Message
+from discord.ext.commands import Context, clean_content
+
+
+async def clean_text_or_reply(ctx: Context, text: Optional[str] = None) -> Optional[str]:
+ """Returns cleaned version of `text`, if given, else referenced message, if found, else `None`."""
+ clean_content_converter = clean_content(fix_channel_mentions=True)
+
+ if text:
+ return await clean_content_converter.convert(ctx, text)
+
+ if (
+ (replied_message := getattr(ctx.message.reference, "resolved", None)) # message has a cached reference
+ and isinstance(replied_message, Message) # referenced message hasn't been deleted
+ ):
+ return await clean_content_converter.convert(ctx, ctx.message.reference.resolved.content)
+
+ # No text provided, and either no message was referenced or we can't access the content
+ return None