我正在尝试下载嵌入式邮件的内容。
这是我到目前为止正在运行的
async def on_message(self, message):
embedFromMessage = message.embeds
print(embedFromMessage)
我希望它输出附件图像和说明的url,但仅输出[discord.embeds.Embed对象位于0x049A8990]
答案 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
希望有帮助!
祝你有美好的一天!