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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:41:03