Discord Bot命令hi未找到报错 修复后仍不响应命令问题求助
问题原因&修复方案
第一个报错(Command "hi" is not found)的根源
初始代码里的命令注册装饰器写法错误,@client.command 缺少调用括号,正确写法应为 @client.command(),装饰器没有正确执行所以命令没有被Bot注册,才会触发命令未找到的报错。
修改后代码无响应的核心问题
- 代码执行顺序错误:
client.run('Token')是阻塞方法,代码运行到这一行后会一直保持Bot登录状态,后续创建commands.Bot实例、注册hi命令的代码永远不会被执行 - 重复实例化客户端没有意义:
commands.Bot本身是discord.Client的子类,完全包含后者的所有功能,不需要同时实例化两个客户端 - 缺少消息内容权限:discord.py v2.0及以上版本默认不开启消息内容读取权限,没有权限的情况下Bot无法识别消息中的命令前缀,自然不会响应
完整可运行修复代码
import discord from discord.ext import commands import os import random # 声明意图,开启消息内容读取权限 intents = discord.Intents.default() intents.message_content = True # 直接用commands.Bot实例化,不需要单独创建discord.Client client = commands.Bot(command_prefix = '?', intents=intents) @client.event async def on_ready(): print('We have logged in as {0.user}'.format(client)) # 装饰器加括号正确注册命令 @client.command() async def hi(ctx): await ctx.send("Hello World") # 所有配置、命令注册完成后再调用run启动Bot client.run('替换为你的Bot Token')
额外注意:你需要登录Discord开发者平台,进入对应Bot的设置页,在「Privileged Gateway Intents」分类下开启
Message Content Intent开关,否则即使代码声明了意图也无法读取消息内容。
内容的提问来源于stack exchange,提问作者RandomDuck
相关产品推荐
相关产品推荐

