58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
"""
|
||
get_campaign_time.py — получение текущего игрового времени.
|
||
|
||
Экспортирует функцию get_campaign_time(debug_description: str) -> str,
|
||
которую вызывает тул с фронта без параметров.
|
||
|
||
Возвращает строку в формате Markdown с текущей датой, часом и списком праздников на неделю.
|
||
"""
|
||
|
||
from time_utils import (
|
||
get_campaign_time as get_time,
|
||
MONTH_NAMES_RU,
|
||
get_week_holidays,
|
||
get_holiday,
|
||
)
|
||
|
||
|
||
def _format_time(year: int, month: int, day: int, hour: int) -> str:
|
||
month_name = MONTH_NAMES_RU.get(month, str(month))
|
||
return f"{day} {month_name} {year} DR, {hour:02d}:00"
|
||
|
||
|
||
def _format_holidays_section(year: int, month: int, day: int) -> str:
|
||
holidays = get_week_holidays(year, month, day)
|
||
if not holidays:
|
||
return "📅 **Ближайшие праздники:** нет"
|
||
lines = ["📅 **Ближайшие праздники:**"]
|
||
for m, d, desc, when in holidays:
|
||
month_name = MONTH_NAMES_RU.get(m, str(m))
|
||
lines.append(f"- **{when}** ({d} {month_name}): {desc}")
|
||
return "\n".join(lines)
|
||
|
||
|
||
def get_campaign_time(debug_description: str) -> str:
|
||
current = get_time()
|
||
time_str = _format_time(current["year"], current["month"], current["day"], current["hour"])
|
||
|
||
today_holiday = get_holiday(current["month"], current["day"], current["year"])
|
||
today_line = f"🎉 **Сегодня:** {today_holiday}" if today_holiday else ""
|
||
|
||
holidays_section = _format_holidays_section(
|
||
current["year"],
|
||
current["month"],
|
||
current["day"]
|
||
)
|
||
|
||
result = (
|
||
f"### 🕰️ Текущее время\n"
|
||
f"**Дата:** {time_str}\n"
|
||
)
|
||
if today_line:
|
||
result += f"{today_line}\n"
|
||
result += f"\n{holidays_section}"
|
||
return result
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print(get_campaign_time("тест")) |