From 3fbc996de182ea03bb1fefda563ec54100ed1bc3 Mon Sep 17 00:00:00 2001 From: wirehack7 Date: Thu, 1 May 2025 15:52:18 +0200 Subject: [PATCH] switched to aiohttp --- src/main.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main.py b/src/main.py index 8749a1b..d74c403 100644 --- a/src/main.py +++ b/src/main.py @@ -12,6 +12,7 @@ import zipfile import discord import requests +import aiohttp from discord import app_commands from discord.ext import commands @@ -30,7 +31,7 @@ logger = logging.getLogger(__name__) if not all([NOVELAI_API_TOKEN, BOT_TOKEN, ALLOWED_CHANNEL_ID]): raise ValueError( - "NOVELAI_API_TOKEN, DISCORD_BOT_TOKEN und DISCORD_CHANNEL_ID müssen gesetzt sein." + "NOVELAI_API_TOKEN, DISCORD_BOT_TOKEN and DISCORD_CHANNEL_ID have to be set." ) intents = discord.Intents.default() @@ -43,9 +44,9 @@ async def on_ready(): print(f"Bot gestartet als {bot.user}") try: synced = await bot.tree.sync() - logger.info("%d Slash-Commands synchronisiert.", len(synced)) + logger.info("%d Slash-Commands synchronized.", len(synced)) except Exception as err: # pylint: disable=W0718 - logger.error("Fehler beim Synchronisieren der Commands: %s", err) + logger.error("error while syncing the command: %s", err) activity = discord.Game(name="generating juicy NovelAI images 🥵") await bot.change_presence(status=discord.Status.online, activity=activity) @@ -165,11 +166,21 @@ async def generate( headers=headers, timeout=120, ) + + async with aiohttp.ClientSession() as session: + async with session.post( + "https://image.novelai.net/ai/generate-image", + json=payload, + headers=headers, + timeout=aiohttp.ClientTimeout(total=120), + ) as response: + response_bytes = await response.read() + status_code = response.status + duration = time.monotonic() - start_time logger.info("Image creation took %.2f seconds", duration) - if response.status_code == 200: - response_bytes = response.content + if status_code == 200: param_text = ( f"```Prompt: {prompt}\n" f"Undesired prompt: {negative_prompt}\n" @@ -206,13 +217,14 @@ async def generate( return try: - error_data = response.json() + error_data = response_bytes.decode("utf-8") except Exception: # pylint: disable=W0718 - error_data = {"error": response.text} + error_data = "error message unreadable" - error_message = f"Error {response.status_code} at API-request.\n" - for key, value in error_data.items(): - error_message += f"**{key}**: {value}\n" + error_message = ( + f"Error {status_code} at API-request.\n" + f"Answer: {error_data}\n" + ) await interaction.followup.send(error_message)