forevormess

Документация

Bot API

HTTP API для ботов FOREVORmess. Любой язык программирования, без SDK и шаблонов. Бот живёт на вашем сервере и сам опрашивает getUpdates.

Базовый URL

https://forevormess.com/bot-api/{TOKEN}/{method}

{TOKEN} это секрет вида bot + 32 hex-символа. Методы с телом: POST, JSON, заголовок Content-Type: application/json. getUpdates можно вызывать GET или POST.

Токен

Сгенерируйте токен сами и храните как пароль. Первый успешный getMe регистрирует бота.

TOKEN="bot$(openssl rand -hex 16)"
echo "$TOKEN"

Формат ответа

{ "ok": true, "result": ... }
{ "ok": false, "description": "текст ошибки" }

chat_id и большие id лучше передавать строкой, чтобы не терять точность.

Быстрый старт

TOKEN="botYOUR_HEX_HERE"
BASE="https://forevormess.com/bot-api/${TOKEN}"

# 1. Регистрация и проверка
curl -sS -X POST "$BASE/getMe"

# 2. Username и имя в профиле
curl -sS -X POST "$BASE/setMyUsername" \
  -H "Content-Type: application/json" \
  -d '{"username":"my_bot"}'

curl -sS -X POST "$BASE/setMyName" \
  -H "Content-Type: application/json" \
  -d '{"first_name":"My Bot"}'

# 3. Long polling
curl -sS "$BASE/getUpdates?timeout=25&offset=0"

# 4. Ответ пользователю
curl -sS -X POST "$BASE/sendMessage" \
  -H "Content-Type: application/json" \
  -d '{"chat_id":"1234567890123456","text":"Привет!"}'

Методы

getMe

Проверка токена. Создаёт аккаунт бота при первом вызове.

POST /getMe
GET  /getMe

setMyUsername

Уникальный @username бота (латиница, цифры, подчёркивание).

{ "username": "my_bot" }

setMyName

{ "first_name": "Имя в профиле" }

setMyDescription

{ "description": "Текст bio бота" }

setMyPhoto

Data URL (data:image/...) или URL картинки на forevormess.com.

{ "photo": "data:image/png;base64,..." }

sendMessage

{
  "chat_id": "1234567890123456",
  "text": "Текст сообщения",
  "reply_markup": { ... }
}

setChatKeyboard

Reply-клавиатура под полем ввода (бар кнопок).

{
  "chat_id": "1234567890123456",
  "reply_markup": {
    "keyboard": [[{"text": "Помощь"}, {"text": "Меню"}]]
  }
}

getChat

{ "chat_id": "1234567890123456" }

getChatMembers

{ "chat_id": "1234567890123456" }

deleteMessage

{
  "chat_id": "1234567890123456",
  "message_id": "9876543210987654"
}

banChatMember

{
  "chat_id": "1234567890123456",
  "user_id": "1112223334445556",
  "reason": "спам",
  "until_unix": 0
}

muteChatMember / restrictChatMember

Мут участника группы/канала. Бот должен быть админом с правом мута. Нужен срок.

{
  "chat_id": "1234567890123456",
  "user_id": "1112223334445556",
  "until_unix": 1735689600
}

{
  "chat_id": "1234567890123456",
  "user_id": "1112223334445556",
  "duration_seconds": 600
}

unmuteChatMember

{
  "chat_id": "1234567890123456",
  "user_id": "1112223334445556"
}

getUserData / setUserData

Произвольный JSON на пользователя (хранилище бота).

GET user:  { "user_id": "1112223334445556" }
SET user:  { "user_id": "1112223334445556", "data": { "step": 2 } }

getUpdates

Long polling. После каждого апдейта увеличивайте offset на 1.

GET  /getUpdates?timeout=25&offset=0
POST { "timeout": 25, "offset": 0 }

Кнопки (reply_markup)

keyboard кнопки под чатом (бар). Отправляются текстом при нажатии.

"reply_markup": {
  "keyboard": [
    [{"text": "Помощь"}, {"text": "О боте"}],
    [{"text": "Меню"}]
  ]
}

inline_keyboard кнопки под конкретным сообщением бота.

"reply_markup": {
  "inline_keyboard": [
    [{"text": "OK", "callback_data": "ok"}],
    [{"text": "Сайт", "url": "https://forevormess.com"}]
  ]
}

Типы кнопок: text, callback_data, url, username, chat_username.

Апдейты

В getUpdates приходят объекты:

while True:
    updates = get_updates(offset)
    for u in updates:
        offset = u["update_id"] + 1
        if "message" in u:
            handle_message(u["message"])
        if "callback_query" in u:
            handle_callback(u["callback_query"])

Бот отвечает пользователям после команды «старт» / «start» (логика на вашей стороне).