Files
new_lottery_bot/src/handlers/test_handlers.py
Andrey K. Choi 0fdad07d82
Some checks failed
continuous-integration/drone/pr Build is failing
refactor
2026-02-17 00:22:42 +09:00

110 lines
4.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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)
)