#!/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( "🔧 Админ-панель\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) )