кнопочки и статусы
This commit is contained in:
@@ -782,7 +782,7 @@ async def cb_admin_actions(callback: CallbackQuery) -> None:
|
|||||||
if action == "menu:sync":
|
if action == "menu:sync":
|
||||||
await _show_callback_screen(
|
await _show_callback_screen(
|
||||||
callback,
|
callback,
|
||||||
_admin_sync_text(),
|
await _admin_sync_text(),
|
||||||
reply_markup=admin_sync_keyboard(),
|
reply_markup=admin_sync_keyboard(),
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
@@ -909,7 +909,7 @@ async def cb_admin_actions(callback: CallbackQuery) -> None:
|
|||||||
await reload_scheduler()
|
await reload_scheduler()
|
||||||
await _show_callback_screen(
|
await _show_callback_screen(
|
||||||
callback,
|
callback,
|
||||||
_admin_sync_text(),
|
await _admin_sync_text(),
|
||||||
reply_markup=admin_sync_keyboard(),
|
reply_markup=admin_sync_keyboard(),
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
@@ -1733,3 +1733,30 @@ async def cmd_mute_del(message: Message) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
await message.answer("Mute rule удалено.")
|
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:
|
def admin_sync_keyboard() -> InlineKeyboardMarkup:
|
||||||
builder = InlineKeyboardBuilder()
|
builder = InlineKeyboardBuilder()
|
||||||
builder.button(text="Запустить sync", callback_data="admin:sync")
|
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="Автосинк: вкл/выкл", callback_data="admin:settings:sync_enabled")
|
||||||
builder.button(text="Интервал sync", callback_data="admin:settings:sync_interval")
|
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_day")
|
||||||
builder.button(text="Время отчёта", callback_data="admin:settings:digest_time")
|
builder.button(text="Время отчёта", callback_data="admin:settings:digest_time")
|
||||||
builder.button(text="Назад", callback_data="admin:open")
|
builder.button(text="Назад", callback_data="admin:open")
|
||||||
builder.adjust(2, 2, 2, 1)
|
builder.adjust(2, 2, 1, 1)
|
||||||
return builder.as_markup()
|
return builder.as_markup()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user