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

discord.py 2.0机器人重载扩展报错:TypeError参数缺失求助

问题分析

触发的两类TypeError核心原因完全一致:你直接调用了commands.Bot类的reload_extension方法,但reload_extension是实例方法,必须通过已初始化的Bot实例(而非类本身)调用。

  • 第一个错误是因为调用类方法时缺少self参数(也就是Bot实例本身);
  • 第二个错误是当你传入name参数时,类会把这个参数当作self,导致真正需要的name参数缺失。
修复方案

修改reload.py中的命令函数,使用ctx.bot(当前命令绑定的Bot实例)来调用reload_extension:

import discord
import settings

from discord.ext import commands

@commands.hybrid_command(name="reload", description="Reloads all extensions")
async def reload(ctx):
     for cmd_file in settings.CMDS_DIR.glob("*.py"):
            if cmd_file.name != "__init__.py":
                extensions = f"extension.{cmd_file.name[:-3]}"
                # 关键修改:用ctx.bot(机器人实例)调用reload_extension
                await ctx.bot.reload_extension(extensions)
                print(f"Reloaded extension: {extensions}")
     # 可选:给用户发送操作反馈
     await ctx.send("所有扩展已重载完成!")

async def setup(bot):
    bot.add_command(reload)
额外建议
  • ctx.bot和你在main.py中创建的bot对象是同一个实例,能正确执行扩展重载逻辑;
  • 建议给该命令添加权限校验,比如仅允许机器人所有者(你和女友)使用,避免误操作:
    @commands.hybrid_command(name="reload", description="Reloads all extensions")
    @commands.is_owner()
    async def reload(ctx):
        # 原有逻辑
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:32:37