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

如何修改Discord.py v2代码隐藏Blackjack机器人的Split按钮?

解决Discord.py v2二十一点机器人隐藏Split按钮的问题

方法一:在View初始化时控制按钮显示

先修改你的Buttons类,新增一个参数来控制Split按钮的显示状态:

class Buttons(discord.ui.View):
    def __init__(self, show_split=False):
        super().__init__()
        # 添加默认显示的三个按钮
        self.add_item(discord.ui.Button(label="Hit", style=discord.ButtonStyle.primary, custom_id="hit"))
        self.add_item(discord.ui.Button(label="Stand", style=discord.ButtonStyle.secondary, custom_id="stand"))
        self.add_item(discord.ui.Button(label="Double-down", style=discord.ButtonStyle.success, custom_id="double_down"))
        
        # 根据参数决定是否添加Split按钮
        if show_split:
            self.add_item(discord.ui.Button(label="Split", style=discord.ButtonStyle.danger, custom_id="split"))

然后修改发送消息的代码行,传入show_split=False即可隐藏Split按钮:

await interaction.response.send_message(embed=embed, view=Buttons(show_split=False))

方法二:创建View实例后移除Split按钮

如果不想改动Buttons类的原有结构,可以先创建View实例,再遍历组件移除Split按钮:

# 创建Buttons实例
view = Buttons()
# 遍历所有子组件,匹配并移除Split按钮(根据你实际设置的label调整匹配值)
for item in view.children:
    if item.label == "Split":
        view.remove_item(item)
        break
# 发送消息时使用处理后的view
await interaction.response.send_message(embed=embed, view=view)

补充说明

如果后续游戏过程中需要显示Split按钮(比如用户手牌满足分牌条件),可以通过view.add_item()添加按钮,再调用interaction.edit_original_response(view=view)更新消息的按钮组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:55:16