Первый коммит
This commit is contained in:
1
bot/templates/__init__.py
Normal file
1
bot/templates/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .message_callback import *
|
||||
77
bot/templates/message_callback.py
Normal file
77
bot/templates/message_callback.py
Normal file
@@ -0,0 +1,77 @@
|
||||
from typing import Union
|
||||
|
||||
from aiogram.types import FSInputFile, CallbackQuery, Message, ReplyKeyboardMarkup, InlineKeyboardMarkup
|
||||
from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder
|
||||
|
||||
# Настройка экспорта
|
||||
__all__ = ('msg', 'msg_photo')
|
||||
|
||||
|
||||
async def msg(message: Message | CallbackQuery,
|
||||
text: str = "Сообщение отправлено!",
|
||||
markup: Union[InlineKeyboardBuilder, ReplyKeyboardBuilder, None] = None) -> None:
|
||||
"""
|
||||
Шаблон для ответа на сообщение текстом.
|
||||
:param message: Объект сообщения или callback-запроса.
|
||||
:param text: Текст отправного сообщения от бота.
|
||||
:param markup: Кнопки сообщения (инлайн или реплай).
|
||||
"""
|
||||
|
||||
# Преобразуем клавиатуру
|
||||
reply_markup: Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, None] = None
|
||||
if markup:
|
||||
if isinstance(markup, InlineKeyboardBuilder):
|
||||
reply_markup: InlineKeyboardMarkup = markup.as_markup()
|
||||
elif isinstance(markup, ReplyKeyboardBuilder):
|
||||
reply_markup: ReplyKeyboardMarkup = markup.as_markup(resize_keyboard=True)
|
||||
|
||||
# Обработчик ответа на сообщение
|
||||
if isinstance(message, Message):
|
||||
await message.reply(
|
||||
text=text,
|
||||
reply_markup=reply_markup
|
||||
)
|
||||
# Обработчик ответа на callback
|
||||
else:
|
||||
await message.message.reply(
|
||||
text=text,
|
||||
reply_markup=reply_markup
|
||||
)
|
||||
|
||||
|
||||
async def msg_photo(
|
||||
message: Message | CallbackQuery,
|
||||
text: str = "Сообщение отправлено!",
|
||||
file: str = "assets/default.jpg",
|
||||
markup: Union[InlineKeyboardBuilder, ReplyKeyboardBuilder, None] = None) -> None:
|
||||
"""
|
||||
Шаблон для ответа на сообщение фотографией.
|
||||
:param message: Объект сообщения или callback-запроса.
|
||||
:param file: Путь к фотографии для ответа.
|
||||
:param text: Подпись к фото.
|
||||
:param markup: Кнопки сообщения (инлайн или реплай).
|
||||
"""
|
||||
|
||||
# Преобразуем клавиатуру
|
||||
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)
|
||||
|
||||
# Обработчик ответа на сообщение
|
||||
if isinstance(message, Message):
|
||||
await message.reply_photo(
|
||||
photo=FSInputFile(file),
|
||||
caption=text,
|
||||
reply_markup=reply_markup
|
||||
)
|
||||
|
||||
# Обработчик ответа на callback
|
||||
else:
|
||||
await message.message.reply_photo(
|
||||
photo=FSInputFile(file),
|
||||
caption=text,
|
||||
reply_markup=reply_markup
|
||||
)
|
||||
Reference in New Issue
Block a user