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

114 lines
3 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