Cluster · разработчикам

Message

Сообщение с текстом, вложением и клавиатурой. Отслеживает ID, источник и состояние отправки.

Все методы SDK · Типы и ошибки

Получение объекта

message = app.message(ctx, text="Ready")

Для edit/update/replace/close сообщение уже отправлено. send() используют на новом объекте.

__init__

Создаёт Message. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.

def __init__(app: App, context: Event | int | None = None, *, source: str | None = None, text: str | Text = '', media: Media | None = None, keyboard: Keyboard | list[list[Button]] | None = None) -> None: ...

Аргументы

Результат

None. Создаёт Message. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

# Обычный способ получения объекта:
message = app.message(ctx, text="Ready")

id

Возвращает ID отправленного сообщения либо None. Для приватного ответа используй также ephemeral_id.

def id() -> int | None: ...

Свойство: читается без скобок и без await.

Аргументы

Нет.

Результат

int | None. Возвращает ID отправленного сообщения либо None. Для приватного ответа используй также ephemeral_id.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

value = message.id

ephemeral_id

Возвращает идентификатор приватного сообщения бота либо None.

def ephemeral_id() -> int | None: ...

Свойство: читается без скобок и без await.

Аргументы

Нет.

Результат

int | None. Возвращает идентификатор приватного сообщения бота либо None.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

value = message.ephemeral_id

receiver

Возвращает получателя приватного сообщения из результата либо sender_id контекста; до отправки возвращает None.

def receiver() -> int | None: ...

Свойство: читается без скобок и без await.

Аргументы

Нет.

Результат

int | None. Возвращает получателя приватного сообщения из результата либо sender_id контекста; до отправки возвращает None.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

value = message.receiver

set_text

Меняет текст локально без отправки.

def set_text(text: str | Text) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Меняет текст локально без отправки.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

result = message.set_text("Ready")

attach

Локально устанавливает Media или создаёт вложение из файла. Для замены уже отправленного вложения нужен edit().

def attach(file: Media | str | bytes, kind: str = 'document', **data: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Локально устанавливает Media или создаёт вложение из файла. Для замены уже отправленного вложения нужен edit().

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

result = message.attach("file-id", parse_mode="HTML")

send

Отправляет новое сообщение один раз через выбранный источник. Клавиатура автоматически создаёт зарегистрированную форму.

async def send(chat: int | None = None, **options: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Отправляет новое сообщение один раз через выбранный источник. Клавиатура автоматически создаёт зарегистрированную форму.

Права

Нужны telegram.send либо bot.send по source; files.read для готового вложения; files.write при загрузке bytes; при зарегистрированных кнопках дополнительно bot.send. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await message.send(parse_mode="HTML")

edit

Меняет активное сообщение или форму. Для добавления кнопок к обычному сообщению и удаления вложения используй replace().

async def edit(text: str | Text | None = None, **options: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Меняет активное сообщение или форму. Для добавления кнопок к обычному сообщению и удаления вложения используй replace().

Права

Нужны telegram.send либо bot.send по source; files.read для готового вложения; files.write при загрузке bytes; при зарегистрированных кнопках дополнительно bot.send. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await message.edit(parse_mode="HTML")

update

Отправляет текущее локальное состояние как редактирование.

async def update() -> Self: ...

Аргументы

Нет.

Результат

Self. Тот же объект после успешной операции. Отправляет текущее локальное состояние как редактирование.

Права

Нужны telegram.send либо bot.send по source; files.read для готового вложения; files.write при загрузке bytes; при зарегистрированных кнопках дополнительно bot.send. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await message.update()

replace

Сначала отправляет новое сообщение с текущим содержимым, затем удаляет прежнее. При ошибке отправки сохраняет прежнюю ссылку; ошибка удаления может оставить оба сообщения.

async def replace(**options: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Сначала отправляет новое сообщение с текущим содержимым, затем удаляет прежнее. При ошибке отправки сохраняет прежнюю ссылку; ошибка удаления может оставить оба сообщения.

Права

Нужны telegram.send либо bot.send по source; files.read для готового вложения; files.write при загрузке bytes; при зарегистрированных кнопках дополнительно bot.send. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await message.replace(parse_mode="HTML")

close

Удаляет активное сообщение или форму и отмечает объект закрытым.

async def close() -> bool: ...

Аргументы

Нет.

Результат

bool. Удаляет активное сообщение или форму и отмечает объект закрытым.

Права

Нужны telegram.send либо bot.send по source; files.read для готового вложения; files.write при загрузке bytes; при зарегистрированных кнопках дополнительно bot.send. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await message.close()