如何使用discord.py获取频道中最新发送的附件?
提取Discord频道历史消息中的最新附件
你已经通过await ctx.get_channel(channel).history(limit=10).flatten()[0]拿到了最新的历史消息(history默认按从新到旧排序,flatten()[0]就是列表里的第一条,也就是最新的那条),接下来可以通过消息对象的attachments属性提取附件:
- 先将消息存入变量,便于后续操作:
latest_message = await ctx.get_channel(channel).history(limit=10).flatten()[0] latest_message.attachments会返回一个附件对象列表,列表中的第一个元素就是这条消息的首个附件(若消息包含多个附件,可通过索引依次获取)- 若需要附件的具体信息或文件,可调用附件对象的对应属性/方法:
# 获取附件的下载链接 attachment_url = latest_message.attachments[0].url # 获取附件的文件名 attachment_name = latest_message.attachments[0].filename # 直接下载附件到本地 await latest_message.attachments[0].save(attachment_name)
注意事项:
- 务必先判断消息是否包含附件,避免索引越界报错:
if latest_message.attachments: # 存在附件时执行操作 target_attachment = latest_message.attachments[0] else: # 处理无附件的场景 print("该消息未包含任何附件") - 若仅需最新的一条消息,可将
limit设为1,提升代码效率:latest_message = await ctx.get_channel(channel).history(limit=1).flatten()[0]
内容的提问来源于stack exchange,提问作者lol wtf
相关产品推荐
相关产品推荐

