КРАСОТАААА
Some checks failed
CI / Lint (ruff + mypy) (push) Failing after 37s
CI / Run tests (push) Has been skipped
CI / Docker build test (push) Successful in 19s

This commit is contained in:
2026-03-30 17:47:43 +07:00
parent 1d2f615b21
commit 3f176902a2
2 changed files with 739 additions and 365 deletions

View File

@@ -2,35 +2,105 @@ from aiogram.types import InlineKeyboardMarkup
from aiogram.utils.keyboard import InlineKeyboardBuilder
def help_menu_keyboard(is_admin: bool) -> InlineKeyboardMarkup:
def help_home_keyboard(is_admin: bool) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Обзор и метрики", callback_data="help:menu:monitoring")
builder.button(text="Релизы и версии", callback_data="help:menu:releases")
builder.button(text="Подписки", callback_data="help:menu:subscriptions")
builder.button(text="Статус синхронизации", callback_data="help:sync_status")
if is_admin:
builder.button(text="Админ-панель", callback_data="admin:open")
builder.adjust(2, 2, 1)
return builder.as_markup()
def help_monitoring_keyboard(is_admin: bool) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Сводка за неделю", callback_data="help:week")
builder.button(text="Сегодня", callback_data="help:today")
builder.button(text="Топ issues", callback_data="help:top")
builder.button(text="Старые issues", callback_data="help:stale")
builder.button(text="Релизы", callback_data="help:releases")
builder.button(text="Статус sync", callback_data="help:sync_status")
builder.button(text="Подписка backend", callback_data="help:sub:backend")
builder.button(text="Подписка frontend", callback_data="help:sub:frontend")
builder.button(text="Отписка backend", callback_data="help:unsub:backend")
builder.button(text="Отписка frontend", callback_data="help:unsub:frontend")
builder.button(text="Назад", callback_data="help:open")
if is_admin:
builder.button(text="Админ-панель", callback_data="admin:open")
builder.adjust(2)
builder.adjust(2, 2, 1, 1)
return builder.as_markup()
def admin_menu_keyboard() -> InlineKeyboardMarkup:
def help_releases_keyboard(is_admin: bool) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Список релизов", callback_data="help:releases")
builder.button(text="Как открыть релиз", callback_data="help:release_guide")
builder.button(text="Назад", callback_data="help:open")
if is_admin:
builder.button(text="Админ-панель", callback_data="admin:open")
builder.adjust(2, 1, 1)
return builder.as_markup()
def help_subscriptions_keyboard(is_admin: bool) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Подписаться на backend", callback_data="help:sub:backend")
builder.button(text="Подписаться на frontend", callback_data="help:sub:frontend")
builder.button(text="Отписаться от backend", callback_data="help:unsub:backend")
builder.button(text="Отписаться от frontend", callback_data="help:unsub:frontend")
builder.button(text="Назад", callback_data="help:open")
if is_admin:
builder.button(text="Админ-панель", callback_data="admin:open")
builder.adjust(2, 2, 1, 1)
return builder.as_markup()
def help_result_keyboard(back_callback: str, is_admin: bool) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Назад", callback_data=back_callback)
builder.button(text="Главное меню", callback_data="help:open")
if is_admin:
builder.button(text="Админ-панель", callback_data="admin:open")
builder.adjust(2, 1)
else:
builder.adjust(2)
return builder.as_markup()
def admin_home_keyboard() -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Центр синхронизации", callback_data="admin:menu:sync")
builder.button(text="Сводки и мониторинг", callback_data="admin:menu:overview")
builder.button(text="Ownership и topics", callback_data="admin:ownership")
builder.button(text="Mute rules", callback_data="admin:mute_list")
builder.button(text="Инструкция", callback_data="admin:guide")
builder.button(text="Пользовательское меню", callback_data="help:open")
builder.adjust(2, 2, 1, 1)
return builder.as_markup()
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="Ownership", callback_data="admin:ownership")
builder.button(text="Mute rules", callback_data="admin:mute_list")
builder.button(text="Релизы", callback_data="admin:releases")
builder.button(text="Today", callback_data="admin:today")
builder.button(text="Week digest", callback_data="admin:week")
builder.button(text="Назад", callback_data="admin:open")
builder.button(text="Пользовательское меню", callback_data="help:open")
builder.adjust(2, 2)
return builder.as_markup()
def admin_overview_keyboard() -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Сводка за неделю", callback_data="admin:week")
builder.button(text="Сегодня", callback_data="admin:today")
builder.button(text="Топ issues", callback_data="admin:top")
builder.button(text="Старые issues", callback_data="admin:stale")
builder.button(text="Инструкция", callback_data="admin:guide")
builder.adjust(2)
builder.button(text="Релизы", callback_data="admin:releases")
builder.button(text="Назад", callback_data="admin:open")
builder.adjust(2, 2, 1, 1)
return builder.as_markup()
def admin_result_keyboard(back_callback: str) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.button(text="Назад", callback_data=back_callback)
builder.button(text="Админ-панель", callback_data="admin:open")
builder.button(text="Пользовательское меню", callback_data="help:open")
builder.adjust(2, 1)
return builder.as_markup()