from aiogram import Router, F from aiogram.filters import Command from aiogram.fsm.context import FSMContext from aiogram.types import Message, CallbackQuery, InlineKeyboardButton from aiogram.utils.i18n import gettext as _ from aiogram.utils.keyboard import InlineKeyboardBuilder from bot.core.bots import BotInfo from bot.templates import msg_photo from configs import COMMANDS, RpValue from .new_cmd import user_topic_map # Импортируем мапу топиков из модуля new __all__ = ("router",) CMD: str = "start".casefold() router: Router = Router(name=f"{CMD}_cmd_router") @router.callback_query(F.data.casefold() == CMD) @router.message(Command(*COMMANDS[CMD], prefix=BotInfo.prefix, ignore_case=True)) async def start_cmd(update: Message | CallbackQuery, state: FSMContext) -> None: """Обработчик команды /start""" # Определяем тип update if isinstance(update, CallbackQuery): message = update.message callback = update else: message = update callback = None # Проверяем, есть ли у пользователя активный топик user_id = update.from_user.id has_active_topic = user_id in user_topic_map # Создание инлайн-клавиатуры ikb: InlineKeyboardBuilder = InlineKeyboardBuilder() ikb.row(InlineKeyboardButton(text="Википедия🌐", url="https://t.me/PrimoWiki")) if has_active_topic: # Если есть активный топик, показываем кнопку "Продолжить диалог" ikb.row(InlineKeyboardButton(text="Продолжить диалог💬", callback_data='continue_dialog')) else: # Если нет активного топика, показываем кнопку "Связаться" ikb.row(InlineKeyboardButton(text="Связаться👀", callback_data='new')) # Формируем приветственное сообщение text: str = _( """Добро пожаловать, {name}! Я ваш помощник по проекту — PrimoWiki! Моя цель — помочь вам сориентироваться и сделать ваше вступление куда проще! Надеюсь, я смогу вам помочь! Пожалуйста, выберите нужную функцию на клавиатуре! """ ).format( url=update.from_user.url, name=update.from_user.first_name, rp_name=RpValue.RP_NAME, ) # Добавляем информацию об активном диалоге, если есть if has_active_topic: text += "\n\n💬 У вас есть активный диалог с поддержкой!" # Отправляем сообщение await msg_photo(message=message, text=text, file=f'assets/{CMD}.jpg', markup=ikb) if callback: await callback.answer()