aboutsummaryrefslogtreecommitdiff
path: root/callbacks.py
diff options
context:
space:
mode:
Diffstat (limited to 'callbacks.py')
-rw-r--r--callbacks.py198
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()