fix /break

This commit is contained in:
q 2026-03-05 13:06:06 +03:00
parent c59858df53
commit 73e539b4c4

14
main.py
View file

@ -52,6 +52,14 @@ def templates_list_text() -> str:
parts.append(f"{tid}{label}" if label else tid)
return ", ".join(parts) if parts else "нет макетов"
def _format_delta_ms(delta: timedelta) -> str:
"""HH:MM:SS.mmm, не допускаем отрицательных значений."""
total_ms = int(max(delta.total_seconds(), 0) * 1000)
hours, rem = divmod(total_ms, 3_600_000)
minutes, rem = divmod(rem, 60_000)
seconds, milliseconds = divmod(rem, 1_000)
return f"{hours:02d}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}"
def minutes_until_break(now: datetime | None = None) -> str:
"""Логика расписания перекуров."""
if now is None:
@ -72,14 +80,12 @@ def minutes_until_break(now: datetime | None = None) -> str:
end_dt = dt_for(end_t)
if now < start_dt or (start_dt <= now < end_dt):
minutes = int((end_dt - now).total_seconds() // 60)
return f"{minutes} минут до перекура"
return f"{_format_delta_ms(end_dt - now)} до перекура"
if br_minutes:
break_end = end_dt + timedelta(minutes=br_minutes)
if end_dt <= now < break_end:
remaining = int((break_end - now).total_seconds() // 60)
return f"Идёт перекур, осталось {remaining} минут"
return f"Идёт перекур, осталось {_format_delta_ms(break_end - now)}"
return "Пары закончились, перекур только завтра."