想簡單做一個互動遊戲,
目前定了一個遊戲叫「終極密碼」,
而因為需要花些時間規劃並平日還是需要上班,
所以會直接寫研究的進度,
無法在一天內或二篇內寫完這個功能...
由 發起者 使用slash_command 開啟新增遊戲場,
並 設定一個範圍N的數字,
而讓玩家們在 1~N 間,開始猜測的遊戲。
需先建立一個 Slash_command 功能,
並讓其可以輸入 number 內容,
而輸出為 兩個按鈕與場次內容,
個人會想顯示 參加人員。
/終極密碼 最大值(int)
XXX 已開啟了一場「終極密碼」
已參加 : XXX XXX OOO
確認好人數後,發起者按下開始
(Butoon)參加 (Button)開始
class GameNumberView(discord.ui.View):
def __init__(self, author, maxValue):
super().__init__(timeout=60)
self.answer = random.randint(1, maxValue) # 答案
self.author = author # 發起者
self.playerList = [] # 參加人
self.playerList.append(author.id)
@discord.ui.button(label="點擊參加", style=discord.ButtonStyle.primary)
async def button_callback(self, button:discord.ui.Button, interaction:discord.Interaction):
message = f"<@{self.author.id}>已開啟了一場「終極密碼」"
await interaction.response.edit_message(content=message)
@discord.ui.button(label="開始", style=discord.ButtonStyle.success)
async def button_start_callback(self, button:discord.ui.Button, interaction:discord.Interaction):
if interaction.user.id == self.author.id:
await interaction.response.send_message(content="開始!!")
else:
channel = Bot.get_channel(interaction.channel_id)
await interaction.channel.send("發起者按下開始")
@Bot.slash_command(name=name, description="建立一個猜數字遊戲")
async def create_game(ctx,
number: Option(int, "猜數字的最大範圍1~N", name="最大值", min_value=2, required=True)):
await ctx.send_response(f"<@{ctx.author.id}>已開啟了一場「終極密碼」\n 已參加 : <@{ctx.author.id}> \n確認好人數後,發起者按下開始w", view=GameNumberView(ctx.author, number))