Files
uzbekgpt/callbacks.py
T

220 lines
7.4 KiB
Python
Raw Normal View History

2026-05-22 19:34:48 +03:00
# from aiogram.methods import SendMessageDraft
from aiogram import F
from aiogram.types import (
CallbackQuery,
InlineKeyboardButton,
InlineKeyboardMarkup,
)
from commands import *
from config import *
from supergenerator import *
@router.callback_query(F.data.startswith("prov%"))
async def select_provider_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 3)
user_id, user_model, provider = data[1], data[2], data[3]
if user_id != current_user_id:
await callback.answer("не для тебя.")
return
buttons = []
for model in MODELS.get(provider):
if f"{provider}*{model}" == user_model:
text = f"{model} ✅"
else:
text = model
buttons.append(
[
InlineKeyboardButton(
text=text, callback_data=f"set_model%{user_id}%{provider}*{model}"
)
]
)
if not buttons:
buttons = [
[
InlineKeyboardButton(
text="🚫 нет моделей", callback_data=f"models%{user_id}"
)
]
]
buttons.append(
[InlineKeyboardButton(text="назад", callback_data=f"models%{user_id}")]
)
await callback.message.edit_text(
f"выбран провайдер: {PROVIDERS.get(provider).get('name')}\nвыбери модель:",
reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons),
)
await callback.answer()
@router.callback_query(F.data.startswith("models%"))
async def models_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 1)
user_id = data[1]
if user_id == current_user_id:
config = get_user_config(user_id)
model = config.get("model")
buttons = []
2026-05-22 21:40:49 +03:00
2026-05-22 19:34:48 +03:00
for provider in MODELS:
buttons.append(
[
InlineKeyboardButton(
text=PROVIDERS.get(provider).get("name"),
callback_data=f"prov%{user_id}%{model}%{provider}",
)
]
)
if not buttons:
buttons.append(
[
InlineKeyboardButton(
text="🚫 нет провайдеров!", callback_data=f"settings%{user_id}"
)
]
)
buttons.append(
[InlineKeyboardButton(text="назад", callback_data=f"settings%{user_id}")]
)
await callback.message.edit_text(
"выбери провайдера:",
reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons),
)
await callback.answer()
else:
await callback.answer("не тыкай. это не для тебя.")
@router.callback_query(F.data.startswith("set_model%"))
async def set_model_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 2)
user_id, new_model = data[1], data[2]
if user_id == current_user_id:
current_config = get_user_config(user_id)
set_user_config(user_id, new_model, current_config.get("stream", True))
await callback.message.edit_text(f"выбрана модель: `{new_model}`")
await callback.answer(f"выбрано: {new_model}")
else:
await callback.answer("нет, не трогай")
@router.callback_query(F.data.startswith("settings%"))
async def settings_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 1)
user_id = data[1]
if user_id != current_user_id:
await callback.answer("нет, не трогай")
return
await settings_handler(callback)
@router.callback_query(F.data.startswith("set_stream%"))
async def set_stream_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 2)
user_id = data[1]
if user_id != current_user_id:
await callback.answer("нет, не трогай это не твое")
return
new_status = callback.data.split("%")[2]
config = get_user_config(user_id)
if new_status == "native":
set_user_config(user_id, config.get("model"), "native", config.get("call"))
elif new_status == "edit":
set_user_config(user_id, config.get("model"), "edit", config.get("call"))
else:
set_user_config(user_id, config.get("model"), "none", config.get("call"))
await settings_handler(callback)
@router.callback_query(F.data.startswith("set_call%"))
async def set_call_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 2)
user_id = data[1]
if user_id != current_user_id:
await callback.answer("нет, не трогай это не твое")
return
new_status = callback.data.split("%")[2]
config = get_user_config(user_id)
set_user_config(user_id, config.get("model"), config.get("stream"), new_status)
await settings_handler(callback)
@router.callback_query(F.data == "start")
async def start_callback(callback: CallbackQuery):
await callback.message.edit_text(
"✅ я рад что вас заинтересовать✅✅ а теперь напише любое сообщение и свободный узбек вам ответит✅\n\n"
"/start - ага старт\n"
"/clear - очистить контекст✅\n"
"/settings - настройки✅\n"
"/prompt - системный промпт узбека"
)
await callback.answer()
@router.callback_query(F.data.startswith("about%"))
async def about_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 1)
user_id = data[1]
if user_id != current_user_id:
await callback.answer("нет, не трогай")
return
buttons = [
[InlineKeyboardButton(text="назад", callback_data=f"settings%{user_id}")]
]
await callback.message.edit_text(
2026-06-18 22:04:23 +03:00
ABOUT_BOT,
reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons),
)
await callback.answer()
@router.callback_query(F.data.startswith("donate%"))
async def donate_callback(callback: CallbackQuery):
current_user_id = str(callback.from_user.id)
data = callback.data.split("%", 1)
user_id = data[1]
if user_id != current_user_id:
await callback.answer("нет, не трогай")
return
buttons = [
[InlineKeyboardButton(text="назад", callback_data=f"settings%{user_id}")],
]
await callback.message.edit_text(
"слушай сюда✅ если хочешь чтобы я не сдох от голода и не начал "
"писать на китайском✅ кидай сюда монеты👍\n\n"
"наполни чан узбекгпта на плов✅ а то мозги скрипят как старый таган ✅\n\n"
"ссылка внизу👍 whoever хочет быть красавчиком✅ кидай сколько не жалко👍\n\n"
f"{DONATE_LINK}",
2026-05-22 19:34:48 +03:00
reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons),
)
await callback.answer()