Исходный код raito.plugins.pagination.paginators.rich
from __future__ import annotations
from typing import TYPE_CHECKING
from raito.plugins.pagination.enums import PaginationMode
from raito.utils.errors import SuppressNotModifiedError
from .base import BasePaginator
if TYPE_CHECKING:
from aiogram.types import (
InlineKeyboardMarkup,
InputRichMessage,
Message,
ReplyParameters,
)
__all__ = ("RichPaginator",)
[документация]
class RichPaginator(BasePaginator):
"""Rich message paginator."""
@property
def mode(self) -> PaginationMode:
"""Get rich pagination mode.
:return: pagination mode
:rtype: PaginationMode
"""
return PaginationMode.RICH
[документация]
async def answer(
self,
rich_message: InputRichMessage,
disable_notification: bool | None = None,
protect_content: bool | None = None,
allow_paid_broadcast: bool | None = None,
message_effect_id: str | None = None,
reply_parameters: ReplyParameters | None = None,
reply_markup: InlineKeyboardMarkup | None = None,
) -> Message:
"""Send or edit paginated rich message.
:param rich_message: rich message content
:type rich_message: InputRichMessage
:param disable_notification: disable notification
:type disable_notification: bool | None
:param protect_content: protect content
:type protect_content: bool | None
:param allow_paid_broadcast: allow paid broadcast
:type allow_paid_broadcast: bool | None
:param message_effect_id: message effect id
:type message_effect_id: str | None
:param reply_parameters: reply parameters
:type reply_parameters: ReplyParameters | None
:param reply_markup: custom reply markup
:type reply_markup: InlineKeyboardMarkup | None
:return: paginated message
:rtype: Message
:raises RuntimeError: if bot instance not set
"""
if not self.bot:
raise RuntimeError("Bot not set via PaginatorMiddleware")
reply_markup = reply_markup or self.build_navigation()
if self.existing_message is None:
self.existing_message = await self.bot.send_rich_message(
chat_id=self.chat_id,
rich_message=rich_message,
disable_notification=disable_notification,
protect_content=protect_content,
allow_paid_broadcast=allow_paid_broadcast,
message_effect_id=message_effect_id,
reply_parameters=reply_parameters,
reply_markup=reply_markup,
)
else:
with SuppressNotModifiedError():
await self.existing_message.edit_text(
rich_message=rich_message,
reply_markup=reply_markup,
)
return self.existing_message