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

Discord机器人Music类运行报__init__缺少必填参数'config'如何解决?

报错根因

你定义的Music Cog的构造函数__init__要求传入bot和config两个参数,但你加载这个Cog时只传了bot参数,缺少config参数导致报错。

解决思路

方案1:加载Cog时传入配置对象

首先找到你加载Cog的代码位置,按你使用的discord.py版本对应修改:

  • 旧版(v1.x及更早):原来的加载代码通常为bot.add_cog(Music(bot)),修改为:
    # your_config为你提前读取好的全局配置字典
    bot.add_cog(Music(bot, your_config))
    
  • 新版(v2.x及以后,Cog单独写在模块文件中):找到模块下的setup函数,修改为:
    async def setup(bot):
        # 如果已经把配置提前挂载到bot实例上,直接取即可
        config = bot.config
        await bot.add_cog(Music(bot, config))
    

方案2:简化Cog构造函数,直接从bot实例取配置

如果不想每次加载Cog都传配置,可以把配置提前挂载到bot实例上,修改Music类的构造函数,省去手动传config的步骤:

class Music(commands.Cog):
    """Bot commands to help play music."""

    def __init__(self, bot):
        self.bot = bot
        self.config = bot.config[__name__.split(".")[-1]]  # 从bot实例取预存的配置
        self.states = {}
        self.bot.add_listener(self.on_reaction_add, "on_reaction_add")

使用该方案需要你在初始化bot之后、加载Cog之前,提前给bot挂载配置:bot.config = 你的全局配置字典。

额外注意项

要确保你的配置字典存在和Music类所在模块名一致的key,否则后续会触发KeyError报错。

内容的提问来源于stack exchange,提问作者Hydra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:09:01