This repository has been archived on 2025-09-07. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
MouseyBot/Mousey/Bot/Handlers/Private/__init__.py
2025-08-22 11:37:26 +07:00

90 lines
2.8 KiB
Python

__all__ = ["__setup_private_router"]
from loguru import logger
from aiogram import Router, F
from aiogram.filters import Command
from Mousey.Bot.States import OfferNews
from .utils import cmd_get_stickers, cmd_cancel
from .menu import cmd_menu, call_menu, call_useful_info, call_about_bot_info
from .news import (
call_news_menu,
cmd_news_offer,
call_news_offer,
call_input_news_text,
call_news_offer_send,
call_news_statistics,
cmd_news_input_error,
call_news_offer_cancel,
call_input_news_contact,
)
def __setup_private_router() -> Router:
"""
Регистрация событий для роутера пользователей.
"""
router = Router()
########################
### Полезные команды ###
########################
router.message.register(cmd_cancel, Command("cancel"))
router.message.register(cmd_get_stickers, Command("get_stickers"))
#########################
### Главное меню бота ###
#########################
router.message.register(cmd_menu, Command(commands=["start", "menu"]))
router.callback_query.register(call_menu, F.data == "menu")
router.callback_query.register(call_useful_info, F.data == "useful_info")
router.callback_query.register(call_about_bot_info, F.data == "about_bot_info")
######################
### Новостное меню ###
######################
router.callback_query.register(call_news_menu, F.data == "news_menu")
# Статистика новостей
router.callback_query.register(call_news_statistics, F.data == "news_statistics")
# Меню, для предложки новостей
router.callback_query.register(call_news_offer, F.data == "news_offer")
# Кнопки при предложении новости
router.callback_query.register(call_input_news_text, F.data == "news_input_text")
router.callback_query.register(call_input_news_contact, F.data == "news_input_contact")
# Обработка ввода текста для предложки
router.message.register(
cmd_news_offer,
F.text,
OfferNews.typing_text,
)
router.message.register(
cmd_news_offer,
F.text,
OfferNews.typing_contact,
)
router.message.register(
cmd_news_input_error,
OfferNews.typing_text,
)
router.message.register(
cmd_news_input_error,
OfferNews.typing_contact,
)
# Отправить новость
router.callback_query.register(call_news_offer_send, F.data == "news_offer_send")
# Отменить отправку новости
router.callback_query.register(call_news_offer_cancel, F.data == "news_offer_cancel")
logger.success("Роутер для ЛС готов.")
return router