Мощный API для создания ботов с 50,000+ функциями. Создавайте ботов для автоматизации, игр, платежей и многого другого.
Начните создавать ботов за несколько минут. Все запросы к API выполняются через HTTPS.
Перейдите на страницу /bots и создайте нового бота. Вы получите токен для доступа к API. Токен можно посмотреть, нажав кнопку "Показать токен" (потребуется ввести пароль от аккаунта).
Все запросы к API имеют следующий формат:
https://messenger.xipher.pro/bot<token>/METHOD_NAME
https://messenger.xipher.pro/api/bot/<token>/METHOD_NAME
Важно: Токен вставляется без символов < и >.
Например, если токен abc123, то URL будет: https://messenger.xipher.pro/botabc123/getMe.
Обе формы пути равнозначны: Telegram-стиль /bot<token>/… и алиас в конвенции нашего API /api/bot/<token>/….
Готовые SDK: xipher_bot.py (Python, без зависимостей) и
xipher-bot-sdk.js (JS/Node 18+).
import requests
TOKEN = "YOUR_BOT_TOKEN" # Получите токен на странице /bots
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
# Получить информацию о боте
response = requests.get(f"{BASE_URL}/getMe")
bot_info = response.json()
print(bot_info)
# Отправить сообщение
# chat_id - это user_id получателя (UUID строка)
response = requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": "user-uuid-here", # UUID пользователя
"text": "Привет! 👋"
})
print(response.json())
Следующие методы Bot API полностью реализованы и готовы к использованию:
Сообщения от пользователей приходят боту в getUpdates и на webhook автоматически — когда пользователь пишет боту в личку. Сообщения бота доставляются получателю мгновенно: WebSocket + push, если он офлайн.
Все запросы к API требуют токен бота в URL. Токен выдается при создании бота на странице /bots. Для просмотра токена нажмите кнопку "Показать токен" и введите пароль от аккаунта.
Проверяет токен бота и возвращает основную информацию о боте.
curl https://api.xipher.pro/bot<token>/getMe
{
"ok": true,
"result": {
"id": "bot-user-uuid",
"is_bot": true,
"first_name": "My Bot",
"username": "mybot",
"can_join_groups": false,
"can_read_all_group_messages": false
}
}
Inline keyboard добавляет кнопки под сообщением, а Reply keyboard показывает нижние кнопки в чате (как в Telegram).
Параметр reply_markup используется в методах sendMessage, sendPhoto и других для добавления кнопок.
{
"inline_keyboard": [
[
{"text": "Кнопка 1", "callback_data": "button1"},
{"text": "Кнопка 2", "callback_data": "button2"}
],
[
{"text": "Открыть сайт", "url": "https://example.com"}
]
]
}
import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
# Создать клавиатуру с кнопками
keyboard = {
"inline_keyboard": [
[
{"text": "✅ Да", "callback_data": "yes"},
{"text": "❌ Нет", "callback_data": "no"}
],
[
{"text": "📖 Документация", "url": "https://messenger.xipher.pro/api"}
]
]
}
# Отправить сообщение с кнопками
response = requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": "USER_UUID",
"text": "Хотите продолжить?",
"reply_markup": keyboard
})
Reply keyboard отображается внизу чата и отправляет текст кнопки как сообщение пользователя.
{
"keyboard": [
[{"text": "Ответить пользователю"}],
[{"text": "История"}, {"text": "Открыть чат"}]
],
"resize_keyboard": true,
"one_time_keyboard": false,
"input_field_placeholder": "Выберите действие"
}
import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
keyboard = {
"keyboard": [
[{"text": "Ответить пользователю"}],
[{"text": "История"}, {"text": "Открыть чат"}]
],
"resize_keyboard": True,
"one_time_keyboard": False
}
requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": "USER_UUID",
"text": "Новый вопрос поддержки",
"reply_markup": keyboard
})
Есть два способа получения обновлений: Long Polling (getUpdates) и Webhooks.
Получает обновления через Long Polling. Используется для получения новых сообщений, callback query и других событий.
import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
# Получить обновления
response = requests.get(f"{BASE_URL}/getUpdates?offset=0&limit=100&timeout=30")
updates = response.json()
print(updates)
Отправка, редактирование и управление сообщениями в чатах.
Отправляет текстовое сообщение в указанный чат.
{"inline_keyboard": [[{"text": "Кнопка", "callback_data": "data"}]]}{"keyboard": [[{"text": "Кнопка"}]], "resize_keyboard": true}import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
response = requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": "user-uuid-here", # UUID пользователя (строка)
"text": "Привет! Это мой первый бот 🤖",
"parse_mode": "HTML"
})
print(response.json())
import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
# Отправить сообщение с inline кнопками
response = requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": "user-uuid-here",
"text": "Выберите действие:",
"reply_markup": {
"inline_keyboard": [
[
{"text": "✅ Принять", "callback_data": "accept"},
{"text": "❌ Отклонить", "callback_data": "reject"}
],
[
{"text": "🌐 Открыть сайт", "url": "https://xipher.pro"}
]
]
}
})
print(response.json())
Редактирует текст отправленного сообщения.
Удаляет сообщение из чата.
Пересылает сообщение из одного чата в другой. Сохраняет информацию об исходном отправителе.
Копирует сообщение из одного чата в другой. Не сохраняет информацию об исходном отправителе.
Отправка фотографий, видео, аудио, документов и других медиафайлов.
Отправляет фотографию в чат. Поддерживаются файлы до 10 ГБ.
Отправляет аудиофайл в чат.
Отправляет документ любого формата (до 10 ГБ).
Отправляет видеофайл.
Отправляет голосовое сообщение (OGG Opus).
Inline и Reply клавиатуры для взаимодействия с пользователями (кнопки под сообщением и нижние кнопки).
Создает кнопки под сообщением. Кнопки могут открывать URL, отправлять callback или запускать Mini Apps.
import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
keyboard = {
"inline_keyboard": [
[
{"text": "Кнопка 1", "callback_data": "button1"},
{"text": "Кнопка 2", "callback_data": "button2"}
],
[
{"text": "Открыть сайт", "url": "https://example.com"}
]
]
}
requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": 123456789,
"text": "Выберите действие:",
"reply_markup": keyboard
})
Нижняя клавиатура (как в Telegram). Нажатие отправляет текст кнопки.
import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
keyboard = {
"keyboard": [
[{"text": "Ответить пользователю"}],
[{"text": "История"}, {"text": "Открыть чат"}]
],
"resize_keyboard": True
}
requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": 123456789,
"text": "Новый вопрос поддержки",
"reply_markup": keyboard
})
Отвечает на нажатие inline-кнопки. Может показать уведомление или открыть URL.
Управление группами: бот действует через права своего владельца.
Права проверяются по владельцу бота: бот может управлять группой, только если владелец — админ этой группы с нужным правом (смена названия, закрепление, ограничение, назначение админов). Владельца группы нельзя забанить и нельзя повысить.
Исключает участника из группы (нужно право владельца на ограничения).
Назначает участника администратором (нужно право владельца на назначение).
Изменяет название группы (нужно право владельца на изменение информации). До 128 символов.
Закрепляет сообщение в группе (нужно право владельца на закрепление; сообщение должно принадлежать группе).
Приём платежей звёздами Xipher: деньги реально переводятся со счёта пользователя на счёт бота через книгу операций платформы. Фиатные валюты (USDT/TON/BTC/RUB) для ботов пока не подключены — принимается только currency: "XTR".
Как идёт оплата: бот вызывает sendInvoice → в чате появляется карточка счёта → пользователь жмёт «Оплатить» → боту уходит апдейт pre_checkout_query → бот отвечает answerPreCheckoutQuery (у клиента 10 секунд на получение вердикта, оплата без подтверждения бота сервер отклоняет) → звёзды переводятся → боту уходит апдейт successful_payment. Как и в Telegram, бот может отклонить платёж с сообщением об ошибке.
Отправляет счет на оплату в чат.
Создает ссылку на оплату для использования в кнопках или вне мессенджера.
Подтверждает или отклоняет запрос на оплату перед списанием средств.
Метаданные файлов и наборы стикеров бота.
Метаданные файла по file_id. Бот видит только файлы, которые сам отправил
или получил; file_id — это путь вида /files/<имя>. Файл доступен по ссылке
https://messenger.xipher.pro<file_path>.
Создаёт набор стикеров бота. Стикеры — файлы платформы: file_id доступных боту файлов или multipart-загрузка (поля-файлы с именами sticker0, sticker1, …). Лимит — 120 стикеров в наборе.
Настройка webhooks для получения обновлений в реальном времени.
Устанавливает URL для получения обновлений через webhook.
import requests
TOKEN = "YOUR_BOT_TOKEN"
BASE_URL = f"https://messenger.xipher.pro/api/bot/{TOKEN}"
requests.post(f"{BASE_URL}/setWebhook", json={
"url": "https://yourdomain.com/webhook",
"secret_token": "your_secret_token",
"allowed_updates": ["message", "callback_query"]
})
Получает информацию о текущем webhook.
Удаляет webhook и переключает бота на Long Polling.
Inline-кнопки с callback_data: нажатие пользователя доставляется боту.
Пользователь нажал inline-кнопку → сервер кладёт боту апдейт callback_query (поля id, from, message, data) в getUpdates и на webhook. Апдейт подтверждается автоматически, как и остальные.
Ответ бота на нажатие: текст показывается нажавшему (тост, а с show_alert — уведомление на 10 секунд), url открывается в новой вкладке. Каждый callback_query_id принимается один раз.
Веб-приложения ботов, открывающиеся внутри мессенджера с подписанным контекстом пользователя.
Приложение открывается по кнопке в сообщении бота — прямо в чате, в защищённом контейнере.
requests.post(f"{BASE_URL}/sendMessage", json={
"chat_id": "user-uuid-here",
"text": "Открой наш магазин:",
"reply_markup": {"inline_keyboard": [[
{"text": "Открыть магазин", "web_app": {"url": "https://bot.example.com/shop"}}
]]}
})
При открытии Xipher передаёт приложению параметр ?init_data=… —
подписанный HMAC-SHA256(токен_бота) контекст:
user_id=…&username=…&bot_user_id=…&auth_date=…&signature=…
Проверка подписи initData (на бэкенде бота или прямо из приложения): ключи до 24 часов, подпись обязательна. Ответ — пользователь и auth_date.
requests.post(f"{BASE_URL}/verifyInitData", json={
"init_data": init_data_from_url
}).json()
# {"ok": true, "result": {"user": {"id": "...", "username": "..."}, "auth_date": ...}}
Служебный эндпоинт клиента: отдаёт подписанный initData для открытия приложения бота (параметры: bot_user_id или bot_username; авторизация сессией пользователя).
Визуальный редактор для создания ботов без написания кода.
Сохраняет сценарий бота, созданный в визуальном редакторе.
{
"nodes": [
{
"id": 1,
"type": "trigger_text",
"data": {"match": "/start"}
},
{
"id": 2,
"type": "send_message",
"data": {"text": "Привет! 👋"}
},
{
"id": 3,
"type": "send_buttons",
"data": {
"buttons": [
{"text": "Кнопка 1", "callback": "action1"},
{"text": "Кнопка 2", "callback": "action2"}
]
}
}
],
"edges": [
{"from": 1, "to": 2},
{"from": 2, "to": 3}
]
}