API-пайплайн: подключить Telegram-аккаунт как оракула (телефон → код → 2FA), запускать и останавливать его, входить заново, когда просит Telegram

Индекс: API-пайплайны — индекс

Цель: ваш Telegram-аккаунт работает как оракул: отвечает людям по своей агенде и ведёт ваши кампании. Вы один раз входите в него (телефон → код → 2FA), запускаете и останавливаете его и входите заново, когда Telegram завершает сессию.

Шаги

1. Запросите код входа. Выберите session_key (любая уникальная строка, например UUID) и используйте её в шагах 1–4. api_id и api_hash берутся на my.telegram.org.

POST /v0/my/oracles/register
{"step": "start", "session_key": "3f6c…", "phone": "+15550000000",
 "api_id": "12345678", "api_hash": "0123abcd…"}
→ {"session_key": "3f6c…", "state": "awaiting_code"}

2. Отправьте код, который Telegram прислал на аккаунт.

POST /v0/my/oracles/register
{"step": "code", "session_key": "3f6c…", "code": "12345"}
→ {"session_key": "3f6c…", "state": "awaiting_password"}   2FA is on: step 3
→ {"session_key": "3f6c…", "state": "authorized"}          no 2FA: step 4

awaiting_password: включена 2FA, шаг 3; authorized: 2FA нет, шаг 4.

3. Облачный пароль 2FA (только если просят).

POST /v0/my/oracles/register
{"step": "password", "session_key": "3f6c…", "password": "…"}
→ {"session_key": "3f6c…", "state": "authorized"}

Любой шаг может ответить {"state": "failed", "error": "…"}: начните заново с новым session_key.

4. Создайте оракула с тем же session_key сразу после последнего шага.

POST /v0/my/oracles
Idempotency-Key: oracle-anna-1
{"kind": "mtproto_account", "title": "Anna", "session_key": "3f6c…",
 "project": "<your Pro project>", "agenda": "<agenda nonce>"}
→ {"nonce": "470000000000000001", "card_type": "oracle", "kind": "mtproto_account",
   "status": "STOPPED", "phone_masked": "+15•••••••00", …}

5. Запуск и остановка.

POST /v0/my/oracles/470000000000000001/start
→ {"success": true, "status": "STARTING"}

Опрашивайте GET /v0/my/oracles/{nonce} раз в несколько секунд: ACTIVE (работает, обычно в течение минуты), FAILED (session_note объясняет почему), REAUTH_REQUIRED или PENDING (шаг 6). POST …/stop → {"success": true, "status": "STOPPED"}.

6. Войти заново, когда статус REAUTH_REQUIRED (Telegram завершил сессию) или PENDING (вход не был завершён).

POST /v0/my/oracles/{nonce}/reauth/start      {}
→ {"session_key": "9a1b…", "state": "awaiting_code", "phone_masked": "+15•••••••00", "status": "REAUTH_REQUIRED"}
POST /v0/my/oracles/{nonce}/reauth/code       {"session_key": "9a1b…", "code": "12345"}
→ {"state": "awaiting_password", …}  or  {"state": "complete", …}
POST /v0/my/oracles/{nonce}/reauth/password   {"session_key": "9a1b…", "password": "…"}
→ {"state": "complete", "status": "…"}

За кадром

Правила

Поверхность API

Эндпоинт Назначение FE ИИ / оракул
POST /v0/my/oracles/register Шаги входа: start, code, password да собственный ИИ пользователя, когда человек рядом
POST /v0/my/oracles Создать оракула после завершённого входа да да
GET /v0/my/oracles, GET /v0/my/oracles/{nonce} Список; статус, session_note, ограничение да да
PATCH /v0/my/oracles/{nonce} Агенда, проект, listen_dm, gender, текст да да
POST /v0/my/oracles/{nonce}/start, /stop Запустить / остановить да да
POST /v0/my/oracles/{nonce}/reauth/start, /code, /password Войти заново да собственный ИИ пользователя, когда человек рядом
DELETE /v0/my/oracles/{nonce} Остановить и удалить да редко

Упомянуто