кнопочки и статусы
Some checks failed
CI / Lint (ruff + mypy) (push) Failing after 34s
CI / Run tests (push) Has been skipped
CI / Docker build test (push) Successful in 33s

This commit is contained in:
2026-03-31 15:59:35 +07:00
parent a26584c4fe
commit c270d66487
2 changed files with 30 additions and 4 deletions

View File

@@ -782,7 +782,7 @@ async def cb_admin_actions(callback: CallbackQuery) -> None:
if action == "menu:sync":
await _show_callback_screen(
callback,
_admin_sync_text(),
await _admin_sync_text(),
reply_markup=admin_sync_keyboard(),
)
return
@@ -909,7 +909,7 @@ async def cb_admin_actions(callback: CallbackQuery) -> None:
await reload_scheduler()
await _show_callback_screen(
callback,
_admin_sync_text(),
await _admin_sync_text(),
reply_markup=admin_sync_keyboard(),
)
return
@@ -1733,3 +1733,30 @@ async def cmd_mute_del(message: Message) -> None:
return
await message.answer("Mute rule удалено.")
async def _admin_sync_text() -> str:
runtime = await get_runtime_settings()
state = await get_last_sync_state("api_sync")
last_sync = (
state.last_successful_at.astimezone().strftime("%Y-%m-%d %H:%M")
if state and state.last_successful_at
else "ещё не было"
)
status = "данные загружены" if state and state.last_successful_at else "данных пока нет"
auto_sync = "ВКЛ" if runtime.sync_enabled else "ВЫКЛ"
digest_time = (
f"{runtime.digest_cron_day} "
f"{runtime.digest_cron_hour:02d}:{runtime.digest_cron_minute:02d}"
)
return "\n".join(
[
"<b>Синхронизация</b>",
f"Авто-синхронизация: {auto_sync}",
f"Статус: {status}",
f"Последняя синхронизация: {escape(last_sync)}",
f"Интервал sync: {runtime.sync_interval_minutes} мин",
f"Отчёт: {escape(digest_time)}",
"",
"Синхронизация подтягивает актуальные issues из GlitchTip в локальный кэш бота.",
"Здесь запускается ручной sync и настраивается расписание обновления и отчёта.",
]
)

View File

@@ -75,13 +75,12 @@ def admin_home_keyboard() -> InlineKeyboardMarkup:
def admin_sync_keyboard() -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Запустить sync", callback_data="admin:sync")
builder.button(text="Статус sync", callback_data="admin:sync_status")
builder.button(text="Автосинк: вкл/выкл", callback_data="admin:settings:sync_enabled")
builder.button(text="Интервал sync", callback_data="admin:settings:sync_interval")
builder.button(text="День отчёта", callback_data="admin:settings:digest_day")
builder.button(text="Время отчёта", callback_data="admin:settings:digest_time")
builder.button(text="Назад", callback_data="admin:open")
builder.adjust(2, 2, 2, 1)
builder.adjust(2, 2, 1, 1)
return builder.as_markup()