DispelEvilBot/bot/services/runtime.py

28 lines
919 B
Python

"""Общие runtime-данные процесса бота.
Используется для событий аналитики (``bot_start``/``bot_stop``/``bot_alive``)
и ежечасного пинга «бот живой» в чат логов.
"""
from __future__ import annotations
import time
#: Момент запуска процесса (монотонные секунды).
STARTED_AT = time.monotonic()
def uptime_seconds() -> int:
"""Сколько секунд работает процесс бота."""
return int(time.monotonic() - STARTED_AT)
def uptime_human() -> str:
"""Аптайм в виде ``3ч 05м`` или ``12м`` (для уведомлений)."""
hours, remainder = divmod(uptime_seconds(), 3600)
minutes = remainder // 60
return f"{hours}ч {minutes:02d}м" if hours else f"{minutes}м"
__all__ = ["STARTED_AT", "uptime_human", "uptime_seconds"]