Урок 4. Навыки и групповой чат
Содержание
- Про что этот урок
- Создание личности бота
- Повышаем права бота
- Навыки (Skills)
- Где искать навыки
- Установка навыков
- Какие навыки поставить на старте
- Безопасность навыков
- Бот в групповом чате Telegram
- Подготовка бота
- Добавление в группу
- Настройка конфига
- Проверка
- Практика: распознавание голосовых
- Если что-то пошло не так
- Что дальше
Про что этот урок
Бот работает в личке и умеет вести диалог. Но пока это просто болтун без инструментов и без имени. В этом уроке создадим ему личность, выдадим полный доступ к серверу, поставим полезные навыки и добавим в групповой чат Telegram.
Создание личности бота
При первом сообщении бот запустит BOOTSTRAP.md — встроенный сценарий знакомства. Бот задаст несколько вопросов: как тебя зовут, чем занимаешься, для чего нужен бот. Отвечай как есть — на основе ответов бот заполнит два файла:
USER.md — информация о тебе. Имя, контекст работы, предпочтения. Бот читает этот файл при каждом новом диалоге и понимает, с кем разговаривает.
SOUL.md — личность бота. Его имя, стиль общения, правила поведения. Содержимое SOUL.md подгружается как системный контекст при каждом сообщении — это определяет, как бот себя ведёт.
Оба файла лежат в ~/.openclaw/ и их можно редактировать вручную.
После того как бот создаст SOUL.md, напиши ему ещё одно важное правило: «Запомни: если ты собираешься изменить свою конфигурацию — сначала изучи документацию https://docs.openclaw.ai/ и предложи план работ, прежде чем что-то менять». Бот запишет это в MEMORY.md и при каждом диалоге будет помнить, что перед правкой конфига нужно свериться с документацией и согласовать план. Это убережёт от ситуаций, когда бот по своей инициативе ломает конфигурацию — а на VPS такое особенно болезненно.
Расскажи о себе или используй готовый пример, который предложит бот:
Повышаем права бота
Если попросить бота выполнить команду, требующую повышенных прав, он откажется:
Скрипт установки из урока 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:
- Открой @BotFather в Telegram
- Выбери своего бота → 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 перезапущен.
Если что-то пошло не так
Бот не реагирует в группе. Проверь Group Privacy в BotFather (должен быть выключен). Проверь, что в конфиге прописана секция groups. Перезапусти gateway.
Навык не срабатывает. Убедись, что файл называется именно SKILL.md (регистр важен). Проверь, что папка навыка лежит в ~/.openclaw/skills/. Перезапусти gateway после добавления.
Бот отказывает в выполнении команд через Telegram. Проверь tools.elevated.allowFrom.telegram — там должен быть твой Telegram ID. Убедись, что tools.elevated.enabled установлен в true.
Что дальше
Бот с инструментами и работает в группе. В следующем уроке разберёмся с памятью:
- Как бот запоминает информацию между диалогами
- Настроим поиск по памяти
- Разберёмся с компакцией длинных диалогов и сессиями
Если что-то не получается или есть вопросы — заходи в телеграм-канал курса. Там помогут разобраться.
Обсуждение