blob: 2d380bef07d4625795072caa05dc2556eb8ddd5f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
|