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

Discord.py点击按钮后无法禁用问题求助

Discord.py点击按钮后禁用按钮的解决方法

直接修改button.disabled = True不会生效,因为Discord的UI状态由服务器端消息组件维护,本地修改属性不会自动同步到服务器,必须通过编辑原交互消息的组件来更新按钮状态。

修正后的代码示例

假设按钮属于某个View实例(这是Discord.py中管理组件的标准方式):

async def button_callback(interaction):
    # 标记按钮为禁用状态
    button1.disabled = True
    # 编辑原交互消息,同步更新后的组件状态
    await interaction.response.edit_message(
        content="You clicked me! Now I'm disabled.",
        view=button1.view  # 传递包含禁用按钮的View实例
    )
button1.callback = button_callback

如果按钮未关联到View,可以手动构建组件行来更新:

async def button_callback(interaction):
    button1.disabled = True
    # 重新构建组件并更新消息
    await interaction.response.edit_message(
        content="You clicked me! Now I'm disabled.",
        components=[discord.ui.ActionRow(button1)]
    )
button1.callback = button_callback

关键说明

  • 不要用interaction.response.send_message()发送新消息,这会保留原消息中的未禁用按钮;必须编辑触发交互的原消息才能更新按钮状态。
  • 确保传递的view或components包含已经设置disabled=True的按钮实例,这样Discord服务器才会更新UI显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:02:39