110 lines
4.7 KiB
Python
110 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Тестовый обработчик для проверки команды /start и /admin
|
||
"""
|
||
|
||
from aiogram import Router, F
|
||
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup
|
||
from aiogram.filters import Command
|
||
|
||
from src.filters.case_insensitive import CaseInsensitiveCommand
|
||
from src.core.config import ADMIN_IDS
|
||
from src.core.permissions import is_admin
|
||
|
||
# Создаем роутер для тестов
|
||
test_router = Router()
|
||
|
||
|
||
@test_router.message(CaseInsensitiveCommand("test_start"))
|
||
async def cmd_test_start(message: Message):
|
||
"""Тестовая команда /test_start (регистронезависимо)"""
|
||
user_id = message.from_user.id
|
||
first_name = message.from_user.first_name
|
||
is_admin_user = is_admin(user_id)
|
||
|
||
welcome_text = f"👋 Привет, {first_name}!\n\n"
|
||
welcome_text += "🎯 Это тестовая версия команды /start\n\n"
|
||
|
||
if is_admin_user:
|
||
welcome_text += "👑 У вас есть права администратора!\n\n"
|
||
|
||
buttons = [
|
||
[InlineKeyboardButton(text="🔧 Админ-панель", callback_data="admin_panel")],
|
||
[InlineKeyboardButton(text="➕ Создать розыгрыш", callback_data="create_lottery")],
|
||
[InlineKeyboardButton(text="🎲 Активные розыгрыши", callback_data="list_lotteries")]
|
||
]
|
||
else:
|
||
welcome_text += "👤 Обычный пользователь\n\n"
|
||
|
||
buttons = [
|
||
[InlineKeyboardButton(text="🎲 Активные розыгрыши", callback_data="list_lotteries")],
|
||
[InlineKeyboardButton(text="📝 Мои участия", callback_data="my_participations")],
|
||
[InlineKeyboardButton(text="💳 Мой счёт", callback_data="my_account")]
|
||
]
|
||
|
||
await message.answer(
|
||
welcome_text,
|
||
reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons)
|
||
)
|
||
|
||
|
||
@test_router.message(CaseInsensitiveCommand("test_admin"))
|
||
async def cmd_test_admin(message: Message):
|
||
"""Тестовая команда /test_admin (регистронезависимо)"""
|
||
if not is_admin(message.from_user.id):
|
||
await message.answer("❌ У вас нет прав для выполнения этой команды")
|
||
return
|
||
|
||
await message.answer(
|
||
"🔧 <b>Админ-панель</b>\n\n"
|
||
"👑 Добро пожаловать в панель администратора!\n\n"
|
||
"Доступные функции:",
|
||
parse_mode="HTML",
|
||
reply_markup=InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="👥 Управление пользователями", callback_data="admin_users")],
|
||
[InlineKeyboardButton(text="🎲 Управление розыгрышами", callback_data="admin_lotteries")],
|
||
[InlineKeyboardButton(text="📊 Статистика", callback_data="admin_stats")],
|
||
[InlineKeyboardButton(text="🏠 Главное меню", callback_data="back_to_main")]
|
||
])
|
||
)
|
||
|
||
|
||
@test_router.callback_query(F.data == "test_callback")
|
||
async def test_callback_handler(callback: CallbackQuery):
|
||
"""Тестовый обработчик callback"""
|
||
await callback.answer()
|
||
await callback.message.edit_text(
|
||
"✅ Callback работает!\n\n"
|
||
"Это означает, что кнопки и обработчики функционируют корректно.",
|
||
reply_markup=InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="🔙 Назад", callback_data="back_to_main")]
|
||
])
|
||
)
|
||
|
||
|
||
@test_router.callback_query(F.data == "back_to_main")
|
||
async def back_to_main_handler(callback: CallbackQuery):
|
||
"""Возврат к главному меню"""
|
||
await callback.answer()
|
||
|
||
user_id = callback.from_user.id
|
||
is_admin_user = is_admin(user_id)
|
||
|
||
text = f"🏠 Главное меню\n\nВаш ID: {user_id}\n"
|
||
text += f"Статус: {'👑 Администратор' if is_admin_user else '👤 Пользователь'}"
|
||
|
||
if is_admin_user:
|
||
buttons = [
|
||
[InlineKeyboardButton(text="🔧 Админ-панель", callback_data="admin_panel")],
|
||
[InlineKeyboardButton(text="🎲 Розыгрыши", callback_data="list_lotteries")]
|
||
]
|
||
else:
|
||
buttons = [
|
||
[InlineKeyboardButton(text="🎲 Розыгрыши", callback_data="list_lotteries")],
|
||
[InlineKeyboardButton(text="📝 Мои участия", callback_data="my_participations")]
|
||
]
|
||
|
||
await callback.message.edit_text(
|
||
text,
|
||
reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons)
|
||
) |