First commit
This commit is contained in:
68
bot/handlers/commands/users/start_cmd.py
Normal file
68
bot/handlers/commands/users/start_cmd.py
Normal file
@@ -0,0 +1,68 @@
|
||||
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 = _(
|
||||
"""Добро пожаловать, <a href="{url}">{name}</a>!
|
||||
|
||||
Я ваш помощник по проекту — <b>PrimoWiki</b>!
|
||||
Моя цель — помочь вам сориентироваться и сделать ваше вступление куда проще!
|
||||
|
||||
Надеюсь, я смогу вам помочь! Пожалуйста, выберите нужную функцию на клавиатуре!
|
||||
"""
|
||||
).format(
|
||||
url=update.from_user.url,
|
||||
name=update.from_user.first_name,
|
||||
rp_name=RpValue.RP_NAME,
|
||||
)
|
||||
|
||||
# Добавляем информацию об активном диалоге, если есть
|
||||
if has_active_topic:
|
||||
text += "\n\n💬 <b>У вас есть активный диалог с поддержкой!</b>"
|
||||
|
||||
# Отправляем сообщение
|
||||
await msg_photo(message=message, text=text, file=f'assets/{CMD}.jpg', markup=ikb)
|
||||
|
||||
if callback:
|
||||
await callback.answer()
|
||||
Reference in New Issue
Block a user