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)
|
user_id = Column(BigInteger, ForeignKey('users.user_id'), nullable=False)
|
||||||
achievement_type = Column(String(50), nullable=False) # Тип достижения
|
achievement_type = Column(String(50), nullable=False) # Тип достижения
|
||||||
earned_at = Column(DateTime, default=datetime.utcnow) # Когда получено
|
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')
|
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')
|
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')
|
@router.callback_query(F.data == 'admin_rank')
|
||||||
@admin_only
|
@admin_only
|
||||||
async def cb_admin_rank(message: CallbackQuery):
|
async def cb_admin_rank(message: CallbackQuery):
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,10 @@ def get_admin_main_menu() -> InlineKeyboardMarkup:
|
||||||
builder.row(
|
builder.row(
|
||||||
InlineKeyboardButton(text='📤 Рассылка', callback_data='admin_broadcast'),
|
InlineKeyboardButton(text='📤 Рассылка', callback_data='admin_broadcast'),
|
||||||
)
|
)
|
||||||
|
builder.row(
|
||||||
|
InlineKeyboardButton(text='🚫 Отозвать вериф.', callback_data='admin_unverify'),
|
||||||
|
InlineKeyboardButton(text='📋 Список не вериф.', callback_data='admin_unverified_list'),
|
||||||
|
)
|
||||||
builder.row(
|
builder.row(
|
||||||
InlineKeyboardButton(text='❓ Помощь', callback_data='admin_help'),
|
InlineKeyboardButton(text='❓ Помощь', callback_data='admin_help'),
|
||||||
)
|
)
|
||||||
|
|
@ -59,6 +63,10 @@ def get_admin_reply_menu() -> ReplyKeyboardMarkup:
|
||||||
builder.row(
|
builder.row(
|
||||||
KeyboardButton(text='📤 Рассылка'),
|
KeyboardButton(text='📤 Рассылка'),
|
||||||
)
|
)
|
||||||
|
builder.row(
|
||||||
|
KeyboardButton(text='🚫 Отозвать вериф.'),
|
||||||
|
KeyboardButton(text='📋 Не верифицированные'),
|
||||||
|
)
|
||||||
builder.row(
|
builder.row(
|
||||||
KeyboardButton(text='❓ Помощь'),
|
KeyboardButton(text='❓ Помощь'),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue