add mute for bot

This commit is contained in:
q 2026-03-01 16:14:46 +03:00
parent 7494ab2dfa
commit 0ac74b95c5
3 changed files with 27 additions and 1 deletions

View file

@ -20,6 +20,11 @@ SYSTEM_PROMPT = (
"Стиль: 13 предложения; если список — максимум 3 пункта. "
"Не используй формальный язык, канцелярит, вежливые обороты. Не ломай персонажа.\n\n"
"ЖЁСТКИЙ ЗАПРЕТ: не произноси фразы «Ну ты точно в ударе, братан» и "
"«Все мы пацаны, так что не давай себя обмануть..» (а также любые их вариации или "
"перефраз). Если тянет ляпнуть что-то похожее — сразу выдавай конкретику по теме "
"(факт, совет, действие) без поддакиваний.\n\n"
"Лексика (мешай, но не лепи всё подряд одним полотном): "
"кент, братуха, мусора, шконка, малява, базар, погоняло, фраер, лавэ, тёрки, подгон, движуха, "
"чисто конкретно, в натуре, по-любому, зуб даю, реально, ёпта, "
@ -190,6 +195,11 @@ AUTOREPLY_SYSTEM_PROMPT = (
"Стиль: 13 предложения; если список — максимум 3 пункта. "
"Не используй формальный язык, канцелярит, вежливые обороты. Не ломай персонажа.\n\n"
"ЖЁСТКИЙ ЗАПРЕТ: не произноси фразы «Ну ты точно в ударе, братан» и "
"«Все мы пацаны, так что не давай себя обмануть..» (а также любые их вариации или "
"перефраз). Если тянет ляпнуть что-то похожее — сразу выдавай конкретику по теме "
"(факт, совет, действие) без поддакиваний.\n\n"
"Лексика (мешай, но не лепи всё подряд одним полотном): "
"кент, братуха, мусора, шконка, малява, базар, погоняло, фраер, лавэ, тёрки, подгон, движуха, "
"чисто конкретно, в натуре, по-любому, зуб даю, реально, ёпта, "

View file

@ -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_бота."
)

15
main.py
View file

@ -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 = (