Discord.py中Cogs无法工作且未被检测到的问题求助
Discord机器人无法加载Cogs的解决方法
核心问题排查与修复
1. 未执行Cogs加载函数
你的main.py中定义了load()函数,但没有任何代码触发它执行——这是机器人检测不到cogs文件的核心原因。
修改main.py,添加setup_hook来执行加载逻辑(discord.py v2.0+官方推荐方式):
import discord import os from discord.ext import commands intents = discord.Intents.default() intents.message_content = True bot = commands.Bot(command_prefix='$', intents=intents) async def load(): for filename in os.listdir('./cogs'): if filename.endswith('.py'): await bot.load_extension(f'cogs.{filename[:-3]}') # 机器人启动前自动加载cogs async def setup_hook(): await load() bot.setup_hook = setup_hook bot.run('你的机器人Token')
2. 确保Cogs目录结构合规
必须保证项目目录结构如下,缺失部分请手动补充:
你的项目文件夹/ ├── main.py └── cogs/ ├── __init__.py # 空文件即可,用于让Python识别该目录为模块包 └── lab.py
3. 修复Cog内命令的参数错误
lab.py中的holla命令缺少self参数(Cog类的方法必须以self作为第一个参数),会导致命令无法正常响应:
import discord from discord.ext import commands class lab(commands.Cog): def __init__(self, bot): self.bot = bot @commands.Cog.listener() async def on_ready(self): print('lab.py is running') @commands.command() async def holla(self, ctx): # 补充self参数 await ctx.reply('hai') async def setup(bot): await bot.add_cog(lab(bot))
验证步骤
- 保存所有修改
- 重启机器人,控制台会输出
lab.py is running - 在Discord中发送
$holla,机器人应回复hai
内容的提问来源于stack exchange,提问作者Nise Raphaeline
相关产品推荐
相关产品推荐

