aboutsummaryrefslogtreecommitdiff
path: root/commands.py
diff options
context:
space:
mode:
authorhuker667 <huker@tuta.io>2026-08-03 09:37:10 +0300
committerhuker667 <huker@tuta.io>2026-08-03 09:37:10 +0300
commita14713a286e5e3ea14f47226472689ebcffe49d9 (patch)
tree674a17b6e058285f791ba9dcccaeea5a055e87b3 /commands.py
parente3116d490eb764b5c23edfcd6f2674432d31bcea (diff)
downloaduzbekgpt-a14713a286e5e3ea14f47226472689ebcffe49d9.tar.gz
uzbekgpt-a14713a286e5e3ea14f47226472689ebcffe49d9.tar.bz2
uzbekgpt-a14713a286e5e3ea14f47226472689ebcffe49d9.zip
пиздец обнова конечно
Diffstat (limited to 'commands.py')
-rw-r--r--commands.py129
1 files changed, 116 insertions, 13 deletions
diff --git a/commands.py b/commands.py
index 6b2e172..beecfd1 100644
--- a/commands.py
+++ b/commands.py
@@ -43,7 +43,10 @@ commands = [
"/clear",
"/stop",
"/markpidor",
- "/aben"
+ "/aben",
+ "/button",
+ "/clean",
+ "/reset"
]
@router.message(Command("stats"))
@@ -89,6 +92,63 @@ async def stats_handler(message: Message):
await message.reply("\n".join(text))
+@router.message(Command("button"))
+async def button_handler(message: Message):
+ if message.from_user.id != ADMIN_ID:
+ return await message.reply("🚫 pashol naxxuy.")
+
+ text = message.text.removeprefix("/button").strip()
+ if not text:
+ return await message.reply(
+ "крч это типо генератор инлайн кнопки да только для тестов пж использовать\n"
+ "🚫 напиши callback после команды ало."
+ )
+
+ keyboard = InlineKeyboardMarkup(
+ inline_keyboard=[
+ [InlineKeyboardButton(text=text, callback_data=text)],
+ ]
+ )
+
+ await message.reply(
+ "✅ кнопка крутая ниже"
+ " кнопка крутая ниже"
+ " кнопка крутая ниже"
+ " кнопка крутая ниже"
+ " кнопка крутая ниже",
+ reply_markup=keyboard
+ )
+
+
+@router.message(Command("reset"))
+async def reset_handler(message: Message, command: CommandObject):
+ if message.from_user.id != ADMIN_ID:
+ return
+ args = command.args
+ if not args or len(args.split()) < 2:
+ return await message.answer("dayn eblan suka")
+ users = get_all_user_ids()
+ key, val = args.split()[0], args.split()[1]
+ for user_id in users:
+ reset_user_setting(user_id, key, val)
+ await message.answer(f"✅ сбросил всем {key} на {val}")
+
+
+@router.message(Command("clean"))
+async def clean_db_handler(message: Message):
+ if message.from_user.id != ADMIN_ID:
+ return
+ users = get_all_user_ids()
+ success, deleted = 0, 0
+ for user_id in users:
+ try:
+ await message.bot.send_chat_action(user_id, "typing")
+ success += 1
+ except:
+ delete_user_from_db(user_id)
+ deleted += 1
+ await message.answer(f"✅ *готово врат.*\n- сохранено {success}\n- удалено {deleted}")
+
@router.message(Command("broadcast"))
async def broadcast_handler(message: Message):
@@ -207,14 +267,14 @@ async def start_handler(message: Message, command: CommandObject):
"привет, запусти эту команду в ЛиС (личные сообщения) бота✅"
)
return
-
+
if message.sender_chat:
user_id = message.sender_chat.id
else:
user_id = message.from_user.id
config = get_user_config(user_id)
-
+
payload = command.args
if payload == "new_md":
set_user_config(
@@ -226,7 +286,7 @@ async def start_handler(message: Message, command: CommandObject):
config.get("notify"),
"new"
)
- await message.answer("✅ установлен *новый* стиль выделения сообщений!")
+ return await message.answer("✅ установлен *новый* стиль выделения сообщений!")
elif payload == "old_md":
set_user_config(
user_id,
@@ -237,19 +297,61 @@ async def start_handler(message: Message, command: CommandObject):
config.get("notify"),
"old"
)
- await message.answer("✅ установлен *старый* стиль выделения сообщений!")
+ return await message.answer("✅ установлен *старый* стиль выделения сообщений!")
+ elif payload and payload.startswith("prompt-"):
+ prompt_spl = payload.split("-", 2)
+ if len(prompt_spl) != 3:
+ return await message.answer("❌ говно твой payload ты читар уйди")
+ prompt_user_id = int(prompt_spl[1])
+ prompt_id = prompt_spl[2]
+ try:
+ if prompt_user_id == 0:
+ prompt = SYSTEM_PROMPTS.get(prompt_id, {})
+ if not prompt:
+ return await message.reply("❌ промпт kal suka либо приватный либо удалён либо его никогда не было")
+ prompt_pub = True
+ else:
+ prompt = get_user_config(prompt_user_id)["prompts"].get(
+ prompt_id, {}
+ )
+ if not prompt:
+ return await message.reply("❌ промпт говно suka либо приватный либо удалён либо его никогда не было")
+ prompt_pub = prompt.get("public", False)
+ if prompt_user_id == user_id:
+ return await message.reply(
+ f"✅ это твой промпт `{prompt.get('name', 'говно')}`:"
+ f"```\n{prompt.get('text')}\n```",
+ reply_markup=InlineKeyboardMarkup(
+ inline_keyboard=[
+ [
+ InlineKeyboardButton(text="✅ установить", callback_data=f"sp%{user_id}%0%{prompt_id}%2"),
+ InlineKeyboardButton(text="⚙️ настроить", callback_data=f"vp%{user_id}%{prompt_id}"),
+ ],
+ ]
+ )
+ )
+ elif prompt_pub:
+ return await message.reply(
+ f"✅ вот `{prompt.get('name', 'говно')}` промпт крутой da:"
+ f"```\n{prompt.get('text')}\n```",
+ reply_markup=InlineKeyboardMarkup(
+ inline_keyboard=[
+ [InlineKeyboardButton(text="✅ добавить", callback_data=f"ap%{user_id}%{prompt_user_id}%{prompt_id}")],
+ [InlineKeyboardButton(text="✅🔗 доб. + установить", callback_data=f"sp%{user_id}%{prompt_user_id}%{prompt_id}%2")],
+ ]
+ )
+ )
+ except Exception as e:
+ print(f"{YELLOW} -- prompt - {e}{RESET}")
+ return await message.reply("❌ промпт говно suka либо приватный либо удалён либо его никогда не было")
invite_url = f"https://t.me/{BOT_USERNAME}?startgroup=start"
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(text="команды", callback_data="start")],
- [
- InlineKeyboardButton(
- text="настройки", callback_data=f"settings%{user_id}"
- )
- ],
- [InlineKeyboardButton(text="добавить в группу", url=invite_url)],
+ [InlineKeyboardButton(text="настройки", callback_data=f"settings%{user_id}")],
+ [InlineKeyboardButton(text="добавить в группу", url=invite_url)]
]
)
@@ -315,7 +417,8 @@ async def settings_handler(event: Union[Message, CallbackQuery]):
config = get_user_config(user_id)
models_count = sum(len(models) for models in MODELS.values())
- prompts_count = len(SYSTEM_PROMPTS)
+ prompts = SYSTEM_PROMPTS | config["prompts"]
+ prompts_count = len(prompts)
if config["stream"] == "native":
stream_status = "натив"
@@ -385,7 +488,7 @@ async def settings_handler(event: Union[Message, CallbackQuery]):
)
text = f"⚡ *алло узбекгпт настройки*\nтекущая модель: `{config.get('model')}`\n" \
- f"текущий промпт: `{config.get('prompt')}`"
+ f"текущий промпт: `{prompts[config.get('prompt')]['name']} ({config.get('prompt')[:4]})`"
if isinstance(event, Message):
await event.reply(text, reply_markup=keyboard)