python 获取刚发送的图片的URL

b5lpy0ml  于 2023-03-28  发布在  Python
关注(0)|答案(1)|浏览(142)

问题

我想检索我发送的图片的URL,该图片在ctx.channel.send()的参数中包含discord.file。但是,我不知道如何获取发送的图片。

代码

@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
9fkzdhlc

9fkzdhlc1#

获取消息附件

在文档中,它显示discord.Message(消息对象)具有属性attachments。该属性给出了discord.Attachments的列表。
您可以通过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未启用,则此列表将始终为空,除非提到了bot或消息是直接消息。

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

如果此附件所附加到的消息被删除,则这将是404。

相关问题