fix: Добавлены кнопки для unverify и unverified_list
✅ Кнопки в inline меню админа ✅ Кнопки в reply меню админа ✅ Обработчики callback для кнопок ✅ Исправлено отображение команд 📦 Бекап: backups/versions/v2.1.1_buttons_fix_2026-02-28/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
19c5fdd0ac
commit
af4e7d2c5d
3 changed files with 75 additions and 5 deletions
|
|
@ -484,7 +484,7 @@ class Achievement(Base):
|
|||
user_id = Column(BigInteger, ForeignKey('users.user_id'), nullable=False)
|
||||
achievement_type = Column(String(50), nullable=False) # Тип достижения
|
||||
earned_at = Column(DateTime, default=datetime.utcnow) # Когда получено
|
||||
metadata = Column(Text, nullable=True) # JSON с доп. данными
|
||||
achievement_data = Column(Text, nullable=True) # JSON с доп. данными
|
||||
|
||||
# Связи
|
||||
user = relationship('User', backref='achievements_list')
|
||||
|
|
|
|||
|
|
@ -862,6 +862,68 @@ async def cb_admin_top(message: CallbackQuery):
|
|||
await message.answer(text, reply_markup=get_admin_rating_menu(), parse_mode='HTML')
|
||||
|
||||
|
||||
@router.callback_query(F.data == 'admin_help')
|
||||
@admin_only
|
||||
async def cb_admin_help(message: CallbackQuery):
|
||||
"""Кнопка Помощь"""
|
||||
text = (
|
||||
'❓ <b>Помощь администратору</b>\n\n'
|
||||
'<b>Основные команды:</b>\n'
|
||||
'• /admin — Админ-панель\n'
|
||||
'• /stats — Статистика чата\n'
|
||||
'• /spies — Подозрительные пользователи\n'
|
||||
'• /users — Список жильцов\n'
|
||||
'• /verify — Заявки на верификацию\n'
|
||||
'• /export — Экспорт данных\n'
|
||||
'• /rating — Рейтинг пользователей\n'
|
||||
'\n'
|
||||
'<b>Инициативная группа:</b>\n'
|
||||
'• /ig_add — Добавить в ИГ\n'
|
||||
'• /ig_remove — Удалить из ИГ\n'
|
||||
'• /ig_list — Список ИГ\n'
|
||||
'• /ig_broadcast — Рассылка для ИГ\n'
|
||||
'\n'
|
||||
'<b>События:</b>\n'
|
||||
'• /event_add — Добавить событие\n'
|
||||
'• /events — Список событий\n'
|
||||
'• /participants — Участники\n'
|
||||
'\n'
|
||||
'💡 Все команды доступны через меню!'
|
||||
)
|
||||
|
||||
await message.message.answer(text, parse_mode='HTML')
|
||||
await message.answer()
|
||||
|
||||
|
||||
@router.callback_query(F.data == 'admin_unverify')
|
||||
@admin_only
|
||||
async def cb_admin_unverify(message: CallbackQuery):
|
||||
"""Кнопка Отозвать верификацию"""
|
||||
text = (
|
||||
'🚫 <b>Отозвать верификацию</b>\n\n'
|
||||
'Использование:\n'
|
||||
'<code>/unverify <user_id> [причина]</code>\n\n'
|
||||
'Пример:\n'
|
||||
'<code>/unverify 123456789 Подозрение на шпиона</code>\n\n'
|
||||
'💡 User ID можно узнать в /users'
|
||||
)
|
||||
await message.message.answer(text, parse_mode='HTML')
|
||||
await message.answer()
|
||||
|
||||
|
||||
@router.callback_query(F.data == 'admin_unverified_list')
|
||||
@admin_only
|
||||
async def cb_admin_unverified_list(message: CallbackQuery):
|
||||
"""Кнопка Список не верифицированных"""
|
||||
await message.message.answer(
|
||||
'📋 <b>Список не верифицированных</b>\n\n'
|
||||
'Использование:\n'
|
||||
'<code>/unverified_list</code>\n\n'
|
||||
'Показывает кто был лишён верификации'
|
||||
)
|
||||
await message.answer()
|
||||
|
||||
|
||||
@router.callback_query(F.data == 'admin_rank')
|
||||
@admin_only
|
||||
async def cb_admin_rank(message: CallbackQuery):
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ 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'),
|
||||
|
|
@ -29,17 +29,21 @@ def get_admin_main_menu() -> InlineKeyboardMarkup:
|
|||
builder.row(
|
||||
InlineKeyboardButton(text='📤 Рассылка', callback_data='admin_broadcast'),
|
||||
)
|
||||
builder.row(
|
||||
InlineKeyboardButton(text='🚫 Отозвать вериф.', callback_data='admin_unverify'),
|
||||
InlineKeyboardButton(text='📋 Список не вериф.', callback_data='admin_unverified_list'),
|
||||
)
|
||||
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='🕵️ Шпионы'),
|
||||
|
|
@ -59,10 +63,14 @@ def get_admin_reply_menu() -> ReplyKeyboardMarkup:
|
|||
builder.row(
|
||||
KeyboardButton(text='📤 Рассылка'),
|
||||
)
|
||||
builder.row(
|
||||
KeyboardButton(text='🚫 Отозвать вериф.'),
|
||||
KeyboardButton(text='📋 Не верифицированные'),
|
||||
)
|
||||
builder.row(
|
||||
KeyboardButton(text='❓ Помощь'),
|
||||
)
|
||||
|
||||
|
||||
return builder.as_markup(resize_keyboard=True)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue