From 7451a2e625058f7ab908131a4fd9b769c6c2c8a9 Mon Sep 17 00:00:00 2001 From: SeaswimmerTheFsh Date: Mon, 24 Jul 2023 09:01:06 -0400 Subject: [PATCH] fix: power commands now use aiohttp instead of requests --- pterodactyl/ptero.py | 45 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/pterodactyl/ptero.py b/pterodactyl/ptero.py index cee959d..a578d83 100644 --- a/pterodactyl/ptero.py +++ b/pterodactyl/ptero.py @@ -135,9 +135,9 @@ class Pterodactyl(commands.Cog): await interaction.response.defer(ephemeral=True, thinking=True) interaction_message = await interaction.original_response() headers = await self.get_headers(interaction.guild) - response = requests.get(await self.get_url(interaction.guild, "resources"), headers=headers) - requests_json = response.json() - current_status = requests_json['attributes']['current_state'] + async with self.session.get(await self.get_url(interaction.guild, "resources"), headers=headers) as response: + response_json = response.json() + current_status = response_json['attributes']['current_state'] if current_status == "offline": passed_info = { "headers": headers, @@ -148,7 +148,7 @@ class Pterodactyl(commands.Cog): "message": "Server starting...", "completed_message": "Server started!" } - await interaction_message.edit(content="Are you sure you'd like to start the server?", view=self.PowerButtons(timeout=180, passed_info=passed_info)) + await interaction_message.edit(content="Are you sure you'd like to start the server?", view=self.PowerButtons(timeout=180, passed_info=passed_info, session=self.session)) else: message = await interaction_message.edit(content="The server is already running!") await message.delete(delay=3) @@ -160,9 +160,9 @@ class Pterodactyl(commands.Cog): await interaction.response.defer(ephemeral=True, thinking=True) interaction_message = await interaction.original_response() headers = await self.get_headers(interaction.guild) - response = requests.get(await self.get_url(interaction.guild, "resources"), headers=headers) - requests_json = response.json() - current_status = requests_json['attributes']['current_state'] + async with self.session.get(await self.get_url(interaction.guild, "resources"), headers=headers) as response: + response_json = response.json() + current_status = response_json['attributes']['current_state'] if current_status == "running": passed_info = { "headers": headers, @@ -173,7 +173,7 @@ class Pterodactyl(commands.Cog): "message": "Server restarting...", "completed_message": "Server restarted!" } - await interaction_message.edit(content="Are you sure you'd like to restart the server?", view=self.PowerButtons(timeout=180, passed_info=passed_info)) + await interaction_message.edit(content="Are you sure you'd like to restart the server?", view=self.PowerButtons(timeout=180, passed_info=passed_info, session=self.session)) elif current_status == "offline": message = await interaction_message.edit(content="The server is offline!") await message.delete(delay=3) @@ -188,9 +188,9 @@ class Pterodactyl(commands.Cog): await interaction.response.defer(ephemeral=True, thinking=True) interaction_message = await interaction.original_response() headers = await self.get_headers(interaction.guild) - response = requests.get(await self.get_url(interaction.guild, "resources"), headers=headers) - requests_json = response.json() - current_status = requests_json['attributes']['current_state'] + async with requests.get(await self.get_url(interaction.guild, "resources"), headers=headers) as response: + response_json = response.json() + current_status = response_json['attributes']['current_state'] if current_status == "running" or current_status == "starting": passed_info = { "headers": headers, @@ -201,7 +201,7 @@ class Pterodactyl(commands.Cog): "message": "Server stopping...", "completed_message": "Server stopped!" } - await interaction_message.edit(content="Are you sure you'd like to stop the server?", view=self.PowerButtons(timeout=180, passed_info=passed_info)) + await interaction_message.edit(content="Are you sure you'd like to stop the server?", view=self.PowerButtons(timeout=180, passed_info=passed_info, session=self.session)) elif current_status == "offline": message = await interaction_message.edit(content="The server is already offline!") await message.delete(delay=3) @@ -262,25 +262,26 @@ class Pterodactyl(commands.Cog): await message.delete(delay=3) class PowerButtons(ui.View): - def __init__(self, timeout, passed_info): + def __init__(self, timeout, passed_info, session: aiohttp.ClientSession): super().__init__() self.passed_info = passed_info + self.session = session self.config = Config.get_conf(None, cog_name='Pterodactyl', identifier=457581387213637448123567) @ui.button(label="Yes", style=discord.ButtonStyle.success) async def yes_button(self, button:ui.Button, interaction:discord.Interaction): headers = self.passed_info['headers'] - requests.post(await Pterodactyl.get_url(self, self.passed_info['guild'], "power"), headers=headers, json={"signal": self.passed_info['signal']}) + await self.session.post(await Pterodactyl.get_url(self, self.passed_info['guild'], "power"), headers=headers, json={"signal": self.passed_info['signal']}) message = await self.passed_info['interaction'].edit_original_response(content=self.passed_info['message'], view=None) while True: - async with aiohttp.ClientSession() as session: - async with session.get(await Pterodactyl.get_url(self, self.passed_info['guild'], "resources"), headers=headers) as response: - response_dict = await response.json() - if response_dict['attributes']['current_state'] == self.passed_info['target_signal']: - await message.edit(content=self.passed_info['completed_message']) - break - else: - await asyncio.sleep(1) + async with self.session.get(await Pterodactyl.get_url(self, self.passed_info['guild'], "resources"), headers=headers) as response: + response_dict = await response.json() + if response_dict['attributes']['current_state'] == self.passed_info['target_signal']: + await message.edit(content=self.passed_info['completed_message']) + break + else: + await asyncio.sleep(1) + continue continue @ui.button(label="No", style=discord.ButtonStyle.danger)