modified: app.py
This commit is contained in:
92
app.py
92
app.py
@@ -665,6 +665,98 @@ async def hoi4create(ctx, game_type: str, game_name: str):
|
||||
except Exception as e:
|
||||
await ctx.send(f"❌ Error creating game: {str(e)}")
|
||||
|
||||
@bot.hybrid_command(name='hoi4delete', description='Delete a game lobby')
|
||||
async def hoi4delete(ctx, game_name: str):
|
||||
"""Delete a game lobby that is in setup phase"""
|
||||
try:
|
||||
async with db_pool.acquire() as conn:
|
||||
async with conn.cursor(aiomysql.DictCursor) as cursor:
|
||||
# Get the game
|
||||
await cursor.execute(
|
||||
"SELECT * FROM games WHERE game_name = %s AND status = 'setup'",
|
||||
(game_name,)
|
||||
)
|
||||
game = await cursor.fetchone()
|
||||
|
||||
if not game:
|
||||
await ctx.send(f"❌ No active game found with name '{game_name}' in setup phase!")
|
||||
return
|
||||
|
||||
# Delete the game
|
||||
await cursor.execute(
|
||||
"DELETE FROM games WHERE id = %s",
|
||||
(game['id'],)
|
||||
)
|
||||
|
||||
embed = discord.Embed(
|
||||
title="🗑️ Game Deleted",
|
||||
description=f"Game '{game_name}' has been deleted!",
|
||||
color=discord.Color.red()
|
||||
)
|
||||
embed.add_field(name="Game Name", value=game_name, inline=True)
|
||||
embed.add_field(name="Type", value=game['game_type'].title(), inline=True)
|
||||
embed.set_footer(text=f"Deleted by {ctx.author}")
|
||||
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
except Exception as e:
|
||||
await ctx.send(f"❌ Error deleting game: {str(e)}")
|
||||
|
||||
@bot.hybrid_command(name='hoi4remove', description='Remove a player from an existing game')
|
||||
async def hoi4remove(ctx, game_name: str, user: discord.Member):
|
||||
"""Remove a player from an existing game"""
|
||||
try:
|
||||
async with db_pool.acquire() as conn:
|
||||
async with conn.cursor(aiomysql.DictCursor) as cursor:
|
||||
# Get the game
|
||||
await cursor.execute(
|
||||
"SELECT * FROM games WHERE game_name = %s AND status = 'setup'",
|
||||
(game_name,)
|
||||
)
|
||||
game = await cursor.fetchone()
|
||||
|
||||
if not game:
|
||||
await ctx.send(f"❌ No game found with name '{game_name}' in setup phase!")
|
||||
return
|
||||
|
||||
# Parse existing players
|
||||
players = json.loads(game['players']) if game['players'] else []
|
||||
|
||||
# Find and remove the player
|
||||
player_found = False
|
||||
new_players = []
|
||||
for p in players:
|
||||
if p['discord_id'] == user.id:
|
||||
player_found = True
|
||||
# Skip this player (don't add to new_players)
|
||||
else:
|
||||
new_players.append(p)
|
||||
|
||||
if not player_found:
|
||||
await ctx.send(f"❌ {user.display_name} is not in this game!")
|
||||
return
|
||||
|
||||
# Update game with new player list
|
||||
await cursor.execute(
|
||||
"UPDATE games SET players = %s WHERE id = %s",
|
||||
(json.dumps(new_players), game['id'])
|
||||
)
|
||||
|
||||
embed = discord.Embed(
|
||||
title="✅ Player Removed",
|
||||
description=f"{user.display_name} has been removed from '{game_name}'!",
|
||||
color=discord.Color.orange()
|
||||
)
|
||||
embed.add_field(name="Player", value=user.display_name, inline=True)
|
||||
embed.add_field(name="Game", value=game_name, inline=True)
|
||||
embed.add_field(name="Players Left", value=len(new_players), inline=True)
|
||||
embed.set_footer(text=f"Removed by {ctx.author}")
|
||||
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
except Exception as e:
|
||||
await ctx.send(f"❌ Error removing player: {str(e)}")
|
||||
|
||||
@bot.hybrid_command(name='hoi4setup', description='Add a player to an existing game')
|
||||
async def hoi4setup(ctx, game_name: str, user: discord.Member, team_name: str, t_level: int, country: Optional[str] = None):
|
||||
"""Add a player to an existing game"""
|
||||
|
||||
Reference in New Issue
Block a user