Files
Messenger/app/messages/spam_guard.py
benya e1d0375392
Some checks failed
CI / test (push) Failing after 24s
feat: add reply/forward/pin message flow across backend and web
- add reply_to/forwarded_from message fields and chat pinned_message field

- add forward and pin APIs plus reply support in message create

- wire web actions: Reply, Fwd, Pin and reply composer state

- fix spam policy bug: allow repeated identical messages, keep rate limiting
2026-03-08 00:28:43 +03:00

21 lines
752 B
Python

from fastapi import HTTPException, status
from redis.exceptions import RedisError
from app.config.settings import settings
from app.utils.redis_client import get_redis_client
async def enforce_message_spam_policy(*, user_id: int, chat_id: int, text: str | None) -> None:
redis = get_redis_client()
rate_key = f"spam:msg_rate:{user_id}:{chat_id}"
try:
count = await redis.incr(rate_key)
if count == 1:
await redis.expire(rate_key, 60)
if count > settings.message_rate_limit_per_minute:
raise HTTPException(
status_code=status.HTTP_429_TOO_MANY_REQUESTS,
detail="Message rate limit exceeded for this chat.",
)
except RedisError:
return