This commit is contained in:
2024-09-27 09:23:55 +03:00
parent c1e481ded8
commit a7b1925e8d
12 changed files with 218 additions and 139 deletions

View File

@@ -1,15 +1,17 @@
import logging
import math
from utils.store import redis, get_average_pattern
from state.redis import redis
from state.scan import get_average_pattern
from bot.api import telegram_api
from bot.config import FEEDBACK_CHAT_ID
from nlp.toxicity_detector import detector
from handlers.handle_private import handle_private
from utils.normalize import normalize
from nlp.toxicity_detector import detector
from nlp.normalize import normalize
logger = logging.getLogger('handlers.messages_routing')
logger = logging.getLogger("handlers.messages_routing")
logging.basicConfig(level=logging.DEBUG)
async def messages_routing(msg, state):
cid = msg["chat"]["id"]
uid = msg["from"]["id"]
@@ -28,11 +30,16 @@ async def messages_routing(msg, state):
if reply_msg:
reply_chat_id = reply_msg.get("chat", {}).get("id")
if reply_chat_id != FEEDBACK_CHAT_ID:
await telegram_api("sendMessage", chat_id=reply_chat_id, text=text, reply_to_message_id=reply_msg.get("message_id"))
await telegram_api(
"sendMessage",
chat_id=reply_chat_id,
text=text,
reply_to_message_id=reply_msg.get("message_id"),
)
elif bool(text):
mid = msg.get("message_id")
if text == '/toxic@welcomecenter_bot':
if text == "/toxic@welcomecenter_bot":
# latest in chat
latest_toxic_message_id = await redis.get(f"toxic:{cid}")
@@ -52,46 +59,44 @@ async def messages_routing(msg, state):
one_score = await redis.get(f"toxic:{cid}:{uid}:{reply_to_msg_id}")
if one_score:
logger.debug(one_score)
emoji = '😳' if toxic_score > 90 else '😟' if toxic_score > 80 else '😏' if toxic_score > 60 else '🙂' if toxic_score > 20 else '😇'
emoji = (
"😳"
if toxic_score > 90
else "😟"
if toxic_score > 80
else "😏"
if toxic_score > 60
else "🙂"
if toxic_score > 20
else "😇"
)
text = f"{int(one_score)}% токсичности\nСредняя токсичность сообщений: {toxic_score}% {emoji}"
await telegram_api(
"sendMessage",
chat_id=cid,
reply_to_message_id=reply_to_msg_id,
text=text
text=text,
)
await telegram_api(
"deleteMessage",
chat_id=cid,
message_id=mid
)
elif text == '/removed@welcomecenter_bot':
await telegram_api(
"deleteMessage",
chat_id=cid,
message_id=mid
)
await telegram_api("deleteMessage", chat_id=cid, message_id=mid)
elif text == "/removed@welcomecenter_bot":
await telegram_api("deleteMessage", chat_id=cid, message_id=mid)
else:
toxic_score = detector(normalize(text))
toxic_perc = math.floor(toxic_score*100)
toxic_perc = math.floor(toxic_score * 100)
await redis.set(f"toxic:{cid}", mid)
await redis.set(f"toxic:{cid}:{uid}:{mid}", toxic_perc, ex=60*60*24*3)
logger.info(f'\ntext: {text}\ntoxic: {toxic_perc}%')
await redis.set(f"toxic:{cid}:{uid}:{mid}", toxic_perc, ex=60 * 60 * 24 * 3)
logger.info(f"\ntext: {text}\ntoxic: {toxic_perc}%")
if toxic_score > 0.81:
if toxic_score > 0.90:
await redis.set(f"removed:{uid}:{cid}:{mid}", text)
await telegram_api(
"deleteMessage",
chat_id=cid,
message_id=mid
)
await telegram_api("deleteMessage", chat_id=cid, message_id=mid)
else:
await telegram_api(
"setMessageReaction",
chat_id=cid,
is_big=True,
message_id=mid,
reaction=f'[{{"type":"emoji", "emoji":"🙉"}}]'
reaction='[{"type":"emoji", "emoji":"🙉"}]',
)
else: