Discord.py使用Cogs时命令未被识别问题求助
Discord.py Cogs命令无法识别的解决方案
问题1:Cog内命令未正确配置
你的basic Cog里的mimic命令缺少命令装饰器,且未绑定到Cog实例,导致Discord.py无法识别这是一个可执行命令。
修复后的Cog代码:
# Imports import discord from discord.ext import commands # Define Cog class class basic(commands.Cog, name="Basic Commands"): def __init__(self, bot, *args, **kwargs): self.bot = bot # 标记为命令并绑定实例 @commands.command() async def mimic(self, ctx, *, arg): await ctx.send(arg) # Define Setup def setup(bot): bot.add_cog(basic(bot))
- 新增
@commands.command()装饰器,明确标记这是一个机器人命令 - 方法首参数改为
self,绑定到Cog实例 - 用
*修饰arg,支持接收带空格的多字符输入(可选优化)
问题2:主文件未正确加载Cog
主文件中的setup函数属于冗余代码,且未实际触发Cog加载逻辑。正确做法是在机器人就绪事件中加载Cog。
修复后的主文件关键代码:
# Bot startup @bot.event async def on_ready(): print(f'{Fore.MAGENTA}[{Fore.RESET}!{Fore.MAGENTA}]{Fore.RESET} Successfully logged in as {bot.user}') # 加载commands文件夹下的basic.py Cog await bot.load_extension("commands.basic")
若使用Discord.py v1.x版本,将
await bot.load_extension改为bot.load_extension即可,无需await关键字
同时可优化主文件的重复导入问题,移除多余的datetime导入:
# Imports from datetime import datetime import json, discord, logging, os from colorama import Fore from discord.ext import commands
额外检查项
- 确保文件结构合规:主文件同级存在
commands文件夹,文件夹内包含空的__init__.py(让Python识别为包)和basic.py - 确认
config.json中的前缀与你使用的命令前缀一致 - 已正确开启
message_content意图,你的代码中这部分配置无误
内容的提问来源于stack exchange,提问作者Denomi
相关产品推荐
相关产品推荐

