diff options
author | 2022-07-14 21:41:32 +0100 | |
---|---|---|
committer | 2022-07-14 21:59:32 +0100 | |
commit | 65410a9c11d70cadd8a6d16ffc386a7cad3d1f0b (patch) | |
tree | c0ca3ddeff517ad1ed2e7869202989a1cf56d849 | |
parent | Merge pull request #98 from python-discord/fix-stats-close (diff) |
Add `clean_text_or_reply` util.
-rw-r--r-- | botcore/utils/commands.py | 21 |
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 |