You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:45:46