mirror of
https://github.com/neoarz/Syntrel.git
synced 2026-02-09 06:43:25 +01:00
Compare commits
3 Commits
aaefc42664
...
minesweepe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50dbe209d0 | ||
|
|
a0a8003992 | ||
|
|
c2d822ec3c |
BIN
assets/iconbeta.png
Normal file
BIN
assets/iconbeta.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 610 KiB |
@@ -54,8 +54,8 @@ class Fun(commands.GroupCog, name="fun"):
|
|||||||
await self._invoke_hybrid(context, "8ball", question=question)
|
await self._invoke_hybrid(context, "8ball", question=question)
|
||||||
|
|
||||||
@fun_group.command(name="minesweeper")
|
@fun_group.command(name="minesweeper")
|
||||||
async def fun_group_minesweeper(self, context: Context):
|
async def fun_group_minesweeper(self, context: Context, opponent: discord.User = None):
|
||||||
await self._invoke_hybrid(context, "minesweeper")
|
await self._invoke_hybrid(context, "minesweeper", opponent=opponent)
|
||||||
|
|
||||||
@fun_group.command(name="randomfact")
|
@fun_group.command(name="randomfact")
|
||||||
async def fun_group_randomfact(self, context: Context):
|
async def fun_group_randomfact(self, context: Context):
|
||||||
@@ -86,8 +86,11 @@ class Fun(commands.GroupCog, name="fun"):
|
|||||||
name="minesweeper",
|
name="minesweeper",
|
||||||
description="Play a buttoned minesweeper mini-game."
|
description="Play a buttoned minesweeper mini-game."
|
||||||
)
|
)
|
||||||
async def minesweeper(self, context):
|
@app_commands.describe(
|
||||||
return await minesweeper_command()(self, context)
|
opponent="Optional user to play against in multiplayer mode."
|
||||||
|
)
|
||||||
|
async def minesweeper(self, context, opponent: discord.User = None):
|
||||||
|
return await minesweeper_command()(self, context, opponent=opponent)
|
||||||
|
|
||||||
@commands.check(_require_group_prefix)
|
@commands.check(_require_group_prefix)
|
||||||
@commands.hybrid_command(name="randomfact", description="Get a random fact.")
|
@commands.hybrid_command(name="randomfact", description="Get a random fact.")
|
||||||
|
|||||||
@@ -1,16 +1,82 @@
|
|||||||
import random
|
import random
|
||||||
from itertools import repeat
|
from itertools import repeat
|
||||||
import discord
|
import discord
|
||||||
|
from discord import app_commands
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
import asyncio
|
import asyncio
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
class ChallengeConfirmView(discord.ui.View):
|
||||||
|
def __init__(self, context, challenger, challenged, bomb_count, board):
|
||||||
|
super().__init__(timeout=60)
|
||||||
|
self.context = context
|
||||||
|
self.challenger = challenger
|
||||||
|
self.challenged = challenged
|
||||||
|
self.bomb_count = bomb_count
|
||||||
|
self.board = board
|
||||||
|
self.accepted = False
|
||||||
|
|
||||||
|
@discord.ui.button(label="Confirm", style=discord.ButtonStyle.grey, emoji="<:Check:1417250703407186051>")
|
||||||
|
async def confirm_button(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
|
if interaction.user.id != self.challenged.id:
|
||||||
|
return await interaction.response.send_message("Only the challenged player can accept!", ephemeral=True)
|
||||||
|
|
||||||
|
self.accepted = True
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Challenge Accepted!",
|
||||||
|
description=f"🎮 **{self.challenger.mention}** vs **{self.challenged.mention}**\n\n💣 Total Bombs: `{self.bomb_count}`\n\n{self.challenger.mention} goes first! Click the buttons to reveal the grid. Avoid the bombs!",
|
||||||
|
color=0x00FF00
|
||||||
|
)
|
||||||
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
|
||||||
|
view = MsView(self.context, self.ExtractBlocks(), self.bomb_count, self.board, self.challenged)
|
||||||
|
message = await interaction.response.edit_message(embed=embed, view=view)
|
||||||
|
view.message = message
|
||||||
|
|
||||||
|
@discord.ui.button(label="Cancel", style=discord.ButtonStyle.grey, emoji="<:Cross:1417250649514446849>")
|
||||||
|
async def cancel_button(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||||
|
if interaction.user.id != self.challenged.id:
|
||||||
|
return await interaction.response.send_message("Only the challenged player can decline!", ephemeral=True)
|
||||||
|
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Challenge Declined",
|
||||||
|
description=f"<a:woeisnuke:1432138229628276927> {self.challenged.mention} declined the minesweeper challenge from {self.challenger.mention}",
|
||||||
|
color=0xE02B2B
|
||||||
|
)
|
||||||
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
|
||||||
|
await interaction.response.edit_message(embed=embed, view=None)
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
async def on_timeout(self):
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Challenge Expired",
|
||||||
|
description=f"⏰ {self.challenged.mention} didn't respond to the minesweeper challenge from {self.challenger.mention}",
|
||||||
|
color=0xFFA500
|
||||||
|
)
|
||||||
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
|
||||||
|
try:
|
||||||
|
await self.message.edit(embed=embed, view=None)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def ExtractBlocks(self):
|
||||||
|
new_b = []
|
||||||
|
for x in self.board:
|
||||||
|
for y in x:
|
||||||
|
new_b.append(y)
|
||||||
|
return new_b
|
||||||
|
|
||||||
class RowButton(discord.ui.Button):
|
class RowButton(discord.ui.Button):
|
||||||
def __init__(self, ctx, label, custom_id, bombs, board):
|
def __init__(self, ctx, label, custom_id, bombs, board, opponent=None):
|
||||||
super().__init__(label=label, style=discord.ButtonStyle.grey, custom_id=custom_id)
|
super().__init__(label=label, style=discord.ButtonStyle.grey, custom_id=custom_id)
|
||||||
self.ctx = ctx
|
self.ctx = ctx
|
||||||
self.bombs = bombs
|
self.bombs = bombs
|
||||||
self.board = board
|
self.board = board
|
||||||
|
self.opponent = opponent
|
||||||
|
|
||||||
async def callback(self, interaction):
|
async def callback(self, interaction):
|
||||||
assert self.view is not None
|
assert self.view is not None
|
||||||
@@ -33,6 +99,16 @@ class RowButton(discord.ui.Button):
|
|||||||
return
|
return
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
if view.opponent:
|
||||||
|
if interaction.user.id not in [self.ctx.author.id, view.opponent.id]:
|
||||||
|
return await interaction.followup.send(
|
||||||
|
"You cannot interact with these buttons.", ephemeral=True
|
||||||
|
)
|
||||||
|
if interaction.user.id != view.current_player.id:
|
||||||
|
return await interaction.followup.send(
|
||||||
|
f"It's {view.current_player.mention}'s turn!", ephemeral=True
|
||||||
|
)
|
||||||
|
else:
|
||||||
if interaction.user.id != self.ctx.author.id:
|
if interaction.user.id != self.ctx.author.id:
|
||||||
return await interaction.followup.send(
|
return await interaction.followup.send(
|
||||||
"You cannot interact with these buttons.", ephemeral=True
|
"You cannot interact with these buttons.", ephemeral=True
|
||||||
@@ -47,7 +123,7 @@ class RowButton(discord.ui.Button):
|
|||||||
self.bombs = view.bombs
|
self.bombs = view.bombs
|
||||||
|
|
||||||
if int(b_id[5:]) in self.bombs:
|
if int(b_id[5:]) in self.bombs:
|
||||||
await view.RevealBombs(b_id, view.board)
|
await view.RevealBombs(b_id, view.board, interaction)
|
||||||
else:
|
else:
|
||||||
count = []
|
count = []
|
||||||
rawpos = int(b_id[5:])
|
rawpos = int(b_id[5:])
|
||||||
@@ -82,11 +158,24 @@ class RowButton(discord.ui.Button):
|
|||||||
view.GetBoardPos(pos)
|
view.GetBoardPos(pos)
|
||||||
] = str(number) if number > 0 else "0"
|
] = str(number) if number > 0 else "0"
|
||||||
view.moves.append(pos)
|
view.moves.append(pos)
|
||||||
|
|
||||||
|
if view.opponent:
|
||||||
|
if interaction.user.id == view.ctx.author.id:
|
||||||
|
view.player1_score += 1
|
||||||
|
else:
|
||||||
|
view.player2_score += 1
|
||||||
|
|
||||||
|
if number == 0:
|
||||||
|
await view.auto_reveal_safe_squares(rawpos, interaction)
|
||||||
|
|
||||||
|
if view.opponent:
|
||||||
|
view.current_player = view.opponent if view.current_player.id == view.ctx.author.id else view.ctx.author
|
||||||
|
|
||||||
if len(view.moves) + len(self.bombs) == 25:
|
if len(view.moves) + len(self.bombs) == 25:
|
||||||
await view.EndGame()
|
await view.EndGame()
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
await interaction.edit_original_response(view=view)
|
await view.update_embed(interaction)
|
||||||
except discord.errors.HTTPException as e:
|
except discord.errors.HTTPException as e:
|
||||||
if e.status == 429:
|
if e.status == 429:
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
@@ -94,10 +183,10 @@ class RowButton(discord.ui.Button):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
class MsView(discord.ui.View):
|
class MsView(discord.ui.View):
|
||||||
def __init__(self, ctx, options, bomb_count, board):
|
def __init__(self, ctx, options, bomb_count, board, opponent=None):
|
||||||
super().__init__(timeout=300)
|
super().__init__(timeout=300)
|
||||||
for i, op in enumerate(options):
|
for i, op in enumerate(options):
|
||||||
self.add_item(RowButton(ctx, op, f"block{i}", [], board))
|
self.add_item(RowButton(ctx, op, f"block{i}", [], board, opponent))
|
||||||
self.board = board
|
self.board = board
|
||||||
self.bombs = []
|
self.bombs = []
|
||||||
self.bomb_count = bomb_count
|
self.bomb_count = bomb_count
|
||||||
@@ -106,9 +195,12 @@ class MsView(discord.ui.View):
|
|||||||
self.ctx = ctx
|
self.ctx = ctx
|
||||||
self.message = None
|
self.message = None
|
||||||
self.last_interaction = 0
|
self.last_interaction = 0
|
||||||
|
self.opponent = opponent
|
||||||
|
self.current_player = ctx.author
|
||||||
|
self.player1_score = 0
|
||||||
|
self.player2_score = 0
|
||||||
|
|
||||||
def generate_bombs(self, first_move_pos):
|
def generate_bombs(self, first_move_pos):
|
||||||
"""Generate bombs excluding the first clicked position"""
|
|
||||||
bombpositions = []
|
bombpositions = []
|
||||||
excluded_positions = [0, 4, 20, 24, first_move_pos]
|
excluded_positions = [0, 4, 20, 24, first_move_pos]
|
||||||
|
|
||||||
@@ -135,7 +227,7 @@ class MsView(discord.ui.View):
|
|||||||
)
|
)
|
||||||
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
try:
|
try:
|
||||||
await self.message.edit(embed=embed, view=self)
|
await interaction.edit_original_response(embed=embed, view=self)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -148,9 +240,24 @@ class MsView(discord.ui.View):
|
|||||||
button.style = discord.ButtonStyle.red
|
button.style = discord.ButtonStyle.red
|
||||||
self.board[self.GetBoardRow(pos)][self.GetBoardPos(pos)] = "💣"
|
self.board[self.GetBoardRow(pos)][self.GetBoardPos(pos)] = "💣"
|
||||||
|
|
||||||
|
if self.opponent:
|
||||||
|
if self.player1_score > self.player2_score:
|
||||||
|
winner = self.ctx.author
|
||||||
|
elif self.player2_score > self.player1_score:
|
||||||
|
winner = self.opponent
|
||||||
|
else:
|
||||||
|
winner = None
|
||||||
|
|
||||||
|
if winner:
|
||||||
|
description = f"🎉 **{winner.mention}** won!"
|
||||||
|
else:
|
||||||
|
description = f"🤝 It's a tie!"
|
||||||
|
else:
|
||||||
|
description = "Game Ended. You won!"
|
||||||
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Minesweeper",
|
title="Minesweeper",
|
||||||
description="Game Ended. You won!",
|
description=description,
|
||||||
color=0x00FF00
|
color=0x00FF00
|
||||||
)
|
)
|
||||||
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
@@ -164,6 +271,110 @@ class MsView(discord.ui.View):
|
|||||||
raise
|
raise
|
||||||
self.stop()
|
self.stop()
|
||||||
|
|
||||||
|
async def update_embed(self, interaction):
|
||||||
|
if self.opponent:
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Minesweeper - Multiplayer",
|
||||||
|
description=f"💣 Total Bombs: `{self.bomb_count}`\n\n🎮 **Players:**\n{self.ctx.author.mention} vs {self.opponent.mention}\n\n**Current Turn:** {self.current_player.mention}",
|
||||||
|
color=0x7289DA
|
||||||
|
)
|
||||||
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
else:
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Minesweeper",
|
||||||
|
description=f"💣 Total Bombs: `{self.bomb_count}`\n\nClick the buttons to reveal the grid. Avoid the bombs!",
|
||||||
|
color=0x7289DA
|
||||||
|
)
|
||||||
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
|
||||||
|
await interaction.edit_original_response(embed=embed, view=self)
|
||||||
|
|
||||||
|
async def auto_reveal_safe_squares(self, center_pos, interaction):
|
||||||
|
positions_to_check = [center_pos]
|
||||||
|
revealed_positions = set()
|
||||||
|
current_player_id = interaction.user.id
|
||||||
|
|
||||||
|
while positions_to_check:
|
||||||
|
current_pos = positions_to_check.pop(0)
|
||||||
|
if current_pos in revealed_positions:
|
||||||
|
continue
|
||||||
|
|
||||||
|
revealed_positions.add(current_pos)
|
||||||
|
|
||||||
|
adjacent_positions = []
|
||||||
|
pos = self.GetBoardPos(current_pos)
|
||||||
|
|
||||||
|
if pos > 0 and current_pos - 1 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos - 1)
|
||||||
|
if pos < 4 and current_pos + 1 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos + 1)
|
||||||
|
if current_pos >= 5 and current_pos - 5 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos - 5)
|
||||||
|
if current_pos <= 19 and current_pos + 5 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos + 5)
|
||||||
|
if pos > 0 and current_pos >= 5 and current_pos - 6 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos - 6)
|
||||||
|
if pos < 4 and current_pos >= 5 and current_pos - 4 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos - 4)
|
||||||
|
if pos > 0 and current_pos <= 19 and current_pos + 4 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos + 4)
|
||||||
|
if pos < 4 and current_pos <= 19 and current_pos + 6 not in self.bombs:
|
||||||
|
adjacent_positions.append(current_pos + 6)
|
||||||
|
|
||||||
|
for adj_pos in adjacent_positions:
|
||||||
|
if adj_pos not in self.moves and adj_pos not in revealed_positions:
|
||||||
|
adj_count = []
|
||||||
|
adj_pos_obj = self.GetBoardPos(adj_pos)
|
||||||
|
|
||||||
|
def checkpos_adj(count, rawpos, pos):
|
||||||
|
pos = self.GetBoardPos(rawpos)
|
||||||
|
if not rawpos - 1 in self.bombs or pos == 0:
|
||||||
|
count.append(rawpos - 1)
|
||||||
|
if not rawpos + 1 in self.bombs or pos == 4:
|
||||||
|
count.append(rawpos + 1)
|
||||||
|
if not rawpos - 6 in self.bombs or pos == 0:
|
||||||
|
count.append(rawpos - 6)
|
||||||
|
if not rawpos - 4 in self.bombs or pos == 4:
|
||||||
|
count.append(rawpos - 4)
|
||||||
|
if not rawpos + 6 in self.bombs or pos == 4:
|
||||||
|
count.append(rawpos + 6)
|
||||||
|
if not rawpos + 4 in self.bombs or pos == 0:
|
||||||
|
count.append(rawpos + 4)
|
||||||
|
if not rawpos - 5 in self.bombs:
|
||||||
|
count.append(rawpos - 5)
|
||||||
|
if not rawpos + 5 in self.bombs:
|
||||||
|
count.append(rawpos + 5)
|
||||||
|
return count
|
||||||
|
|
||||||
|
adj_count = checkpos_adj(adj_count, adj_pos, adj_pos_obj)
|
||||||
|
adj_number = 8 - len(adj_count)
|
||||||
|
|
||||||
|
for button in self.children:
|
||||||
|
if int(button.custom_id[5:]) == adj_pos:
|
||||||
|
button.label = str(adj_number) if adj_number > 0 else "0"
|
||||||
|
button.style = discord.ButtonStyle.green
|
||||||
|
break
|
||||||
|
|
||||||
|
self.board[self.GetBoardRow(adj_pos)][self.GetBoardPos(adj_pos)] = str(adj_number) if adj_number > 0 else "0"
|
||||||
|
self.moves.append(adj_pos)
|
||||||
|
|
||||||
|
if self.opponent:
|
||||||
|
if current_player_id == self.ctx.author.id:
|
||||||
|
self.player1_score += 1
|
||||||
|
else:
|
||||||
|
self.player2_score += 1
|
||||||
|
|
||||||
|
if adj_number == 0:
|
||||||
|
positions_to_check.append(adj_pos)
|
||||||
|
|
||||||
|
try:
|
||||||
|
await self.update_embed(interaction)
|
||||||
|
except discord.errors.HTTPException as e:
|
||||||
|
if e.status == 429:
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
def GetBoardRow(self, pos):
|
def GetBoardRow(self, pos):
|
||||||
if pos in [0, 1, 2, 3, 4]:
|
if pos in [0, 1, 2, 3, 4]:
|
||||||
return 0
|
return 0
|
||||||
@@ -198,7 +409,7 @@ class MsView(discord.ui.View):
|
|||||||
return i
|
return i
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def RevealBombs(self, b_id, board):
|
async def RevealBombs(self, b_id, board, interaction):
|
||||||
bombemo = "💣"
|
bombemo = "💣"
|
||||||
|
|
||||||
for button in self.children:
|
for button in self.children:
|
||||||
@@ -218,15 +429,22 @@ class MsView(discord.ui.View):
|
|||||||
self.GetBoardPos(pos)
|
self.GetBoardPos(pos)
|
||||||
] = bombemo
|
] = bombemo
|
||||||
|
|
||||||
|
if self.opponent:
|
||||||
|
loser = self.ctx.author if interaction.user.id == self.ctx.author.id else self.opponent
|
||||||
|
winner = self.opponent if loser.id == self.ctx.author.id else self.ctx.author
|
||||||
|
description = f"💥 BOOM! {loser.mention} hit a bomb!\n🎉 **{winner.mention}** wins!"
|
||||||
|
else:
|
||||||
|
description = f"💥 BOOM! You hit a bomb. Game Over!\n-# gg {self.ctx.author.mention}"
|
||||||
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Minesweeper",
|
title="Minesweeper",
|
||||||
description=f"💥 BOOM! You hit a bomb. Game Over!\n-# gg {self.ctx.author.mention}",
|
description=description,
|
||||||
color=0xE02B2B
|
color=0xE02B2B
|
||||||
)
|
)
|
||||||
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await self.message.edit(embed=embed, view=self)
|
await interaction.edit_original_response(embed=embed, view=self)
|
||||||
except discord.errors.HTTPException as e:
|
except discord.errors.HTTPException as e:
|
||||||
if e.status == 429:
|
if e.status == 429:
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
@@ -239,7 +457,10 @@ def minesweeper_command():
|
|||||||
name="minesweeper",
|
name="minesweeper",
|
||||||
description="Play a buttoned minesweeper mini-game."
|
description="Play a buttoned minesweeper mini-game."
|
||||||
)
|
)
|
||||||
async def minesweeper(self, context):
|
@app_commands.describe(
|
||||||
|
opponent="Optional user to play against in multiplayer mode."
|
||||||
|
)
|
||||||
|
async def minesweeper(self, context, opponent: discord.User = None):
|
||||||
board = [["឵឵ "] * 5 for _ in range(5)]
|
board = [["឵឵ "] * 5 for _ in range(5)]
|
||||||
bomb_count = random.randint(4, 11)
|
bomb_count = random.randint(4, 11)
|
||||||
|
|
||||||
@@ -250,6 +471,27 @@ def minesweeper_command():
|
|||||||
new_b.append(y)
|
new_b.append(y)
|
||||||
return new_b
|
return new_b
|
||||||
|
|
||||||
|
if opponent:
|
||||||
|
if opponent.id == context.author.id:
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Error!",
|
||||||
|
description="You cannot play against yourself!",
|
||||||
|
color=0xE02B2B
|
||||||
|
)
|
||||||
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
return await context.send(embed=embed, ephemeral=True)
|
||||||
|
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Minesweeper Challenge",
|
||||||
|
description=f"🎮 **{opponent.mention}**, you are challenged by **{context.author.mention}** to a round of Minesweeper!\n\n💣 Total Bombs: `{bomb_count}`",
|
||||||
|
color=0x7289DA
|
||||||
|
)
|
||||||
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
|
||||||
|
view = ChallengeConfirmView(context, context.author, opponent, bomb_count, board)
|
||||||
|
message = await context.send(embed=embed, view=view)
|
||||||
|
view.message = message
|
||||||
|
else:
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Minesweeper",
|
title="Minesweeper",
|
||||||
description=f"💣 Total Bombs: `{bomb_count}`\n\nClick the buttons to reveal the grid. Avoid the bombs!",
|
description=f"💣 Total Bombs: `{bomb_count}`\n\nClick the buttons to reveal the grid. Avoid the bombs!",
|
||||||
@@ -257,7 +499,7 @@ def minesweeper_command():
|
|||||||
)
|
)
|
||||||
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
embed.set_author(name="Fun", icon_url="https://yes.nighty.works/raw/eW5lLm.webp")
|
||||||
|
|
||||||
view = MsView(context, ExtractBlocks(), bomb_count, board)
|
view = MsView(context, ExtractBlocks(), bomb_count, board, opponent)
|
||||||
message = await context.send(embed=embed, view=view)
|
message = await context.send(embed=embed, view=view)
|
||||||
view.message = message
|
view.message = message
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user