2026-03-21 00:25:40 +00:00

34 lines
1.2 KiB
Python

from aioq3rcon import Client
from clypi import Command, Positional, Spinner, arg
from typing_extensions import override
from q3rcon_cli.console import Console
class Map(Command):
"""Get the current map or change to a new one."""
new_map: Positional[str] = arg(
help='The new map to change to (optional). If not provided, the current map will be printed.',
default='',
)
host: str = arg(inherited=True)
port: int = arg(inherited=True)
password: str = arg(inherited=True)
@override
async def run(self):
if not self.new_map:
async with Client(self.host, self.port, self.password) as client:
if response := await client.send_command('mapname'):
Console.print_cvar(response)
return
async with Spinner('Changing map...'):
async with Client(
self.host, self.port, self.password, fragment_read_timeout=1
) as client:
await client.send_command(f'map mp_{self.new_map.removeprefix("mp_")}')
if response := await client.send_command('mapname'):
Console.print_cvar(response)