diff options
| author | huker667 <huker@tuta.io> | 2026-05-22 19:34:48 +0300 |
|---|---|---|
| committer | huker667 <huker@tuta.io> | 2026-05-22 19:34:48 +0300 |
| commit | b027361586f776292260afff871c85b05359cf3d (patch) | |
| tree | cd6b18db73c162292a903090b85a0f19e1fbf743 /callbacks.py | |
| download | uzbekgpt-b027361586f776292260afff871c85b05359cf3d.tar.gz uzbekgpt-b027361586f776292260afff871c85b05359cf3d.tar.bz2 uzbekgpt-b027361586f776292260afff871c85b05359cf3d.zip | |
first commit
Diffstat (limited to 'callbacks.py')
| -rw-r--r-- | callbacks.py | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/callbacks.py b/callbacks.py new file mode 100644 index 0000000..8de4386 --- /dev/null +++ b/callbacks.py @@ -0,0 +1,198 @@ +# 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 = [] + + 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( + "✅ *об узбекгпт* ✅\n" + "- создал @huker667\n" + "- репозиторий бота: https://codeberg.org/huker667/UzbekGPT\n" + "- подпешис: t.me/hukerass", + reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons), + ) + + await callback.answer() |