Как управлять ботами

От первого имени и username до ответов через API, кнопок в сообщениях, работы в комнатах каналов, мини-приложений и счетов.

01

Создайте бота

  1. Откройте раздел «Боты»Он находится в основном меню приложения Libyra.
  2. Введите имяЭто отображаемое название, которое увидят пользователи.
  3. Укажите username без @Username нужен для поиска и должен отличать бота от остальных.
  4. Нажмите «Создать бота»После создания появятся bot_pk и токен Bot API.
Экран создания и управления ботами в Libyra Messenger
Раздел «Мои боты» в Android-приложении
Токен равен паролю бота.Не публикуйте его, не отправляйте в чат и не вставляйте в клиентский JavaScript мини-приложения. Если токен раскрыт, удалите бота и создайте нового.

02

Настройте видимость и доступ

Приватный

Бот доступен владельцу и пользователям, которым вы отдельно выдали доступ.

Публичный

Бот появляется в поиске. Пользователь может нажать «Добавить» и начать чат.

Для точечного доступа нажмите «Доступ» на карточке бота и введите username без @ или публичный ключ пользователя. Кнопка «Публичный» добавляет бота в поиск, а «Скрыть»возвращает приватный режим.

03

Получайте сообщения и отвечайте через Bot API

В приложении это делается в карточке бота: кнопка «Updates»получает новые обращения, а «Ответить» у нужного события открывает поле ответа. Своя программа работает с теми же двумя запросами.

Схема: человек пишет боту, сообщение встаёт в очередь на сервере Libyra, программа бота забирает её запросом getUpdates и отвечает запросом sendMessage
Путь сообщения: очередь обновлений на сервере, опрос и ответ со стороны программы бота.
curl -H "Authorization: Bearer <токен>" \ https://libyra.su/backend/api/bot/getUpdates curl -X POST https://libyra.su/backend/api/bot/sendMessage \ -H "Authorization: Bearer <токен>" \ -H "Content-Type: application/json" \ -d '{"to_pk": "<ключ собеседника>", "text": "Заявка принята"}'
  1. Что приходитupdate_id, from_pk, from_public_id, text, created_at и payload. У вложений в payload есть идентификаторы: image_id, doc_id, video_id, audio_id.
  2. Один разЗа запрос приходит до 100 обновлений, и выданные считаются доставленными: повторно они не придут. Храните их у себя.
  3. Не чащеОпрос ограничен 120 запросами в минуту на бота.
  4. Кому можно писатьОтвет уходит тем, у кого бот уже в чатах: сам себе собеседников бот не выбирает.
Токен передаётся только в заголовке Authorization: Bearer. Параметр ?token= не принимается: адреса попадают в журналы и историю браузера.

04

Кнопки и рисунки в сообщениях

Бот отправляет обычное сообщение, которое начинается с префиксаLIBYRA_BUTTONS_V1 и содержит JSON. Приложение рисует по нему кнопки, поэтому вид меню меняется без обновления Libyra.

Схема: кнопка callback передаёт программе бота payload, web_app открывает HTTPS-страницу внутри Libyra, payment показывает сумму на подтверждение
Три действия кнопок и то, чем каждое заканчивается.
  1. callbackПрограмма бота получает payload нажатой кнопки и отвечает как на обычное сообщение.
  2. web_appОткрывает вашу HTTPS-страницу внутри Libyra. Токен в адрес страницы не добавляется.
  3. paymentLibyra показывает сумму и просит подтверждение, после чего боту приходит callback. Деньги при этом двигает платёжный провайдер вашей программы — это не счета Libyra из раздела ниже.

Рисунки устроены так же: сообщение с префиксомLIBYRA_GRAPHIC_V1 описывает фигуры, а рисует их приложение. Так показывают схему, ход расчёта или загрузку — по шагам, а не картинкой.

05

Бот в комнате канала

У канала бывают комнаты для переписки. Владелец канала может впустить туда своего бота: откройте комнату, выберите «Боты комнаты», введите bot_pk или ник бота и нажмите «Впустить бота». Убрать его оттуда — кнопкой «Убрать бота».

Схема: владелец канала впускает бота в комнату, сообщения комнаты приходят боту в getUpdates с типом channel_group, бот отвечает запросом group/send
В комнате бот слышит все сообщения и отвечает туда своим токеном.

Отдельного способа опроса для комнат нет: сообщения приходят тем же getUpdates, только в payload будетtype: "channel_group" и group_id. Ответ отправляется запросом POST /api/bot/group/sendс полями group_id и text.

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

