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

Discord文件版四子棋按钮状态不同步问题求助

Discord四子棋游戏:重新加载时按钮禁用状态不同步问题

我开发了一款基于文件存储的Discord四子棋游戏,现在实现了调用原函数重新显示游戏的功能——这个功能能撤回首次游戏,运行正常,但按钮的禁用状态没同步。规则是当列顶位置已满(即board[0][对应列]为:green_circle:或:red_circle:)时,对应按钮必须禁用,不然会出现能在满列落子的问题。目前只有点击某一按钮后,其他按钮的状态才会更新,想问能不能通过更新视图的方式解决这个问题?

当前代码

open_file = open(ctx.author.name + "#", "r")
board = []
IDS = open_file.readline()
piece = open_file.readline()
for _ in range(6):
    value = open_file.readline()
    board.append(value.strip("\n").split(","))
# board is a 2d array made up of each played piece, being 6 lists, each list having 7 values
open_file.close()
# where I'm trying to disable the buttons
buttons = [button1,button2,button3,button4,button5,button6,button7]
for items in range(7):
    print(board[0][items])
    if board[0][items] == ":green_circle:" or board[0][items] == ":red_circle:":
        print(',,')
        buttons[items].disabled = True

解决方法

问题核心是:你修改了按钮的disabled属性后,没有把更新后的视图同步回Discord客户端。Discord的交互组件(按钮、选择菜单等)需要通过编辑原消息来刷新状态。

具体步骤

  1. 保留首次发送游戏消息的Message实例(如果之前没存,可以通过消息ID重新获取,或者在首次发送时把它存在变量里)
  2. 修改完所有按钮的禁用状态后,调用消息的edit方法,传入更新后的视图

修改后的代码示例

# 读取文件逻辑不变
open_file = open(f"{ctx.author.name}#", "r")
board = []
IDS = open_file.readline()
piece = open_file.readline()
for _ in range(6):
    value = open_file.readline()
    board.append(value.strip("\n").split(","))
open_file.close()

# 更新按钮状态:不仅要禁用满列,还要重置已撤回的列
buttons = [button1, button2, button3, button4, button5, button6, button7]
for col in range(7):
    if board[0][col] in (":green_circle:", ":red_circle:"):
        buttons[col].disabled = True
    else:
        # 撤回后列空了,重新启用按钮
        buttons[col].disabled = False

# 关键:同步视图到客户端
# 假设 your_view 是包含这些按钮的Discord View对象
# original_message 是首次发送游戏界面的消息实例
await original_message.edit(view=your_view)

注意点

  • 必须确保original_message是正确的消息对象,否则无法触发编辑
  • 如果你的View是动态生成的,要保证修改的是绑定到当前消息的View实例,或者重新创建View后传入edit方法
  • 一定要处理按钮的“重置”逻辑——如果之前满的列因为撤回操作变空,要把按钮重新启用,避免出现本该可用却被禁用的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:05:17