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

Discord Py PartnerBot伙伴请求确认功能报错修复求助

修复Discord伙伴请求机器人的ReactConfirm响应问题

从你给出的错误日志来看,问题出在两个关键地方:ReactConfirm初始化时的实例引用错误,以及超时处理时的message.edit调用格式不对。下面是具体的修复方案:

错误1:bot变量引用错误

你的代码里初始化ReactConfirm时用了bot=bot,但从@client.command()和client.get_channel这些调用能看出来,你的客户端实例是client。discord.ext.commands.Bot类的实例才拥有wait_for方法,这里你应该传入正确的client实例,而不是未定义的bot变量——这正是第一个AttributeError的根源。

错误2:message.edit()参数格式错误

在discord.ext.forms的reactions.py中,超时处理代码直接调用了message.edit("Timeout!"),但Discord.py的Message.edit()方法要求用关键字参数指定内容,正确写法是message.edit(content="Timeout!")。这个问题属于依赖库适配性问题,需要我们手动修正。

完整修复后的代码

@client.command()
async def partner(ctx):
    form = Form(ctx, "Partnership Request")
    form.add_question(
        "What's the invite link to your server?",
        "invitelink",
        "invite"
    )
    form.add_question(
        "What's a description of your server?",
        "description"
    )
    form.add_question(
        "What's your server's advertisement?",
        "advertisement"
    )
    results = await form.start()
    embed = discord.Embed(
        title=f"Partnership Request from {results.invitelink.guild.name}",
        description=f"**Description:** {results.description}",
    )
    embed.set_thumbnail(url=results.invitelink.guild.icon_url)
    embed.set_author(name=ctx.author, icon_url=ctx.author.avatar_url)
    partnershipreq = client.get_channel(843569943807393816)
    prompt = await partnershipreq.send(embed=embed)
    
    # 修复点1:传入正确的客户端实例client
    confirm = ReactConfirm(message=prompt, bot=client, user=ctx.message.author)
    accepted = await confirm.start()
    
    if accepted:
        partners = client.get_channel(843569943807393815)
        em = discord.Embed(title=results.invitelink.guild.name, description=results.advertisement, color=0x2F3136)
        em.set_author(name=ctx.author, icon_url=ctx.author.avatar_url)
        em.set_thumbnail(url=results.invitelink.guild.icon_url)
        await partners.send(embed=em)

额外处理:修正第三方库的message.edit调用

如果上面的修改后仍出现TypeError,需要手动调整discord.ext.forms库的代码:

  1. 找到路径:C:\Users\MCPEG\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\ext\forms\reactions.py
  2. 定位到第100行左右的return await message.edit("Timeout!")
  3. 修改为:return await message.edit(content="Timeout!")

修复逻辑说明

  • 传入正确的client实例给ReactConfirm,确保它能调用wait_for方法监听反应事件
  • 修正message.edit的调用格式,符合Discord.py的API规范,避免参数不匹配的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:43:11