Files
tg-admin-bot/services/alert_mute.py

43 lines
919 B
Python

import time
from typing import Dict
# category -> unix timestamp until muted
_MUTES: Dict[str, float] = {}
def _cleanup() -> None:
now = time.time()
expired = [k for k, until in _MUTES.items() if until <= now]
for k in expired:
_MUTES.pop(k, None)
def set_mute(category: str, seconds: int) -> float:
_cleanup()
until = time.time() + max(0, seconds)
_MUTES[category] = until
return until
def clear_mute(category: str) -> None:
_MUTES.pop(category, None)
def is_muted(category: str | None) -> bool:
if not category:
return False
_cleanup()
until = _MUTES.get(category)
if until is None:
return False
if until <= time.time():
_MUTES.pop(category, None)
return False
return True
def list_mutes() -> dict[str, int]:
_cleanup()
now = time.time()
return {k: int(until - now) for k, until in _MUTES.items()}