You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

27 lines
1.5 KiB

import discord
import aiohttp
class Extension:
def __init__(self, core):
@core.tree.command(name = "rcon", description = "Вызвать команду на сервере")
@discord.app_commands.describe(servers="Нужным сервер", command="Команда исполнения")
@discord.app_commands.checks.has_role("Администратор")
@discord.app_commands.choices(servers = core.GetServersChoice())
async def rcon_command(
interaction: discord.Interaction,
servers: discord.app_commands.Choice[str],
command: str
):
await interaction.response.defer(thinking=True)
steam64 = await core.GetSteam64OfDiscord(interaction.user)
server = servers.value
if not server in core.stats.get("servers", {}).keys():
return await interaction.followup.send(f"Сервер с таким индификатором не существует, введи существующий из предложенных:\n{' '.join(core.stats.get('servers', {}).keys())}", ephemeral=False)
async with aiohttp.ClientSession(cookies={"secretkey":core.secret_key, "steam64":steam64}) as session:
async with session.post(f"{core.backend_url}/api/admin/rcon?srv={server}&command={command}", ssl=False) as response:
res = await response.text()
if response.status == 200:
return await interaction.followup.send(f'Ответ: {res}', ephemeral=False)
else:
return await interaction.followup.send('хуй тебе', ephemeral=False)