01
Создайте бота
- Откройте раздел «Боты»Он находится в основном меню приложения Libyra.
- Введите имяПриложение просит его, но сервер сейчас хранит только username: в списке ботов и в чатах бот подписан им.
- Укажите username без @От 2 до 32 символов, не занятый ни другим ботом, ни человеком. По нему бота ищут.
- Нажмите «Создать бота»На карточке появятся bot_pk и токен Bot API. Сразу скопируйте токен и сохраните у себя: сервер хранит только его отпечаток и показать токен ещё раз не может.
На одном аккаунте — до 10 ботов, создавать можно не больше 10 в час. Бот сразу появляется у вас в чатах.
02
Настройте видимость и доступ
Бот доступен владельцу и пользователям, которым вы отдельно выдали доступ.
Бот появляется в поиске «Публичные боты». После «Добавить» бот попадает в чаты, а приложение само отправляет ему /start.
Для точечного доступа нажмите «Доступ» на карточке бота и введите username без @ или ключ пользователя — бот появится у него в чатах. Кнопка «Публичный» добавляет бота в поиск, а «Скрыть» убирает оттуда; у тех, кто уже добавил бота, чат остаётся.
03
Bot API: запросы под библиотекой
Python-библиотека ниже сама выполняет эти запросы; напрямую они нужны, если вы пишете свой клиент. Для проверки вручную внизу раздела «Боты» есть панель Bot API: выберите бота нажатием на карточку, «Updates» получит новые обращения, а «Ответить» у события подставит адрес для ответа. Панель работает, пока приложение помнит токен, и читает ту же очередь, что и bot.py: забранные ею события программа уже не получит.
- Что приходитupdate_id, from_pk, from_public_id, text, created_at и payload. У вложений в payload есть идентификаторы: image_id, doc_id, video_id, audio_id.
- Один разЗа запрос приходит до 100 обновлений, и выданные считаются доставленными: повторно они не придут. Храните их у себя.
- Не чащеgetUpdates — до 120 запросов в минуту на бота, sendMessage — до 60. К сообщению можно приложить до 8 загруженных картинок.
- Кому можно писатьОтвет уходит тем, у кого бот уже в чатах: сам себе собеседников бот не выбирает.
Authorization: Bearer. Параметр ?token= не принимается: адреса попадают в журналы и историю браузера. Ошибки: 403 invalid_bot_token — неверный или удалённый токен, 403 с текстом про собеседника — у человека нет бота в чатах, 429 — превышен предел запросов.04
Python-программа бота с libyra_ui.py
bot.py может быть всей основной программой бота: обработчики, правила, собственная база данных и интеграции живут у вас. Libyra доставляет сообщения и показывает интерфейс. Наша библиотека libyra_ui.py — один файл без сторонних Python-пакетов: она опрашивает Bot API, отправляет ответы и собирает экраны через Bot и ui. Требуется Python 3.10 или новее.
- Получите токенСоздайте бота в Libyra и откройте его карточку. Токен оставьте только у себя.
- Подготовьте папкуПоложите скачанный
libyra_ui.pyрядом со своимbot.py. - Напишите логику
@bot.startсрабатывает на /start (и на любой текст, если@bot.textне задан),@bot.onпринимает нажатие,@bot.textотвечает на текст. Остальные функции Python и хранилище выбираете сами. - ЗапуститеВ терминале этой папки выполните
python bot.py. Введите токен по запросу; для остановки нажмите Ctrl+C.
Бот отвечает, пока запущен процесс python bot.py и доступен сервер Libyra. chat.id — собеседник,chat.values содержит выбор с экрана, аchat.state хранится только в памяти процесса и пропадёт после перезапуска. Для постоянных данных используйте собственную базу. Запускайте программу на своём компьютере или сервере; постоянная работа требует постоянно запущенного процесса.
06
Бот в комнате канала
У канала бывают комнаты для переписки. Владелец или админ канала может впустить туда своего бота: откройте комнату, выберите «Боты комнаты», введите bot_pk или ник бота и нажмите значок добавления рядом с полем. Убрать бота — значком корзины у него в списке.
Отдельного способа опроса для комнат нет: сообщения приходят тем же getUpdates, только в payload будетtype: "channel_group" и group_id. Ответ отправляется запросом POST /api/bot/group/sendс полями group_id и text (до 4000 символов).
Bot.run() из libyra_ui.py не отличает сообщения комнаты от личных: он передаст их в@bot.text и попробует ответить автору в личку, а не в комнату. Если бот сидит в комнате, напишите свой циклgetUpdates, проверяйте payload.type и отвечайте через group/send.07
Подключите мини-приложение
Своя страница. В карточке бота укажите полный адрес, начинающийся с https://, и нажмите «Сохранить». Кнопка «Открыть» проверяет страницу внутри Libyra. Пока бот приватный, приложение видно только вам; другим оно открывается, когда бот публичный. Чтобы отключить мини-приложение, очистите адрес и нажмите «Отключить».
Приложение без своей страницы. В разделе «Боты» есть «Мои приложения»: там приложение задаётся описанием, а рисует его сам Libyra. Ссылка на приложение выглядит какlibyra://app/<код приглашения>, заявки из форм видны в разделе «Заявки». Одному владельцу доступно до 20 приложений.
- ЧерновикПриложение видит только автор. Счёт с него выставить нельзя.
- По приглашениюОткрывается по ссылке. Счёт — до 5 000 ₽.
- ОткрытоеВидят все. Счёт — до 50 000 ₽. Стать открытым можно не раньше чем через сутки после создания и только если нет жалоб.
Локальные файлы из Python
Для своего HTML-интерфейса положите index.html и остальные файлы в одну папку. bot.upload_app("папка")загружает её как ZIP, ui.app(media) создаёт элемент экрана. При отправке укажите apps=[media] вchat.show: это даёт собеседнику доступ к файлам. Такой набор работает без внешней сети внутри телефона и не относится к ступеням «Мои приложения».
Сервер принимает архив до 5 МБ (до 20 МБ в распакованном виде, не больше 300 файлов) с index.html в корне. Внутри допускаются только файлы веб-страницы: HTML, CSS, JS, JSON, WASM, картинки, шрифты, звук и видео.
Libyra Link для разработчиков
Локальный набор файлов мини-приложения может попросить компьютер, подключённый через Libyra Link, положить текст в буфер обмена, сохранить файл или открыть HTTPS-ссылку. Страница бота с внешнего сайта таких прав не получает. Примеры вызовов:
- Буфер
LibyraWebApp.computer.clipboard('Текст') - Файл
LibyraWebApp.computer.saveFile('report.csv', base64) - Ссылка
LibyraWebApp.computer.openLink('https://example.com')
Каждая возможность требует отдельного согласия для конкретной версии программы. Новая версия спрашивает заново; человек может отозвать доступ в «Разрешениях программ» на телефоне и компьютере. Возвращённое методом true означает только приём просьбы, а не выполнение действия. Запуск команд и программ недоступен.
08
Счета и приём оплаты
Счёт выставляете вы, а деньги приходят вам: платёж создаётся в вашем магазине ЮKassa. Libyra показывает счёт и ведёт человека к оплате, но денег не получает и не хранит.
Владелец выставляет счёт через раздел оплаты в Android-приложении. Один только токен Bot API и Bot.run() счета не создают. Кнопка payment из старого формата кнопок также не заменяет счёт Libyra.
- ПодключениеРаздел «Боты» → «Приём оплаты». Введите shopId и секретный ключ из кабинета ЮKassa. Ключ проверяется у ЮKassa и хранится зашифрованным — обратно он не отдаётся никому, включая вас.
- УведомлениеЧтобы оплата отмечалась сама, в кабинете ЮKassa добавьте HTTP-уведомление на адрес
https://libyra.su/backend/api/miniapp/payments/webhook - Кому можно выставитьПодписчику вашего канала, тому, кто уже писал вашему боту, или тому, кто открывал ваше приложение. Незнакомым людям счёт не выставить.
- СколькоСчёт от бота или канала — до 50 000 ₽. Счёт от приложения ограничен его ступенью (см. выше).
- Что видит человекСчёт появляется в «Моих счетах»: сумма, за что, и кнопки «Оплатить» или «Отменить». Счёт живёт сутки и сам по себе ничего не списывает.
- ВозвратПопросить возврат можно в течение 14 дней после оплаты. Решение принимает владелец; если он согласен, деньги возвращает ЮKassa.
09
Удаляйте одного, несколько или всех ботов
Нажмите корзину на карточке нужного бота и подтвердите действие.
Нажмите «Выбрать», отметьте ботов чекбоксами и нажмите корзину.
Нажмите «Удалить все» и подтвердите полную очистку списка.
10
Управляйте перепиской с ботом
- Одно своё сообщениеИспользуйте корзину в меню сообщения или свайп вправо, затем подтвердите удаление.
- Несколько своих сообщенийМеню ⋮ в чате → «Удаление сообщений». На вкладке «Выбор» отметьте нужные сообщения (на вкладке «Дни» — целые дни) и нажмите «Удалить».
- Вся перепискаТам же вкладка «Всё» → «Продолжить» → «Очистить». Переписка удаляется на сервере у обоих: ваши сообщения и ответы бота.
Отдельно удаляются только сообщения, отправленные вами. Ответы бота удаляются вместе со всей перепиской. После очистки чат остаётся открытым и бот может продолжить отвечать на новые команды.
Что важно знать о приватности
Чат с ботом обрабатывается программой бота и не считается личным E2EE-чатом. То же относится к комнате канала, куда впущен бот: он слышит там все сообщения. Не отправляйте боту пароли, закрытые ключи, коды восстановления, платёжные данные и другую информацию, которой не должен располагать владелец бота.
Ботам и каналам, чьих владельцев проверил модератор, выдаётся Знак доверия Libyra; у остальных приложение пишет «Осторожно: не подтверждён». Проверить знак можно в реестре Знака доверия.
Подробнее в политике конфиденциальности