Урок 4. Навыки и групповой чат — Курс OpenClaw
OpenClaw

Урок 4. Навыки и групповой чат

~20 мин чтения ·
Содержание

Про что этот урок

Бот работает в личке и умеет вести диалог. Но пока это просто болтун без инструментов и без имени. В этом уроке создадим ему личность, выдадим полный доступ к серверу, поставим полезные навыки и добавим в групповой чат Telegram.

Создание личности бота

При первом сообщении бот запустит BOOTSTRAP.md — встроенный сценарий знакомства. Бот задаст несколько вопросов: как тебя зовут, чем занимаешься, для чего нужен бот. Отвечай как есть — на основе ответов бот заполнит два файла:

USER.md — информация о тебе. Имя, контекст работы, предпочтения. Бот читает этот файл при каждом новом диалоге и понимает, с кем разговаривает.

SOUL.md — личность бота. Его имя, стиль общения, правила поведения. Содержимое SOUL.md подгружается как системный контекст при каждом сообщении — это определяет, как бот себя ведёт.

Оба файла лежат в ~/.openclaw/ и их можно редактировать вручную.

После того как бот создаст SOUL.md, напиши ему ещё одно важное правило: «Запомни: если ты собираешься изменить свою конфигурацию — сначала изучи документацию https://docs.openclaw.ai/ и предложи план работ, прежде чем что-то менять». Бот запишет это в MEMORY.md и при каждом диалоге будет помнить, что перед правкой конфига нужно свериться с документацией и согласовать план. Это убережёт от ситуаций, когда бот по своей инициативе ломает конфигурацию — а на VPS такое особенно болезненно.

Расскажи о себе или используй готовый пример, который предложит бот:

Сценарий знакомства BOOTSTRAP.md в действии
Сценарий знакомства BOOTSTRAP.md

Повышаем права бота

Если попросить бота выполнить команду, требующую повышенных прав, он откажется:

Бот отказывает в выполнении команды без повышенных прав
Бот отказывает без повышенных прав

Скрипт установки из урока 1 уже создал файл exec-approvals.json с разрешительной политикой. Если ты ставил OpenClaw вручную или файла по какой-то причине нет, создай его:

cat > ~/.openclaw/exec-approvals.json << 'EOF'
{
  "version": 1,
  "defaults": {
    "security": "full",
    "ask": "off",
    "askFallback": "full",
    "autoAllowSkills": true
  }
}
EOF

Что значат эти параметры: security: "full" разрешает выполнение любых команд на сервере, ask: "off" отключает запрос подтверждения у пользователя, askFallback: "full" — если UI недоступен (а через Telegram он всегда недоступен), разрешить всё, autoAllowSkills: true — автоматически разрешать команды, которые запускают навыки.

Но даже с exec-approvals для работы через Telegram боту нужно явно указать, что этот канал является одобренным для elevated-операций.

Найди свой Telegram ID через бота @userinfobot, а затем выполни в терминале (вместо 123456 подставь свой ID):

openclaw config set tools.profile full
openclaw config set tools.exec.security full
openclaw config set tools.exec.ask off
openclaw config set tools.elevated.enabled true --strict-json
openclaw config set tools.elevated.allowFrom.telegram '["123456"]' --strict-json
openclaw gateway restart

После этого бот будет выполнять твои команды без ручного одобрения через /approvals:

Бот выполняет команду после повышения прав
Бот выполняет команду после повышения прав

Elevated-доступ даёт боту полный контроль над сервером от твоего имени. Указывай только свой Telegram ID. Не добавляй сюда чужие ID, если не уверен в человеке.

Бот в групповом чате Telegram

До сих пор бот работал в личке. Но часто нужно, чтобы бот был в рабочей группе и помогал всей команде.

Подготовка бота

Перед добавлением в группу настрой BotFather:

  1. Открой @BotFather в Telegram
  2. Выбери своего бота → Bot Settings → Group Privacy → Turn off

