如何使用disord.py下载嵌入消息的图像

时间:2019-06-22 20:00:08

标签: discord.py

我正在尝试下载嵌入式邮件的内容。

这是我到目前为止正在运行的

async def on_message(self, message):
    embedFromMessage = message.embeds
    print(embedFromMessage)

我希望它输出附件图像和说明的url,但仅输出[discord.embeds.Embed对象位于0x049A8990]

1 个答案:

答案 0 :(得分:0)

discord.py API为您提供了一系列工具,可让您找到所需的内容。

找到嵌入内容

如我所见,您正在尝试使用on_message事件捕获嵌入式消息。 为此,我们将使用此代码:

@commands.Cog.listener()
async def on_message(self, message):
     if(len(message.embeds) > 0):

这个简单的if语句将确定邮件是否是嵌入式邮件。 如果邮件是嵌入,它将返回list of embeds

  

请注意,图像预览被视为嵌入式消息。

现在让我们抓取您想要的嵌入内容:

_embed = message.embeds[0]  # this will return the first embed in message.embeds

一旦存储了嵌入式,我们想知道它是否包含图片:

if not _embed.image.url == discord.Embed.Empty:
     image = _embed.image.url

默认情况下,_embed.image将返回一个EmbedProxy,看起来像这样:

EmbedProxy(width=0, url='URL', proxy_url='PROXY_URL', height=0)

要访问url的值,我们已完成_embed.image.url

现在您有了图片网址,您可以使用 aiohttp 库进行下载。

完整代码

与使用discord.Embed()类创建的消息一样,这里的代码可用于捕获嵌入消息中的图像。

@commands.Cog.listener()
async def on_message(self, message):
     if(len(message.embeds) > 0):
          _embed = message.embeds[0]

          if not _embed.image.url == discord.Embed.Empty:
              image = _embed.image.url
              channel = message.channel  # get the channel where the embed has been sent
              await channel.send(image)  # send the image into the channel

希望有帮助!

祝你有美好的一天!