well that was fucking retarded
This commit is contained in:
parent
9b78aa2ce5
commit
65fbb69733
2 changed files with 22 additions and 20 deletions
25
main.py
25
main.py
|
|
@ -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 ""
|
||||||
|
|
|
||||||
17
tools.py
17
tools.py
|
|
@ -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:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue