如何让Discord Bot接收指令后附带的文本 命令无响应问题求助
问题原因
- 未开启消息内容意图(Message Content Intent):discord.py v2.0及以上版本默认禁用该权限,机器人无法读取用户发送的普通消息内容,无法识别
!!send命令。 - 调用了已废弃的API:
client.say()是discord.py早期版本的方法,新版本已完全移除,无法正常执行消息发送逻辑。 - 机器人缺少对应频道的发送消息权限,命令触发后无法返回内容。
- 存在冗余代码:先实例化
discord.Client()再重新赋值为commands.Bot(),属于无效定义,存在潜在运行风险。 - 参数冗余:
pass_context=True是discord.py v1.x版本的适配参数,v1.5之后默认自动传递上下文,该参数已失效。
修复步骤
1. 开发者后台开启权限
进入Discord开发者平台的对应机器人管理页,找到「Privileged Gateway Intents」分区,开启Message Content Intent开关。
2. 替换修正后的代码
import discord import os from discord.ext import commands os.environ["TOKEN"] = "no-token-for-you-to-see-here" # 声明意图权限 intents = discord.Intents.default() intents.message_content = True client = commands.Bot(command_prefix = '!!', intents=intents) @client.event async def on_ready(): print("bot online") @client.command() async def send(ctx,*,message): await ctx.send(message) client.run(os.getenv("TOKEN"))
3. 权限校验
确认机器人在触发命令的频道中,被分配了「发送消息」的权限。
内容的提问来源于stack exchange,提问作者name
相关产品推荐
相关产品推荐

