✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
117 lines
3.9 KiB
Python
117 lines
3.9 KiB
Python
"""
|
|
Клавиатуры для админа
|
|
"""
|
|
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder, ReplyKeyboardBuilder
|
|
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
|
|
|
|
|
|
def get_admin_main_menu() -> InlineKeyboardMarkup:
|
|
"""Главное меню админа (inline)"""
|
|
builder = InlineKeyboardBuilder()
|
|
|
|
builder.row(
|
|
InlineKeyboardButton(text='📊 Статистика', callback_data='admin_stats'),
|
|
InlineKeyboardButton(text='🕵️ Шпионы', callback_data='admin_spies'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='👥 Пользователи', callback_data='admin_users'),
|
|
InlineKeyboardButton(text='⏳ Непроверенные', callback_data='admin_unverified'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='🏠 Квартиры', callback_data='admin_apartments'),
|
|
InlineKeyboardButton(text='⚠️ Предупреждения', callback_data='admin_warnings'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='🏆 Рейтинг', callback_data='admin_rating'),
|
|
InlineKeyboardButton(text='📥 Экспорт', callback_data='admin_export'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='📤 Рассылка', callback_data='admin_broadcast'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='❓ Помощь', callback_data='admin_help'),
|
|
)
|
|
|
|
return builder.as_markup()
|
|
|
|
|
|
def get_admin_reply_menu() -> ReplyKeyboardMarkup:
|
|
"""Главное меню админа (reply - кнопки под полем ввода)"""
|
|
builder = ReplyKeyboardBuilder()
|
|
|
|
builder.row(
|
|
KeyboardButton(text='📊 Статистика'),
|
|
KeyboardButton(text='🕵️ Шпионы'),
|
|
)
|
|
builder.row(
|
|
KeyboardButton(text='👥 Пользователи'),
|
|
KeyboardButton(text='⏳ Непроверенные'),
|
|
)
|
|
builder.row(
|
|
KeyboardButton(text='🏠 Квартиры'),
|
|
KeyboardButton(text='⚠️ Предупреждения'),
|
|
)
|
|
builder.row(
|
|
KeyboardButton(text='🏆 Рейтинг'),
|
|
KeyboardButton(text='📥 Экспорт'),
|
|
)
|
|
builder.row(
|
|
KeyboardButton(text='📤 Рассылка'),
|
|
)
|
|
builder.row(
|
|
KeyboardButton(text='❓ Помощь'),
|
|
)
|
|
|
|
return builder.as_markup(resize_keyboard=True)
|
|
|
|
|
|
def get_admin_help_menu() -> InlineKeyboardMarkup:
|
|
"""Меню помощи админа"""
|
|
builder = InlineKeyboardBuilder()
|
|
|
|
builder.button(text='🔙 Назад', callback_data='admin_menu')
|
|
return builder.as_markup()
|
|
|
|
|
|
def get_admin_apartments_menu() -> InlineKeyboardMarkup:
|
|
"""Меню квартир"""
|
|
builder = InlineKeyboardBuilder()
|
|
|
|
builder.row(
|
|
InlineKeyboardButton(text='📊 Статистика квартир', callback_data='admin_apt_stats'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='🔙 Назад', callback_data='admin_menu'),
|
|
)
|
|
|
|
return builder.as_markup()
|
|
|
|
|
|
def get_admin_warnings_menu() -> InlineKeyboardMarkup:
|
|
"""Меню предупреждений"""
|
|
builder = InlineKeyboardBuilder()
|
|
|
|
builder.row(
|
|
InlineKeyboardButton(text='📋 Список предупреждений', callback_data='admin_warn_list'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='🔙 Назад', callback_data='admin_menu'),
|
|
)
|
|
|
|
return builder.as_markup()
|
|
|
|
|
|
def get_admin_rating_menu() -> InlineKeyboardMarkup:
|
|
"""Меню рейтинга"""
|
|
builder = InlineKeyboardBuilder()
|
|
|
|
builder.row(
|
|
InlineKeyboardButton(text='🏆 Топ-10', callback_data='admin_top'),
|
|
InlineKeyboardButton(text='📊 Уровни', callback_data='admin_rank'),
|
|
)
|
|
builder.row(
|
|
InlineKeyboardButton(text='🔙 Назад', callback_data='admin_menu'),
|
|
)
|
|
|
|
return builder.as_markup()
|