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
相关产品推荐
相关产品推荐

