forked from zovos/bot_tg
fix /break
This commit is contained in:
parent
c59858df53
commit
73e539b4c4
1 changed files with 10 additions and 4 deletions
14
main.py
14
main.py
|
|
@ -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 "Пары закончились, перекур только завтра."
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue