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

Form

Отправленная форма с текстом, медиа, зарегистрированными кнопками и локальным состоянием. Изменения отдельных кнопок сразу обновляют сообщение.

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

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

form = app.inline(ctx)

Для load() у form уже есть ID; для edit/update/close и изменения кнопок форма уже отправлена. Для методов кнопок существует key="open".

__init__

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

def __init__(inline: Inline, context: Event | int | None = None, id: str | None = None) -> None: ...

Аргументы

Результат

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

Права

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

Ошибки

Пример

# Обычный способ получения объекта:
form = app.inline(ctx)

message_id

Возвращает ID сообщения из локальных данных либо None до отправки или загрузки.

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

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

Аргументы

Нет.

Результат

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

Права

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

Ошибки

Пример

value = form.message_id

button

Возвращает кнопку по key; перед доступом к существующей неизвестной форме нужен load().

def button(key: str) -> Button: ...

Аргументы

Результат

Button. Возвращает кнопку по key; перед доступом к существующей неизвестной форме нужен load().

Права

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

Ошибки

Пример

result = form.button("open")

load

Загружает текст, медиа, кнопки, параметры и ID сообщения существующей формы.

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

Аргументы

Нет.

Результат

Self. Тот же объект после успешной операции. Загружает текст, медиа, кнопки, параметры и ID сообщения существующей формы.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.load()

form

Отправляет новую форму один раз, сохраняет ID и помещает её в локальный кэш inline.units.

async def form(data: JSON = None, **kwargs: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Отправляет новую форму один раз, сохраняет ID и помещает её в локальный кэш inline.units.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.form(text="Ready", chat=ctx.chat_id)

edit

Обновляет текст, клавиатуру, медиа и параметры активной формы. Превратить форму с медиа в текстовую этим методом нельзя.

async def edit(data: JSON = None, **kwargs: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Обновляет текст, клавиатуру, медиа и параметры активной формы. Превратить форму с медиа в текстовую этим методом нельзя.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.edit(text="Updated")

update

Отправляет текущее локальное состояние активной формы.

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

Аргументы

Нет.

Результат

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

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.update()

close

Удаляет активную форму и убирает её из локального кэша.

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

Аргументы

Нет.

Результат

bool. Удаляет активную форму и убирает её из локального кэша.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.close()

drop_button

Удаляет кнопку по key и сразу обновляет форму.

async def drop_button(key: str) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Удаляет кнопку по key и сразу обновляет форму.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.drop_button("open")

rename_button

Меняет подпись кнопки по key и сразу обновляет форму.

async def rename_button(key: str, text: str | Text) -> Self: ...

Аргументы

Результат

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

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.rename_button("open", "Ready")

hide_button

Скрывает кнопку по key и сразу обновляет форму.

async def hide_button(key: str) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Скрывает кнопку по key и сразу обновляет форму.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.hide_button("open")

show_button

Показывает кнопку по key и сразу обновляет форму.

async def show_button(key: str) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Показывает кнопку по key и сразу обновляет форму.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.show_button("open")

disable_button

Отключает кнопку по key и сразу обновляет форму.

async def disable_button(key: str) -> Self: ...

Аргументы

Результат

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

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.disable_button("open")

enable_button

Включает кнопку по key и сразу обновляет форму.

async def enable_button(key: str) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Включает кнопку по key и сразу обновляет форму.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.enable_button("open")

move_button

Перемещает кнопку по key в выбранную строку и сразу обновляет форму.

async def move_button(key: str, row: int, index: int = 0) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Перемещает кнопку по key в выбранную строку и сразу обновляет форму.

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.move_button("open", 0)

sort_buttons

Сортирует кнопки и сразу обновляет форму; параметры соответствуют Keyboard.sort().

async def sort_buttons(key: Callable | None = None, reverse: bool = False, per_row: bool = False) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Сортирует кнопки и сразу обновляет форму; параметры соответствуют Keyboard.sort().

Права

Нужны bot.send; telegram.send дополнительно для отправки через via="inline". files.read при медиа; ограничения chats/users и доступ callback продолжают действовать. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await form.sort_buttons()

answer

Передаёт ответ на callback через сохранённый контекст события.

async def answer(text: str | Text = '', alert: bool = False) -> JSON: ...

Аргументы

Результат

JSON. Передаёт ответ на callback через сохранённый контекст события.

Права

Контекст действующего callback; полномочия кнопки и её отправителя проверяет ядро.

Ошибки

Пример

result = await form.answer()