from bot.config import FEEDBACK_CHAT_ID from bot.announce import edit_announce from bot.api import telegram_api import logging from state.scan import get_all_pattern, get_average_pattern logger = logging.getLogger(__name__) start_message = { "en": "Welcome home! You can type any message here to be passed to chat", "ru": "Доброе утро! Можешь напечатать здесь любое сообщение для передачи в чат", } async def handle_private(msg, state): text = msg.get("text") sender = msg.get("from", {}) uid = sender.get("id") lang = sender.get("language_code", "ru") if lang != "ru" and lang != "en": lang = "en" if text and text.startswith("/"): if text == "/start": await telegram_api("sendMessage", chat_id=uid, text=start_message[lang]) state["welcome"] = True elif state.get("welcome"): await edit_announce(msg) state["welcome"] = False return elif text.startswith("/toxic"): cid = msg.get("chat", {}).get("id") toxic_pattern = f"toxic:{uid}:{cid}:*" toxic_score = await get_average_pattern(toxic_pattern) text = f"Средняя токсичность сообщений: {toxic_score}%" mid = msg.get("message_id") await telegram_api( "sendMessage", chat_id=uid, reply_to_message_id=mid, text=text ) return elif text == "/removed": removed_pattern = f"removed:{uid}:*" removed_messages = await get_all_pattern(removed_pattern) if removed_messages: await telegram_api( "sendMessage", chat_id=uid, text="\n\n".join(removed_messages) ) return await telegram_api( "forwardMessage", from_chat_id=sender.get("id"), message_id=msg.get("message_id"), chat_id=FEEDBACK_CHAT_ID, )