Вопрос

OpenClaw и Telegram: подключение и pairing по шагам

Заведёте бота в BotFather, пропишете токен в конфиге и одобрите первый DM через CLI, разберётесь с группами и privacy mode.

· 4 мин чтения

Коротко

  • Токен кладётся в ~/.openclaw/openclaw.json или через openclaw channels add; переменная TELEGRAM_BOT_TOKEN работает только для дефолтного аккаунта.
  • Сопряжение включается политикой dmPolicy: "pairing": первое личное сообщение не пройдёт, пока его не одобрят через openclaw pairing approve telegram <CODE>.
  • Коды живут час, в очереди максимум 3 запроса на аккаунт; состояние сопряжения хранится в SQLite по пути ~/.openclaw/state/openclaw.sqlite.

Сверено с документацией OpenClaw 2026.9.8, 8 октября 2026.

Подключить OpenClaw к Telegram можно за пять шагов: создать бота в BotFather, положить токен в конфиг, проверить канал, одобрить первый DM и при необходимости добавить бота в группу.

Создаём бота и получаем токен

Откройте @BotFather в Telegram и убедитесь, что имя пользователя именно @BotFather. Команда /newbot попросит задать имя и username бота, после чего выдаст токен. Сохраните его: в OpenClaw вставляется именно эта строка. Альтернативный путь — веб-приложение BotFather, оно работает и в web.telegram.org.

Прописываем канал в конфиге

Самый быстрый путь — CLI. Он сам запишет токен в конфиг и включит канал:

openclaw channels add --channel telegram --token <bot-token>

Если предпочитаете править ~/.openclaw/openclaw.json руками, минимальный блок такой:

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "123:abc",
      dmPolicy: "pairing",
      groups: { "*": { requireMention: true } },
    },
  },
}

Из переменной окружения TELEGRAM_BOT_TOKEN токен подхватывается только для дефолтного аккаунта. Именованные аккаунты требуют botToken или tokenFile. Telegram не использует openclaw channels login telegram: токен всегда в конфиге или env, после чего запускается Gateway. tokenFile имеет приоритет над botToken, тот — над переменной окружения. После старта OpenClaw кеширует данные бота до 24 часов, чтобы не вызывать лишний getMe.

Проверяем канал

При включённой горячей перезагрузке конфига запущенный Gateway подхватит изменения сам. Убедитесь, что Telegram в статусе ready:

openclaw channels status --probe

Если Gateway ещё не работает, запустите его как сервис через openclaw gateway start или прямо в терминале командой openclaw gateway. Меняли сервисное окружение — перезапустите Gateway, чтобы он его подхватил.

Одобряем первый DM

Откройте Telegram и отправьте боту любое сообщение. Оно создаст запрос на сопряжение:

openclaw pairing list telegram
openclaw pairing approve telegram <CODE>

Коды: 8 символов в верхнем регистре, без 0O1I. Живут час. На аккаунте максимум 3 ожидающих запроса, остальные игнорируются. Чтобы уведомить отправителя об одобрении, добавьте --notify. Для каналов с несколькими аккаунтами добавляйте --account <id>.

У одобрения есть побочный эффект: если commands.ownerAllowFrom пуст, CLI автоматически пропишет туда первого одобренного отправителя как владельца команд. После этого новые одобрения уже не раздают права владельца, только доступ к DM. В Control UI этот же пункт вынесен в отдельную галочку, доступную только с правами operator.admin.

Группы: что учесть

Чтобы добавить бота в группу, нужны два ID: ваш Telegram user ID для allowFrom или groupAllowFrom и chat ID группы как ключ в channels.telegram.groups. ID чата можно узнать из openclaw logs --follow, через специального бота для определения ID или через Bot API getUpdates. Отрицательные ID супергрупп, начинающиеся с -100, — это ID чатов; их место в channels.telegram.groups, а не в groupAllowFrom.

В группе бот молчит, пока его не упомянули: за это отвечает requireMention: true в настройках групп. У ботов по умолчанию включён Privacy Mode в Telegram, он ограничивает получение групповых сообщений. Чтобы бот читал всю переписку, отключите privacy через /setprivacy в BotFather или сделайте бота админом группы. После тумблера privacy удалите и заново добавьте бота в каждую группу, иначе Telegram не применит изменение. Права админа выдаются в настройках группы Telegram: админ-бот получает все сообщения и подходит для постоянной работы.

Частые ошибки

  • Пытаются логиниться через openclaw channels login telegram: для Telegram такого пути нет, токен кладётся в конфиг или env.
  • Сопряжение не срабатывает: код истёк (он живёт час) или на аккаунте уже 3 ожидающих запроса. Сверх лимита новые запросы игнорируются, пока один из трёх не истечёт или не будет одобрен. Поэтому сначала откройте очередь через openclaw pairing list telegram и одобрите нужный код. Если код уже истёк, новое сообщение боту создаст свежий запрос.
  • Бот молчит в группе. Чаще всего группы нет в channels.telegram.groups и там нет "*": при groupPolicy: "allowlist", который стоит по умолчанию, такие группы закрыты. Другая причина — бота не упомянули при requireMention: true; проверьте сообщением @<bot_username> ping. Ещё одна — отправителя нет в groupAllowFrom или allowFrom: одобрение в DM доступа к группам не даёт. Если упоминание отключено через requireMention: false, выключите privacy в /setprivacy, затем удалите и заново добавьте бота в группу.
  • Команды владельца вроде /config отвечают подсказкой openclaw config set commands.ownerAllowFrom: значит, отправитель одобрен, но не назначен владельцем — это задаётся отдельной командой.
  • Состояние сопряжения лежит в ~/.openclaw/state/openclaw.sqlite. Старые файлы из ~/.openclaw/credentials/ импортируются через openclaw doctor --fix: обычный запуск Gateway их не трогает.