【问题标题】:Downloading attachments with Discord API in python在 python 中使用 Discord API 下载附件
【发布时间】:2022-04-17 22:01:20
【问题描述】:

我正在创建一个机器人来从不和谐的频道中抓取图像。图片有两种方式:

1) 链接如:https://cdn.discordapp.com/attachments/XXXXXXXX

这种情况下我直接从网址下载图片没有问题。

2) 在第二种情况下,没有 URL,图片直接作为附件。

我正在使用 Python API,有没有一种简单的方法可以下载在频道中发送的任何附件?

我用于第 1 部分的代码是:

if(string[0:26] == "https://cnd.discordapp.com"):
    r = requests.get(string, stream = True)
    with open("image1.png",'wb') as out_file:
        shutil.copyfileobj(r.raw, out_file)

有什么方法可以从聊天中未列出 URL 的附件中提取 URL,以便我可以将其插入第一种方法?如果没有,我使用什么命令来遍历邮件附件/下载它们?

【问题讨论】:

  • Python API 是discord.py 吗?您应该共享您正在使用的代码。您可以通过message.attachments获取邮件附件
  • 太好了,message.attachments 会返回一个我可以直接保存的附件对象,还是会返回一个类似上面的 URL?如果是前者,有什么特殊的命令可以保存吗?
  • 我不认为 discord.py 的异步分支有附件对象,所以它可能只是一个表示底层 JSON 的字典列表。您可以在此处查看该对象的规范 discordapp.com/developers/docs/resources/…

标签: python discord


【解决方案1】:

你可以使用

url = ctx.message.attachments[0].url
if url[0:26] == 'https://cdn.discordapp.com':
    await ctx.send(url)

要获取消息中的任何附件,请获取 cdn.discordapp.com 链接并在聊天中发送。 我还没有测试过,但是你应该可以通过更改ctx.message.attachments[0].url中的列表索引来从邮件中获取多个附件

【讨论】:

    猜你喜欢
    • 2022-11-11
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2014-11-08
    • 2015-01-25
    相关资源
    最近更新 更多