Initial commit: UMB Telegram Bot
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import time
|
||||
from collections import defaultdict
|
||||
|
||||
|
||||
class ModerationManager:
|
||||
def __init__(self, limit: int, window: int, ban_duration: int):
|
||||
self.limit = limit
|
||||
self.window = window
|
||||
self.ban_duration = ban_duration
|
||||
self.counters: dict[int, list[float]] = defaultdict(list)
|
||||
self.bans: dict[int, float] = {}
|
||||
|
||||
def add_message(self, user_id: int) -> None:
|
||||
now = time.time()
|
||||
self.counters[user_id].append(now)
|
||||
self.counters[user_id] = [
|
||||
t for t in self.counters[user_id] if now - t <= self.window
|
||||
]
|
||||
|
||||
def is_banned(self, user_id: int) -> bool:
|
||||
if user_id in self.bans:
|
||||
if time.time() - self.bans[user_id] < self.ban_duration:
|
||||
return True
|
||||
del self.bans[user_id]
|
||||
return False
|
||||
|
||||
def check_and_ban(self, user_id: int) -> bool:
|
||||
if len(self.counters.get(user_id, [])) >= self.limit:
|
||||
self.bans[user_id] = time.time()
|
||||
return True
|
||||
return False
|
||||
|
||||
def should_delete(self, user_id: int) -> bool:
|
||||
return self.is_banned(user_id)
|
||||
|
||||
|
||||
moderation = ModerationManager(
|
||||
limit=25,
|
||||
window=60,
|
||||
ban_duration=300,
|
||||
)
|
||||
Reference in New Issue
Block a user