From 0ac74b95c592a16bd72b5eafea266824c05321ab Mon Sep 17 00:00:00 2001 From: q Date: Sun, 1 Mar 2026 16:14:46 +0300 Subject: [PATCH] add mute for bot --- AI/talk_handler.py | 10 ++++++++++ config.py | 3 ++- main.py | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/AI/talk_handler.py b/AI/talk_handler.py index 5bee3e9..207605b 100644 --- a/AI/talk_handler.py +++ b/AI/talk_handler.py @@ -20,6 +20,11 @@ SYSTEM_PROMPT = ( "Стиль: 1–3 предложения; если список — максимум 3 пункта. " "Не используй формальный язык, канцелярит, вежливые обороты. Не ломай персонажа.\n\n" + "ЖЁСТКИЙ ЗАПРЕТ: не произноси фразы «Ну ты точно в ударе, братан» и " + "«Все мы пацаны, так что не давай себя обмануть..» (а также любые их вариации или " + "перефраз). Если тянет ляпнуть что-то похожее — сразу выдавай конкретику по теме " + "(факт, совет, действие) без поддакиваний.\n\n" + "Лексика (мешай, но не лепи всё подряд одним полотном): " "кент, братуха, мусора, шконка, малява, базар, погоняло, фраер, лавэ, тёрки, подгон, движуха, " "чисто конкретно, в натуре, по-любому, зуб даю, реально, ёпта, " @@ -190,6 +195,11 @@ AUTOREPLY_SYSTEM_PROMPT = ( "Стиль: 1–3 предложения; если список — максимум 3 пункта. " "Не используй формальный язык, канцелярит, вежливые обороты. Не ломай персонажа.\n\n" + "ЖЁСТКИЙ ЗАПРЕТ: не произноси фразы «Ну ты точно в ударе, братан» и " + "«Все мы пацаны, так что не давай себя обмануть..» (а также любые их вариации или " + "перефраз). Если тянет ляпнуть что-то похожее — сразу выдавай конкретику по теме " + "(факт, совет, действие) без поддакиваний.\n\n" + "Лексика (мешай, но не лепи всё подряд одним полотном): " "кент, братуха, мусора, шконка, малява, базар, погоняло, фраер, лавэ, тёрки, подгон, движуха, " "чисто конкретно, в натуре, по-любому, зуб даю, реально, ёпта, " diff --git a/config.py b/config.py index 545b5a4..2b3ebfb 100644 --- a/config.py +++ b/config.py @@ -91,6 +91,7 @@ def get_hint_text(templates_str: str) -> str: "• /penis — миниигра 1 раз в 24 часа.\n" "• /top_penis — топ по длине.\n" "• /talk [текст] — ИИ базарит на фене.\n" + "• /ebalnik — включить/выключить автоответы в чате.\n" "• /prices /fetch — цены.\n" "Подсказка: в группах пиши /команда@username_бота." - ) \ No newline at end of file + ) diff --git a/main.py b/main.py index 4364fa7..9c93ac3 100644 --- a/main.py +++ b/main.py @@ -513,6 +513,15 @@ async def handle_svodka_cmd(message: Message): else: await message.answer(f"Хохлы ответят за это...: {data['message']}") +async def handle_ebalnik_cmd(message: Message): + chat_id = message.chat.id + if chat_id in _autoreply_disabled_chats: + _autoreply_disabled_chats.remove(chat_id) + await message.reply("Автоответы вернул, бот снова влезает в чат.") + else: + _autoreply_disabled_chats.add(chat_id) + await message.reply("Автоответы срезал, бот теперь молчит в этом чате.") + async def handle_maket_cmd(message: Message): parts = message.text.split(maxsplit=2) if len(parts) == 1: @@ -563,6 +572,7 @@ async def handle_gen_mem(message: Message, bot: Bot): await message.reply_photo(BufferedInputFile(output.getvalue(), filename="meme.jpg")) _last_autoreply_ts = 0 +_autoreply_disabled_chats: set[int] = set() async def handle_keywords(message: Message): global _last_autoreply_ts @@ -584,6 +594,9 @@ async def handle_keywords(message: Message): # Записываем каждое обычное сообщение в историю чата await asyncio.to_thread(push_message, chat_id, "user", user_name, message.text) + if chat_id in _autoreply_disabled_chats: + return + import time as _time now = _time.time() triggered = any(trigger in text_lower for trigger in config.AUTOREPLY_TRIGGERS) @@ -627,6 +640,7 @@ def main(): dp.message.register(handle_zvetok_cmd, Command("zvetok")) dp.message.register(handle_talk, Command("talk")) dp.message.register(handle_svodka_cmd, Command("svodka")) + dp.message.register(handle_ebalnik_cmd, Command("ebalnik")) dp.message.register(handle_gen_mem, Command("gen_mem")) dp.message.register(handle_keywords, F.text) @@ -645,6 +659,7 @@ def main(): BotCommand(command="fetch", description="цены (новый источник)"), BotCommand(command="zvetok", description="Цветянский бля"), BotCommand(command="talk", description="Побазарить"), + BotCommand(command="ebalnik", description="вкл/выкл автответов"), BotCommand(command="svodka", description="СВО: итоги"), ] scopes = (