如何检索我刚刚使用 discord.file 发送的图像的 url

问题描述 投票:0回答:1

问题

我想检索我发送的图像的 URL,在

discord.file
的参数中有一个
ctx.channel.send()
。但是,我不知道如何获取发送的图像。

代码

@bot.command()
async def testing(ctx, user: discord.Member):
async with aiohttp.ClientSession() as session:
endpoint = str(user.avatar_url)
async with session.get(str(endpoint)) as end:
    pfp = await end.read()
        with io.BytesIO(pfp) as file:
            msg = await ctx.channel.send(file=discord.File(file, filename=f"pfp.png")) 
            #i want image url of this discord.file
python image file url discord.py
1个回答
0
投票

获取消息的附件

文档中显示

discord.Message
(消息对象)具有属性attachments。该属性给出了
discord.Attachment
s的列表。

您可以通过

message.attachments[i]
访问单个附件,其中
message
是消息对象,i 是索引。

获取消息链接

要获取附件的链接,

discord.Attachment
具有属性
url
。这给出了 URL 的类型字符串。

在你的例子中

@bot.command()
async def testing(ctx, user: discord.Member):
async with aiohttp.ClientSession() as session:
endpoint = str(user.avatar_url)
async with session.get(str(endpoint)) as end:
    pfp = await end.read()
        with io.BytesIO(pfp) as file:
            msg = await ctx.channel.send(file=discord.File(file, filename=f"pfp.png")) 
            msg_image_url = msg.attachments[0].url  # The URL of the image

可能出现的问题

  • 你需要有正确的意图

如果未启用 Intents.message_content,除非提到机器人或消息是直接消息,否则这将始终是一个空列表。

  • 如果附件被删除,URL将返回none

如果此附件附加到的消息被删除,那么这将是 404.

© www.soinside.com 2019 - 2024. All rights reserved.