如何修改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
相关产品推荐
相关产品推荐

