feat(channels): add group chat support for Telegram

- Add GroupGate class for group access control with three policies:
  disabled (default), allowlist, and open
- Implement mention gating: bot only responds when @mentioned or replied to
  in groups (configurable per-group)
- Extend Envelope type with isGroup, isMentioned, isReplyToBot fields
- Update TelegramAdapter to detect group context and mentions
- Add comprehensive documentation for group chat setup and troubleshooting

This enables using Qwen Code bots in Telegram groups with fine-grained
access control and mention-based activation to prevent noise.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
tanzhenxin 2026-03-25 02:04:27 +00:00
parent 8753245b5f
commit 90236465d3
9 changed files with 228 additions and 17 deletions

View file

@ -36,7 +36,11 @@ Add the channel to `~/.qwen/settings.json`:
"allowedUsers": ["YOUR_USER_ID"],
"sessionScope": "user",
"cwd": "/path/to/your/project",
"instructions": "You are a concise coding assistant responding via Telegram. Keep responses short."
"instructions": "You are a concise coding assistant responding via Telegram. Keep responses short.",
"groupPolicy": "disabled",
"groups": {
"*": { "requireMention": true }
}
}
}
}
@ -58,6 +62,17 @@ qwen channel start my-telegram
Then open your bot in Telegram and send a message. You should see "Working..." appear immediately, followed by the agent's response.
## Group Chats
To use the bot in Telegram groups:
1. Set `groupPolicy` to `"allowlist"` or `"open"` in your channel config
2. **Disable privacy mode** in BotFather: `/mybots` → select your bot → Bot Settings → Group Privacy → Turn Off
3. Add the bot to a group. If it was already in the group, **remove and re-add it** (Telegram caches privacy settings from when the bot joined)
4. If using `groupPolicy: "allowlist"`, add the group's chat ID to `groups` in your config
By default, the bot requires an @mention or a reply to respond in groups. Set `"requireMention": false` for a specific group to make it respond to all messages (useful for dedicated task groups). See [Group Chats](./overview#group-chats) for full details.
## Tips
- **Keep instructions concise-focused** — Telegram has a 4096-character message limit. Adding instructions like "keep responses short" helps the agent stay within bounds.
@ -76,6 +91,14 @@ The agent's markdown responses are automatically converted to Telegram-compatibl
- Verify your user ID is in `allowedUsers` if using `senderPolicy: "allowlist"`, or that you've been approved if using `"pairing"`
- Check the terminal output for errors
### Bot doesn't respond in groups
- Check that `groupPolicy` is set to `"allowlist"` or `"open"` (default is `"disabled"`)
- If using `"allowlist"`, verify the group's chat ID is in the `groups` config
- Make sure **Group Privacy is turned off** in BotFather — without this, the bot can't see non-command messages in groups
- If you changed privacy mode after adding the bot to a group, **remove and re-add the bot** to the group
- By default, the bot requires an @mention or a reply. Send `@yourbotname hello` to test
### "Sorry, something went wrong processing your message"
This usually means the agent encountered an error. Check the terminal output for details.