ITDO Bot API

Создавайте ботов для автоматизации сообщений в ITDO. API использует Bearer-токены и совместим с обычным HTTPS-клиентом.

Версия API: v1 · Base URL: https://itdo.bleyzos.ru/api/bot/v1.php

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

  1. Откройте Настройки → Мои боты.
  2. Создайте бота и сохраните токен. Он показывается только при создании или регенерации.
  3. Передавайте его в заголовке Authorization: Bearer bot_....
Важно: токен нельзя помещать в браузерный JavaScript, URL, Git или логи. При утечке нажмите «Новый токен» в настройках.
60API-запросов в минуту
20сообщений в минуту
4000символов в сообщении

Методы

GET?method=getMe

Проверяет токен и возвращает профиль бота.

curl -sS 'https://itdo.bleyzos.ru/api/bot/v1.php?method=getMe' \
  -H 'Authorization: Bearer bot_YOUR_TOKEN'
POST?method=sendMessage

Отправляет текст в чат, где бот является участником.

curl -sS -X POST 'https://itdo.bleyzos.ru/api/bot/v1.php?method=sendMessage' \
  -H 'Authorization: Bearer bot_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"chat_id":123,"text":"Привет из бота"}'
GET?method=getUpdates

Возвращает новые сообщения для polling. После обработки сохраняйте последний update_id и передавайте его как offset.

curl -sS 'https://itdo.bleyzos.ru/api/bot/v1.php?method=getUpdates&offset=0&limit=50' \
  -H 'Authorization: Bearer bot_YOUR_TOKEN'

Лимиты и антиспам

ПравилоЗначение
Все API-запросы60 в минуту на бота
Исходящие сообщения20 в минуту на бота
ДубликатыОдинаковый текст в том же чате за 30 секунд подавляется
Длина текстаДо 4000 символов
ЧатыТолько чаты, где бот состоит участником

При HTTP 429 дождитесь количества секунд из заголовка Retry-After. Не создавайте несколько ботов для обхода лимитов.

Безопасность

  • Храните токен в переменной окружения или secret manager.
  • Используйте HTTPS и проверяйте сертификат.
  • Не принимайте команды от пользователей, которым бот не должен отвечать.
  • Ограничивайте частоту polling и корректно обрабатывайте сетевые ошибки.
  • При компрометации токена сразу регенерируйте его.
Сейчас поддерживается polling через getUpdates. Webhook пока не включён.

Пример Node.js

const base = 'https://itdo.bleyzos.ru/api/bot/v1.php';
const token = process.env.ITDO_BOT_TOKEN;

async function call(method, body) {
  const response = await fetch(`${base}?method=${method}`, {
    method: body ? 'POST' : 'GET',
    headers: {
      Authorization: `Bearer ${token}`,
      ...(body ? { 'Content-Type': 'application/json' } : {})
    },
    body: body ? JSON.stringify(body) : undefined
  });
  const data = await response.json();
  if (!response.ok) throw new Error(data.error || response.statusText);
  return data.result;
}

console.log(await call('getMe'));