кнопочки и статусы
This commit is contained in:
@@ -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 и настраивается расписание обновления и отчёта.",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user