QQ Bot
Подключите VibeOS к QQ через официальный API QQ Bot (v2) — с поддержкой личных (C2C) сообщений, @-упоминаний в группах, гильдий и прямых сообщений с транскрипцией голоса.
Обзор
Адаптер QQ Bot использует официальный API QQ Bot для:
- Получения сообщений через постоянное WebSocket-соединение с QQ Gateway
- Отправки текстовых и markdown-ответов через REST API
- Загрузки и обработки изображений, голосовых сообщений и вложений файлов
- Транскрипции голосовых сообщений с помощью встроенного ASR от Tencent или настраиваемого STT-провайдера
Предварительные требования
-
Приложение QQ Bot — Зарегистрируйтесь на q.qq.com:
- Создайте новое приложение и запишите App ID и App Secret
- Включите необходимые интенты: C2C-сообщения, @-сообщения в группах, сообщения гильдий
- Настройте бота в режиме песочницы для тестирования или опубликуйте для продакшена
-
Зависимости — Адаптеру требуются
aiohttpиhttpx:pip install aiohttp httpx
Конфигурация
Интерактивная настройка
vibeos gateway setup
Выберите QQ Bot из списка платформ и следуйте инструкциям.
Ручная настройка
Установите необходимые переменные окружения в ~/.vibeos/.env:
QQ_APP_ID=your-app-id
QQ_CLIENT_SECRET=your-app-secret
Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
QQ_APP_ID | App ID приложения QQ Bot (обязательно) | — |
QQ_CLIENT_SECRET | App Secret приложения QQ Bot (обязательно) | — |
QQBOT_HOME_CHANNEL | OpenID для доставки cron/уведомлений | — |
QQBOT_HOME_CHANNEL_NAME | Отображаемое имя домашнего канала | Home |
QQ_ALLOWED_USERS | Разделённые запятыми OpenID пользователей для доступа к ЛС | open (все пользователи) |
QQ_GROUP_ALLOWED_USERS | Разделённые запятыми OpenID групп для доступа к группам | — |
QQ_ALLOW_ALL_USERS | Установите true, чтобы разрешить все ЛС | false |
QQ_PORTAL_HOST | Переопределить хост портала QQ (установите sandbox.q.qq.com для маршрутизации песочницы) | q.qq.com |
QQ_STT_API_KEY | API-ключ для провайдера преобразования речи в текст | — |
QQ_STT_BASE_URL | (Не читается напрямую — вместо этого установите platforms.qqbot.extra.stt.baseUrl в config.yaml) | н/д |
QQ_STT_MODEL | Название STT-модели | glm-asr |
Расширенная конфигурация
Для тонкой настройки добавьте настройки платформы в ~/.vibeos/config.yaml:
platforms:
qqbot:
enabled: true
extra:
app_id: "your-app-id"
client_secret: "your-secret"
markdown_support: true # включить QQ markdown (msg_type 2). Только в конфиге; без эквивалента переменной окружения.
dm_policy: "open" # open | allowlist | disabled
allow_from:
- "user_openid_1"
group_policy: "open" # open | allowlist | disabled
group_allow_from:
- "group_openid_1"
stt:
provider: "zai" # zai (GLM-ASR), openai (Whisper) и т.д.
baseUrl: "https://open.bigmodel.cn/api/coding/paas/v4"
apiKey: "your-stt-key"
model: "glm-asr"
Голосовые сообщения (STT)
Транскрипция голоса работает в два этапа:
-
Встроенный ASR QQ (бесплатно, всегда пробуется первым) — QQ предоставляет
asr_refer_textво вложениях голосовых сообщений, используя собственное распознавание речи Tencent -
Настроенный STT-провайдер (запасной вариант) — Если ASR QQ не возвращает текст, адаптер вызывает OpenAI-совместимый STT API:
- Zhipu/GLM (zai): Провайдер по умолчанию, использует модель
glm-asr - OpenAI Whisper: Установите
QQ_STT_BASE_URLиQQ_STT_MODEL - Любая OpenAI-совместимая STT-конечная точка
- Zhipu/GLM (zai): Провайдер по умолчанию, использует модель
Устранение неполадок
Бот немедленно отключается (быстрое отключение)
Обычно это означает:
- Неверный App ID / Secret — Перепроверьте учётные данные на q.qq.com
- Отсутствуют разрешения — Убедитесь, что у бота включены необходимые интенты
- Бот только в песочнице — Если бот находится в режиме песочницы, он может получать сообщения только из тестового канала песочницы QQ
Голосовые сообщения не транскрибируются
- Проверьте, присутствует ли встроенный
asr_refer_textQQ в данных вложения - Если используется пользовательский STT-провайдер, убедитесь, что
QQ_STT_API_KEYустановлен правильно - Проверьте логи шлюза на наличие сообщений об ошибках STT
Сообщения не доставляются
- Убедитесь, что интенты бота включены на q.qq.com
- Проверьте
QQ_ALLOWED_USERS, если доступ к ЛС ограничен - Для групповых сообщений убедитесь, что бот @упомянут (политика группы может требовать внесения в белый список)
- Проверьте
QQBOT_HOME_CHANNELдля доставки cron/уведомлений
Ошибки подключения
- Убедитесь, что
aiohttpиhttpxустановлены:pip install aiohttp httpx - Проверьте сетевое подключение к
api.sgroup.qq.comи WebSocket-шлюзу - Просмотрите логи шлюза для получения подробных сообщений об ошибках и поведении при переподключении