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

Discord.py 2.5.2 机器人按钮交互执行成功却弹出「This interaction failed」提示的解决求助

Discord.py 2.5.2 机器人按钮交互执行成功却弹出「This interaction failed」提示的解决求助

各位大佬好!我最近在用discord.py 2.5.2开发一个带按钮交互的Discord机器人,遇到了个头疼的问题:用户点击按钮后,机器人明明已经正确完成了所有操作(比如数据库更新、发DM这些),但用户那边还是会弹出「This interaction failed」的错误提示。

先把我的按钮点击处理代码贴出来:

@bot.event
async def on_button_click(interaction: discord.Interaction):
    try:
        if str(interaction.user.id) not in ADMIN_IDS:
            await interaction.response.send_message("You are not authorized to perform this action.", ephemeral=True)
            return

        custom_id = interaction.custom_id
        message = interaction.message
        embed = message.embeds[0]
        user_id = embed.fields[3].value[2:-1]
        amount = float(embed.fields[0].value[1:])
        user = await bot.fetch_user(int(user_id))
        
        if custom_id in ["accept_deposit", "accept_withdraw"]:
            user_data = get_user_data(user_id)  # Database operation
            if custom_id == "accept_deposit":
                user_data["balance"] += amount
                await user.send(f"Your deposit of ${amount:.2f} has been approved!")
            else:
                user_data["balance"] -= amount
                await user.send(f"Your withdrawal of ${amount:.2f} has been approved!")
            save_user_data(user_id, user_data)
            await message.edit(view=None)
            await interaction.response.send_message("Request approved!", ephemeral=True)
        else:
            action = "deposit" if custom_id == "deny_deposit" else "withdrawal"
            await user.send(f"Your {action} request has been denied.")
            await message.edit(view=None)
            await interaction.response.send_message("Request denied!", ephemeral=True)

    except Exception as e:
        print(f"Error in on_button_click: {e}")
        if not interaction.response.is_done():
            await interaction.response.send_message("An error occurred.", ephemeral=True)

我猜测问题出在数据库操作和发送DM这些步骤耗时比较久,导致没在Discord要求的时间内响应交互。我已经尝试过下面几种方法,但都没能解决:

  • 立即调用interaction.response.send_message()
  • 使用interaction.followup.send()
  • 用message.edit(view=None)编辑消息

我的开发环境:

  • Python 3.11
  • discord.py 2.5.2
  • Windows 10

有没有大佬能帮我看看哪里出问题了,该怎么调整才能让用户不再看到这个错误提示呀?

备注:内容来源于stack exchange,提问作者Matei Serban

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:03:13