06

Подключите мини-приложение

Своя страница. В карточке бота укажите полный адрес, начинающийся с https://, и нажмите «Сохранить». Кнопка «Открыть» проверяет страницу внутри Libyra. Чтобы отключить мини-приложение, очистите адрес и сохраните снова.

Приложение без своей страницы. В разделе «Боты» есть «Мои приложения»: там приложение задаётся описанием, а рисует его сам Libyra. Ссылка на приложение выглядит какlibyra://app/<код приглашения>, заявки из форм видны в разделе «Заявки». Одному владельцу доступно до 20 приложений.

Схема ступеней: черновик видит только автор, по приглашению — по ссылке и счёт до 5 000 рублей, открытое видят все и счёт до 50 000 рублей
Ступень видимости решает, кто видит приложение и на какую сумму можно выставить счёт.
  1. ЧерновикПриложение видит только автор. Счёт с него выставить нельзя.
  2. По приглашениюОткрывается по ссылке. Счёт — до 5 000 ₽.
  3. ОткрытоеВидят все. Счёт — до 50 000 ₽. Стать открытым можно не раньше чем через сутки после создания и только если нет жалоб.
Снять приложение на ступень ниже можно в любой момент. Три жалобы — и приложение выключается само.

07

Счета и приём оплаты

Счёт выставляете вы, а деньги приходят вам: платёж создаётся в вашем магазине ЮKassa. Libyra показывает счёт и ведёт человека к оплате, но денег не получает и не хранит.

Схема оплаты: владелец выставляет счёт, человек решает платить, платёж создаётся в магазине ЮKassa владельца, ЮKassa уведомляет сервер Libyra, счёт отмечается оплаченным
Деньги идут напрямую в магазин владельца; Libyra отмечает счёт оплаченным по уведомлению от ЮKassa.
  1. ПодключениеРаздел «Боты» → «Приём оплаты». Введите shopId и секретный ключ из кабинета ЮKassa. Ключ проверяется у ЮKassa и хранится зашифрованным — обратно он не отдаётся никому, включая вас.
  2. УведомлениеЧтобы оплата отмечалась сама, в кабинете ЮKassa добавьте HTTP-уведомление на адрес https://libyra.su/backend/api/miniapp/payments/webhook
  3. Кому можно выставитьПодписчику вашего канала, собеседнику вашего бота или тому, кто открывал ваше приложение. Незнакомым людям счёт не выставить.
  4. Что видит человекСчёт появляется в «Моих счетах»: сумма, за что, и кнопки «Оплатить» или «Отменить». Счёт живёт сутки и сам по себе ничего не списывает.
  5. ВозвратПлательщик может попросить возврат, решение принимает владелец. Просьба остаётся в счёте.
Пока приём оплаты не подключён, счёт всё равно можно выставить — человек увидит его, но оплатить не сможет. Тестовый магазин ЮKassa тоже работает: настоящие деньги при этом не двигаются.

08

Удаляйте одного, несколько или всех ботов

Один

Нажмите корзину на карточке нужного бота и подтвердите действие.

Несколько

Нажмите «Выбрать», отметьте ботов чекбоксами и нажмите корзину.

Все

Нажмите «Удалить все» и подтвердите полную очистку списка.

Удаление необратимо: бот и его токен удаляются с сервера. При массовой операции приложение показывает прогресс, а бот с ошибкой остаётся в списке, чтобы удаление можно было повторить.

09

Управляйте перепиской с ботом

  1. Одно своё сообщениеИспользуйте корзину в меню сообщения или свайп вправо, затем подтвердите удаление.
  2. Несколько своих сообщенийОткройте меню ⋮ в чате, выберите «Удалить сообщения», отметьте нужные строки и подтвердите.
  3. Вся перепискаВ меню ⋮ выберите «Очистить переписку». Удалятся ваши сообщения и ответы бота.

Отдельно удаляются только сообщения, отправленные вами. Ответы бота удаляются вместе со всей перепиской. После очистки чат остаётся открытым и бот может продолжить отвечать на новые команды.

Что важно знать о приватности

Чат с ботом обрабатывается программой бота и не считается личным E2EE-чатом. То же относится к комнате канала, куда впущен бот: он слышит там все сообщения. Не отправляйте боту пароли, закрытые ключи, коды восстановления, платёжные данные и другую информацию, которой не должен располагать владелец бота.

Подробнее в политике конфиденциальности