From e23dcbda476db43355e4e53f9e88592b5c88d831 Mon Sep 17 00:00:00 2001 From: gsd Date: Fri, 3 Mar 2023 22:48:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D1=84=D0=B8?= =?UTF-8?q?=D1=88=D0=B5=D1=87=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 7 ++++--- exceptions.py | 3 +++ player.py | 34 ++++++++++++++++++++++++++++------ user_ext/powered.py | 14 ++++++++++++++ 4 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 user_ext/powered.py diff --git a/bot.py b/bot.py index 7ecf646..ea03231 100644 --- a/bot.py +++ b/bot.py @@ -11,7 +11,7 @@ from exceptions import * #Скрыть сообщение если надо ephemeral=True class DiscordClient(discord.Client): - ANY_INPUT = "ссылка на стим | имя игрока | стимид" + ANY_INPUT = "ссылка на стим | имя игрока | стимид | ид бана через #" discord2steam_cache = {} backend_url = "" secret_key = "" @@ -59,8 +59,9 @@ class DiscordClient(discord.Client): if isinstance(error.original, CannotCastToSteamID): return await interaction.response.send_message("Не возможно найти такой профиль, попробуй написать иные данные!", ephemeral=True) elif isinstance(error.original, LowPermition): - #Добавить проверку на модератора или в бекенде добавить другой код ответа - return await interaction.response.send_message("Это не для тебя и не для таких как ты сделано...\n", ephemeral=True) + return await interaction.response.send_message("Это не для тебя и не для таких как ты сделано...", ephemeral=True) + elif isinstance(error.original, AdminLowPermition): + return await interaction.response.send_message("Нельзя сделать это действие, ибо ты крут, но не настолько чтоб это совершить", ephemeral=True) elif isinstance(error.original, NotFoundPlayerOnServer): return await interaction.response.send_message("Игрок не найден на серверах", ephemeral=True) elif isinstance(error.original, UnknownBackendResponse): diff --git a/exceptions.py b/exceptions.py index e2bb3dd..0adfd4c 100644 --- a/exceptions.py +++ b/exceptions.py @@ -14,4 +14,7 @@ class NotFoundPlayerOnServer(Exception): pass class UnknownBackendResponse(Exception): + pass + +class AdminLowPermition(Exception): pass \ No newline at end of file diff --git a/player.py b/player.py index cb089cf..c7fe071 100644 --- a/player.py +++ b/player.py @@ -163,10 +163,12 @@ class Player: result = await response.text() if response.status == 200: return "Кикнут с серверов" - if response.status == 404: + elif response.status == 404: raise NotFoundPlayerOnServer - if response.status == 403: + elif response.status == 403: raise LowPermition + elif response.status == 406: + raise AdminLowPermition raise UnknownBackendResponse async def rcon(self, command, args): @@ -190,13 +192,33 @@ class Player: "secretkey":os.getenv("BACKEND_SECRETKEY"), "steam64": self.requester_steam64}) as session: async with session.post(f"{os.getenv('BACKEND_URL')}/api/admin/ban?steam64={self.steam64}&ban_reason={reason}&ban_length={minutes}", ssl=False) as response: - await response.text() + ban_id = await response.text() if response.status == 201: - return "Игрок забанен или уже был в бане" - if response.status == 404: + return f"Игрок теперь забанен! Ид бана: #{ban_id}" + elif response.status == 202: + return f"Игрок уже в бане! Ид бана #{ban_id}" + elif response.status == 404: raise NotFoundPlayerOnServer - if response.status == 403: + elif response.status == 403: raise LowPermition + elif response.status == 406: + raise AdminLowPermition + raise UnknownBackendResponse + + async def unban(self): + async with aiohttp.ClientSession(cookies={ + "secretkey":os.getenv("BACKEND_SECRETKEY"), + "steam64": self.requester_steam64}) as session: + async with session.post(f"{os.getenv('BACKEND_URL')}/api/admin/unban?steam64={self.steam64}", ssl=False) as response: + ban_id = await response.text() + if response.status == 200: + return f"Игрок теперь разбанен!" + elif response.status == 404: + return f"Игрок не в бане(" + elif response.status == 403: + raise LowPermition + elif response.status == 406: + raise AdminLowPermition raise UnknownBackendResponse ############### diff --git a/user_ext/powered.py b/user_ext/powered.py new file mode 100644 index 0000000..ef82a48 --- /dev/null +++ b/user_ext/powered.py @@ -0,0 +1,14 @@ +import discord + +class Extension: + def __init__(self, core): + @core.tree.command(name = "powered", description = "Информация о боте") + async def powered( + interaction: discord.Interaction + ): + return await interaction.response.send_message(f""" +Крутой бот на '/ API' для взаимодействие с сервисами фактов13! +Создан на основе: https://github.com/Rapptz/discord.py ({discord.__version__}) +Исходник бота: https://git.pblr-nyk.pro/gsd/Facti13.Bot.Discord.V2 +Исходник сервисов: https://git.pblr-nyk.pro/gsd/Facti13.Web.Backend.Java.V2 +""", ephemeral=False) \ No newline at end of file