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

使用Discord.py开发机器人时所有附件显示为空的问题求助

Discord.py开发机器人时所有附件显示为空的问题求助

你好,我看了你的问题和代码,附件显示为空的情况大概率是Intent权限配置不完整或者代码里的小语法问题导致的,下面给你一步步分析和解决方法:

一、优先修复Intent配置(最可能的原因)

Discord现在的Intent系统对消息内容、附件这类敏感信息有严格的权限控制,你的代码里只开启了intents.messages = True,这不足以让机器人获取到附件数据,需要补充以下配置:

  1. 修改代码里的Intent设置:
    把原来的Intent初始化代码改成这样:
intents = discord.Intents.default()
intents.messages = True
intents.message_content = True  # 必须开启这个才能读取消息的附件和内容细节

解释:message_content属于「特权Intent」,默认是关闭状态,只有开启它,机器人才能访问消息里的附件、文本内容等信息。

  1. 在Discord开发者后台开启对应特权Intent:
    登录Discord开发者门户,找到你的机器人应用,进入「Bot」页面,拉到「Privileged Gateway Intents」区域,开启「Message Content Intent」选项,记得点击保存更改。

二、修复代码里的语法错误

你代码的最后一行bot.run('YOUR_DISCORD_BOT_TOKEN'少了一个闭合括号,这会导致机器人无法正常启动,改成:

bot.run('YOUR_DISCORD_BOT_TOKEN')

三、额外的排查优化建议

  • 检查机器人服务器权限:确保你的机器人在目标服务器中拥有「读取消息历史」「发送消息」「读取消息内容」这些核心权限,可以在服务器设置的「角色」面板里给机器人角色添加这些权限。
  • 优化日志打印:把日志里的附件打印语句改成更详细的格式,方便排查:
    logging.debug(f'附件数量: {len(message.attachments)}, 附件详情: {[att.filename for att in message.attachments]}')
    
    这样能更直观看到是否真的没有获取到附件,还是只是打印格式的问题。
  • 历史消息权限说明:如果是读取机器人加入服务器之前的历史消息附件,Discord API可能会限制访问,但你提到新消息也显示为空,所以主要还是Intent的问题。

调整后的关键代码片段

import discord
import cv2
import numpy as np
from PIL import Image
import pytesseract
from discord.ext import commands
import aiohttp
import logging

logging.basicConfig(level=logging.DEBUG)

# 修复后的Intent配置
intents = discord.Intents.default()
intents.messages = True
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)

# ... 其余函数逻辑保持不变 ...

# 修复后的启动语句
bot.run('YOUR_DISCORD_BOT_TOKEN')

备注:内容来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:23:03