welcomecenterbot/handlers/handle_private.py

56 lines
2.0 KiB
Python
Raw Normal View History

2024-01-07 09:19:46 +00:00
from bot.config import FEEDBACK_CHAT_ID
from bot.announce import edit_announce
from bot.api import telegram_api
import logging
2024-09-27 06:23:55 +00:00
from state.scan import get_all_pattern, get_average_pattern
2024-01-07 09:19:46 +00:00
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
start_message = {
2024-09-27 06:23:55 +00:00
"en": "Welcome home! You can type any message here to be passed to chat",
"ru": "Доброе утро! Можешь напечатать здесь любое сообщение для передачи в чат",
2024-01-07 09:19:46 +00:00
}
2024-09-26 11:07:00 +00:00
2024-01-07 09:19:46 +00:00
async def handle_private(msg, state):
text = msg.get("text")
sender = msg.get("from", {})
2024-09-26 11:07:00 +00:00
uid = sender.get("id")
2024-01-07 09:19:46 +00:00
lang = sender.get("language_code", "ru")
if lang != "ru" and lang != "en":
lang = "en"
2024-09-26 20:16:56 +00:00
if text and text.startswith("/"):
2024-09-27 06:23:55 +00:00
if text == "/start":
2024-09-26 11:07:00 +00:00
await telegram_api("sendMessage", chat_id=uid, text=start_message[lang])
2024-09-27 06:23:55 +00:00
state["welcome"] = True
elif state.get("welcome"):
2024-09-26 12:13:51 +00:00
await edit_announce(msg)
2024-09-27 06:23:55 +00:00
state["welcome"] = False
2024-09-26 12:13:51 +00:00
return
2024-09-27 06:23:55 +00:00
elif text.startswith("/toxic"):
cid = msg.get("chat", {}).get("id")
2024-09-27 06:03:34 +00:00
toxic_pattern = f"toxic:{uid}:{cid}:*"
2024-09-27 06:23:55 +00:00
toxic_score = await get_average_pattern(toxic_pattern)
2024-09-26 17:28:16 +00:00
text = f"Средняя токсичность сообщений: {toxic_score}%"
2024-09-27 06:03:34 +00:00
mid = msg.get("message_id")
2024-09-27 06:23:55 +00:00
await telegram_api(
"sendMessage", chat_id=uid, reply_to_message_id=mid, text=text
)
2024-09-26 17:28:16 +00:00
return
2024-09-27 06:23:55 +00:00
elif text == "/removed":
2024-09-27 06:03:34 +00:00
removed_pattern = f"removed:{uid}:*"
removed_messages = await get_all_pattern(removed_pattern)
2024-09-26 16:43:39 +00:00
if removed_messages:
2024-09-27 06:23:55 +00:00
await telegram_api(
"sendMessage", chat_id=uid, text="\n\n".join(removed_messages)
)
2024-09-26 12:13:51 +00:00
return
2024-09-26 16:48:23 +00:00
2024-09-27 06:23:55 +00:00
await telegram_api(
"forwardMessage",
from_chat_id=sender.get("id"),
message_id=msg.get("message_id"),
chat_id=FEEDBACK_CHAT_ID,
)