37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
import uuid
|
|
from telegram import Update, InlineQueryResultArticle, InputTextMessageContent
|
|
from telegram.ext import ContextTypes
|
|
from services import auth, ai_client
|
|
from utils.context import get_system_prompt, get_user_settings
|
|
|
|
|
|
async def inline_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|
query = update.inline_query.query.strip()
|
|
user_id = update.inline_query.from_user.id
|
|
|
|
if not auth.is_authorized(user_id):
|
|
await update.inline_query.answer([], cache_time=0)
|
|
return
|
|
|
|
if not query:
|
|
await update.inline_query.answer([], cache_time=0)
|
|
return
|
|
|
|
try:
|
|
settings = get_user_settings(user_id)
|
|
max_tokens = min(settings["max_tokens"], 300)
|
|
answer = await ai_client.quick_reply(query, get_system_prompt(), max_tokens=max_tokens)
|
|
except Exception as e:
|
|
answer = f"Error: {e}"
|
|
|
|
result = InlineQueryResultArticle(
|
|
id=str(uuid.uuid4()),
|
|
title="Puppy's answer",
|
|
description=answer[:120] + ("…" if len(answer) > 120 else ""),
|
|
input_message_content=InputTextMessageContent(
|
|
message_text=answer,
|
|
),
|
|
)
|
|
|
|
await update.inline_query.answer([result], cache_time=0)
|