/watch #30
5 changed files with 19 additions and 4 deletions
0
.codex
Normal file
0
.codex
Normal file
2
.env
2
.env
|
|
@ -1,4 +1,4 @@
|
|||
BOT_TOKEN=8156642467:AAEalekr-33lFS3tTTkXIEiaawfDzR6lBJc
|
||||
BOT_TOKEN=8505447901:AAHFkaDG0fT0tAixuJ4QP91IwMgO6cZndRM #8156642467:AAEalekr-33lFS3tTTkXIEiaawfDzR6lBJc
|
||||
TZ=Europe/Moscow
|
||||
ODDS_API_KEY=c29bc26dee8aa9d95a5ce8d14ea63923
|
||||
LLAMA_API_URL=https://mirror.porno4free.ru/zovos-ai/
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import re
|
|||
import sqlite3
|
||||
import time
|
||||
from io import BytesIO
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
|
@ -237,6 +238,7 @@ AUTONOMOUS_SIGNAL_RE = re.compile(
|
|||
re.IGNORECASE,
|
||||
)
|
||||
LETTER_RE = re.compile(r"[A-Za-zА-Яа-яЁё0-9]")
|
||||
WATCH_COMMAND_RE = re.compile(r"^/watch(?:@[A-Za-z0-9_]+)?(?:\s+(.*))?$", re.IGNORECASE | re.DOTALL)
|
||||
|
||||
_reply_lock = asyncio.Lock()
|
||||
_summary_lock = asyncio.Lock()
|
||||
|
|
@ -903,12 +905,13 @@ async def handle_photo_message(message: Message) -> bool:
|
|||
is_image_document = bool(message.document and (message.document.mime_type or "").startswith("image/"))
|
||||
if not (message.photo or is_image_document) or not message.from_user or message.from_user.is_bot:
|
||||
return False
|
||||
if message.caption and message.caption.startswith("/"):
|
||||
watch_match = WATCH_COMMAND_RE.match((message.caption or "").strip())
|
||||
if not watch_match:
|
||||
return False
|
||||
|
||||
chat_id = message.chat.id
|
||||
user_name = message.from_user.first_name or "кент"
|
||||
caption = _clean_text(message.caption or "")
|
||||
caption = _clean_text(watch_match.group(1) or "")
|
||||
|
||||
logger.warning(
|
||||
"Received image message for analysis. chat_id=%s user=%s has_photo=%s has_image_document=%s caption=%s",
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ CAPTIONS = [
|
|||
"Шо ты блять псюнчик решил свой подергать?",
|
||||
"Решил подрочить сука?",
|
||||
"гнойный писюн у тебя кнч, да",
|
||||
"Ух нихуя, это ШПАЧИХА!?",
|
||||
]
|
||||
|
||||
LESAINT_POSTS_API = "https://lesaintdesseins.fr/wp-json/wp/v2/posts"
|
||||
|
|
|
|||
13
main.py
13
main.py
|
|
@ -58,6 +58,12 @@ def _is_supported_image_message(message: Message) -> bool:
|
|||
)
|
||||
)
|
||||
|
||||
def _is_watch_image_message(message: Message) -> bool:
|
||||
if not _is_supported_image_message(message):
|
||||
return False
|
||||
caption = (message.caption or "").strip()
|
||||
return bool(re.match(r"^/watch(?:@[A-Za-z0-9_]+)?(?:\s|$)", caption, flags=re.IGNORECASE))
|
||||
|
||||
|
||||
async def handle_unmatched_message_debug(message: Message):
|
||||
logger.warning(
|
||||
|
|
@ -1199,6 +1205,10 @@ async def handle_keywords(message: Message):
|
|||
chat_id = message.chat.id
|
||||
user_name = (message.from_user.first_name or "кент") if message.from_user else "кент"
|
||||
|
||||
# /ebalnik должен глушить все авто-реакции в чате, включая медиа/фото-ветки.
|
||||
if chat_id in _autoreply_disabled_chats:
|
||||
return
|
||||
|
||||
if any(re.search(rf'\b{word}\b', text_lower) for word in config.KEYWORDS):
|
||||
audio_path = config.BASE_DIR / "maket" / "Radiohead - Creep.mp3"
|
||||
if audio_path.exists():
|
||||
|
|
@ -1456,7 +1466,7 @@ def main():
|
|||
dp.message.register(handle_gen_mem, Command("gen_mem"))
|
||||
dp.message.register(handle_uwu_cmd, Command("uwu"))
|
||||
dp.message.register(handle_nude_cmd, Command("nude"))
|
||||
dp.message.register(handle_photo_message, _is_supported_image_message)
|
||||
dp.message.register(handle_photo_message, _is_watch_image_message)
|
||||
dp.message.register(handle_keywords, F.text)
|
||||
dp.message.register(handle_unmatched_message_debug)
|
||||
|
||||
|
|
@ -1477,6 +1487,7 @@ def main():
|
|||
BotCommand(command="fetch", description="alias для /prices"),
|
||||
BotCommand(command="zvetok", description="Цветянский бля"),
|
||||
BotCommand(command="talk", description="Побазарить"),
|
||||
BotCommand(command="watch", description="Коммент фото по подписи /watch"),
|
||||
BotCommand(command="ebalnik", description="вкл/выкл автответов"),
|
||||
BotCommand(command="penis_casino", description="казино на размер"),
|
||||
BotCommand(command="gadanie", description="гадание на фене"),
|
||||
|
|
|
|||
Loading…
Reference in a new issue