По умолчанию Telegram скрывает от бота сообщения в группе (Privacy Mode). Бот видит только команды и сообщения с @упоминанием. После отключения Group Privacy бот будет видеть все сообщения.

Добавление в группу

Просто добавь бота в нужную группу как обычного участника. Найди его по username и пригласи.

Настройка конфига

После добавления пропиши группу в конфиге OpenClaw. Открой ~/.openclaw/openclaw.json и добавь секцию groups:

{
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "ТОКЕН_ОТ_BOTFATHER",
      "dmPolicy": "pairing",
      "groups": {
        "*": {
          "groupPolicy": "open",
          "requireMention": true
        }
      }
    }
  }
}

Разберём настройки:

groups — конфигурация для групповых чатов. "*" означает «все группы». Можно указать конкретный ID группы вместо звёздочки, если нужны разные правила для разных групп.

groupPolicy — кто может общаться с ботом в группе:

  • "open" — любой участник группы
  • "allowlist" — только пользователи из groupAllowFrom
  • "disabled" — бот игнорирует группу

requireMention — если true, бот реагирует только на сообщения с @упоминанием. Если false, отвечает на всё подряд. В группе почти всегда нужен true, иначе бот будет влезать в каждый разговор.

Пример для конкретной группы с ограниченным доступом:

{
  "channels": {
    "telegram": {
      "groups": {
        "-1001234567890": {
          "groupPolicy": "allowlist",
          "requireMention": true,
          "groupAllowFrom": ["123456789", "987654321"]
        }
      }
    }
  }
}

ID группы можно узнать, добавив в неё бота @userinfobot — он напишет ID чата.

После изменения конфига перезапусти gateway:

openclaw gateway restart

Про безопасность в группах. Для группового бота лучше создать отдельного агента со своим workspace. Не свети личного бота в чужих группах. В настройках BotFather выключи автоматическое добавление в группы — включай только когда сам добавляешь бота, потом возвращай обратно.

Проверка

Зайди в группу и напиши @имя_бота привет. Бот должен ответить. Если молчит — проверь, что Group Privacy выключен в BotFather и gateway перезапущен.

Практика: распознавание голосовых сообщений

Попробуем на деле, как бот умеет сам себя настраивать. Задача — научить его понимать голосовые сообщения в Telegram. Для этого он установит Whisper (модель распознавания речи от OpenAI), которая будет работать локально на сервере.

Напиши боту в Telegram:

Научись распознавать мои голосовые сообщения в телеграм локально на русском языке. Используй whisper для распознавания.

Бот сам разберётся, что нужно сделать: скачает и установит Whisper, настроит обработку голосовых из Telegram и начнёт их транскрибировать. Отправь голосовое сообщение и проверь, что бот его распознал.

Это хороший пример того, зачем мы давали боту elevated-доступ в начале урока. Без него бот не смог бы установить пакеты и настроить всё самостоятельно.

Whisper работает на CPU, поэтому распознавание может занимать 10–30 секунд в зависимости от длины сообщения и мощности сервера. Для коротких голосовых хватает.

Если что-то пошло не так

Бот не реагирует в группе. Проверь Group Privacy в BotFather (должен быть выключен). Проверь, что в конфиге прописана секция groups. Перезапусти gateway.

Навык не срабатывает. Убедись, что файл называется именно SKILL.md (регистр важен). Проверь, что папка навыка лежит в ~/.openclaw/skills/. Перезапусти gateway после добавления.

Бот отказывает в выполнении команд через Telegram. Проверь tools.elevated.allowFrom.telegram — там должен быть твой Telegram ID. Убедись, что tools.elevated.enabled установлен в true.

Что дальше

Бот с инструментами и работает в группе. В следующем уроке разберёмся с памятью:

  • Как бот запоминает информацию между диалогами
  • Настроим поиск по памяти
  • Разберёмся с компакцией длинных диалогов и сессиями

Урок 5: Память бота →


Если что-то не получается или есть вопросы — заходи в телеграм-канал курса. Там помогут разобраться.

Обсуждение