Files
balance_bot/bot/templates/message_callback.py
2026-01-23 04:45:55 +07:00

89 lines
3.2 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.
from typing import Union
from aiogram.types import (
FSInputFile,
CallbackQuery,
Message,
ReplyKeyboardMarkup,
InlineKeyboardMarkup
)
from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder
# Настройка экспорта в модули
__all__ = ('msg', 'msg_photo', 'markups',)
def markups(markup: Union[
InlineKeyboardBuilder,
ReplyKeyboardBuilder,
InlineKeyboardMarkup,
ReplyKeyboardMarkup,
None] = None, ) -> None:
"""Получение маркапа"""
reply_markup: Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, None] = None
if markup:
if isinstance(markup, InlineKeyboardBuilder):
reply_markup = markup.as_markup()
elif isinstance(markup, ReplyKeyboardBuilder):
reply_markup = markup.as_markup(resize_keyboard=True)
elif isinstance(markup, (InlineKeyboardMarkup, ReplyKeyboardMarkup)):
reply_markup = markup
return reply_markup
async def msg(
message: Message | CallbackQuery,
text: str = "Сообщение отправлено!",
markup: Union[
InlineKeyboardBuilder,
ReplyKeyboardBuilder,
InlineKeyboardMarkup,
ReplyKeyboardMarkup,
None,
] = None,
) -> None:
"""
Шаблон для отправки текстового сообщения или ответа на callback-запрос.
Args:
message (Message | CallbackQuery): Сообщение или callback-запрос.
text (str): Текст сообщения.
markup (Union[InlineKeyboardBuilder, ReplyKeyboardBuilder, InlineKeyboardMarkup, ReplyKeyboardMarkup, None]):
Клавиатура для сообщения. Может быть билдера или готовый объект.
"""
if isinstance(message, Message):
await message.reply(text=text, reply_markup=markups(markup))
else:
await message.message.reply(text=text, reply_markup=markups(markup))
async def msg_photo(
message: Message | CallbackQuery,
file: str = "assets/default.jpg",
text: str = "Сообщение отправлено!",
markup: Union[
InlineKeyboardBuilder,
ReplyKeyboardBuilder,
InlineKeyboardMarkup,
ReplyKeyboardMarkup,
None,
] = None,
) -> None:
"""
Шаблон для отправки фотографии с подписью или ответа на callback-запрос.
Args:
message (Message | CallbackQuery): Сообщение или callback-запрос.
file (str): Путь к файлу фотографии.
text (str): Подпись к фото.
markup (Union[InlineKeyboardBuilder, ReplyKeyboardBuilder, InlineKeyboardMarkup, ReplyKeyboardMarkup, None]):
Клавиатура для сообщения. Может быть билдера или готовый объект.
"""
if isinstance(message, Message):
await message.reply_photo(photo=FSInputFile(file), caption=text, reply_markup=markups(markup))
else:
await message.message.reply_photo(photo=FSInputFile(file), caption=text, reply_markup=markups(markup))