OpenClaw поддерживает групповые чаты во всех каналах: Telegram, WhatsApp, Discord, Slack, Signal, Matrix, iMessage, MS Teams, Zalo.
Как обрабатывается групповое сообщение
groupPolicy? disabled -> отклонено
groupPolicy? allowlist -> группа в allowlist? нет -> отклонено
requireMention? да -> упомянут? нет -> сохранить для контекста, не отвечать
иначе -> ответить
Три уровня контроля
1. Какие группы разрешены (groups):
{
channels: {
telegram: {
groups: {
"-1001234567890": { allow: true }, // конкретная группа
// или "*": { allow: true } // все группы
},
},
},
}
2. Кто может триггерить бота (groupPolicy + groupAllowFrom):
{
channels: {
telegram: {
groupPolicy: "allowlist", // open | allowlist | disabled
groupAllowFrom: ["123456789", "987654321"],
},
},
}
3. Требование упоминания (requireMention):
{
channels: {
telegram: {
groups: { "*": { requireMention: true } },
},
},
}
DM pairing ≠ group auth
Pairing работает только для DM. Одобрение pairing НЕ даёт доступ к группам.
Для групп нужно явно настраивать groupAllowFrom или groupPolicy: "open".
Если groupAllowFrom не задан — Telegram падает обратно на allowFrom (из конфига, не из pairing store).
Упоминания
Два способа:
@botusername в Telegram, @bot в Discord{
agents: {
list: [{
id: "main",
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"],
historyLimit: 50, // сколько сообщений для контекста
},
}],
},
}
Команды в чате:
/activation always — бот отвечает на всё (в сессии)/activation mention — только по упоминанию (в сессии)Сессии
agent:::group: ):topic: — каждый топик = своя сессия/verbose, /think, /activation) привязаны к сессии группыContext injection
Непрочитанные сообщения из группы (по умолчанию 50) добавляются в контекст:
[Chat messages since your last reply - for context]
Alice: давайте встретимся завтра
Bob: согласен
[Current message - respond to this]
Charlie: @openclaw что думаешь?
Каждое сообщение в контексте заканчивается [from: Имя (+ID)].
Паттерн: DM на хосте, группы в sandbox
DM использует main-сессию (на хосте), группы — non-main (в sandbox). Один «мозг», две среды исполнения:
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // группы в sandbox
scope: "session", // один контейнер на группу
},
},
},
}
Per-channel настройки
| Канал | groupAllowFrom | Примечания |
|---|---|---|
| Telegram | числовые ID | `telegram:` / `tg:` префиксы допускаются |
| E.164 номера | `mentionedJids` + regex паттерны | |
| Discord | через `guilds` | `channels.discord.guilds. |
| Slack | через `channels` | `channels.slack.channels.#general` |
| Matrix | `@user:server` | `channels.matrix.groups` |
| MS Teams | `user@org.com` |
System prompt для группы
При первом сообщении в группе OpenClaw.injectирует контекст:
> You are replying inside the WhatsApp group «Название». Group members: Alice (+44…), Bob (+43…). Activation: trigger-only. Address the specific sender noted in the message context.