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()}