# 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()