well that was fucking retarded

This commit is contained in:
xory 2025-08-15 12:13:12 +00:00
parent 9b78aa2ce5
commit 65fbb69733
2 changed files with 22 additions and 20 deletions

25
main.py
View file

@ -4,6 +4,8 @@ from dotenv import load_dotenv
from discord import app_commands from discord import app_commands
from discord.ext import commands from discord.ext import commands
from tools import searxng, open_url, run_command from tools import searxng, open_url, run_command
from traceback import print_exc
import asyncio
import os import os
import io import io
import discord import discord
@ -38,11 +40,24 @@ async def generation(interaction: discord.Interaction) -> None:
@app_commands.allowed_contexts(guilds=True, dms=True, private_channels=True) @app_commands.allowed_contexts(guilds=True, dms=True, private_channels=True)
async def ask(interaction: discord.Interaction, prompt: str) -> None: async def ask(interaction: discord.Interaction, prompt: str) -> None:
await interaction.response.defer() await interaction.response.defer()
response = await client.aio.models.generate_content( response: types.GenerateContentResponse | None = None
model="gemini-2.5-flash", for _ in range(5):
contents=prompt, try:
config=config response = await client.aio.models.generate_content(
) model="gemini-2.5-flash",
contents=[
prompt
],
config=config
)
break
except:
print_exc()
await asyncio.sleep(10)
continue
if not response:
await interaction.edit_original_response(content="`[E] API Error. Please try again later.`")
return
if not response.text: if not response.text:
await interaction.edit_original_response(content="`[E] Model returned no response`") await interaction.edit_original_response(content="`[E] Model returned no response`")
generation: str = response.text or "" generation: str = response.text or ""

View file

@ -33,13 +33,6 @@ SUPPORTED_TEXT_MIMETYPES = [
"application/x-yaml", "application/x-yaml",
] ]
SUPPORTED_IMAGE_DOCUMENT_MIMETYPES = [
"application/pdf",
"image/png",
"image/apng",
"image/jpeg"
]
async def searxng(query: str) -> list: async def searxng(query: str) -> list:
""" """
@ -89,7 +82,7 @@ async def searxng(query: str) -> list:
return results return results
async def open_url(url: str) -> dict | types.Part: async def open_url(url: str) -> dict:
""" """
Opens a URL and returns its full content (if it's HTML, it will be converted to clean Markdown). Opens a URL and returns its full content (if it's HTML, it will be converted to clean Markdown).
Use this when a `search` result's content is insufficient or when a user provides a direct URL to analyze. Use this when a `search` result's content is insufficient or when a user provides a direct URL to analyze.
@ -116,19 +109,13 @@ async def open_url(url: str) -> dict | types.Part:
content_type = response.content_type.split(";")[0].strip() content_type = response.content_type.split(";")[0].strip()
content_length = response.content_length or 0 content_length = response.content_length or 0
if content_type not in SUPPORTED_TEXT_MIMETYPES + SUPPORTED_IMAGE_DOCUMENT_MIMETYPES: if content_type not in SUPPORTED_TEXT_MIMETYPES:
return { return {
"content_type": content_type, "content_type": content_type,
"content_length": content_length, "content_length": content_length,
"content": None, "content": None,
} }
if content_type in SUPPORTED_IMAGE_DOCUMENT_MIMETYPES:
return types.Part.from_bytes(
data=await response.read(),
mime_type=content_type
)
if "text/html" in content_type: if "text/html" in content_type:
content = markdownify(await response.text()) content = markdownify(await response.text())
if len(content) > 262144: if len(content) > 262144: