Donutgramплагины
На этой страницеAPI messages

Сообщения

Перехват исходящего текста и отдельные операции с выбранным сообщением.

API messages

Каждое действие имеет отдельную capability. Разрешение на перехват текста не даёт автоматического чтения истории, отправки или удаления сообщений.

Перед отправкой

Нужно messages.intercept / activeComposer.

await api.messages.beforeSend({ id: "replace", priority: 0 }, input => {
  if (input.text === ".hello") return { text: "Привет!" };
  if (input.text === ".cancel") return { cancel: true };
  return {};
});

Обработчики выполняются в определённом порядке. Замена — обычный текст до 4096 UTF-16 единиц. Медиа без текста, слишком большие и неподдерживаемые rich-черновики не входят в этот перехват. При ошибке или изменившемся чате черновик сохраняется, а исходная команда не отправляется скрыто.

Отправить текст

Нужно messages.send / chosenRecipient. Отправка идёт в текущий нативный чат от выбранной в нём send-as идентичности.

const result = await api.messages.send({ text: "Готово" });

Результат { status: "queued" } означает очередь отправки. Это не подтверждение доставки. Платные действия не выполняются этим методом.

Читать выбранные сообщения

Нужно messages.read / selectedChats и явный нативный контекст.

const selected = await api.messages.read();

Это ограниченные выбранные снимки с непрозрачными handles, а не произвольный запрос истории по chat ID.

Изменить выбранное сообщение

Нужно messages.edit / selectedMessages. В команде меню сообщения можно не передавать handle.

await api.messages.edit({ text: "Исправленный текст" });

Проверяются актуальное сообщение и обычные права Telegram. Новый текст простой: форматирование, ссылки как entities и custom emoji не сохраняются.

Удалить для всех

Нужно messages.delete / selectedMessages.

await api.messages.delete();

Хост проверяет право удаления для всех. При отсутствии права он не подменяет действие локальным удалением. Результат deletionRequested означает запрос нативного удаления.

Лимиты

Отправка, изменение и удаление совместно ограничены пятью действиями за десять секунд и двадцатью в минуту на плагин. Handles прочитанных сообщений истекают через 60 секунд и расходуются одной мутацией.

Пример полного набора — message-tools в готовых проектах.