QQ Bot
Подключите Hermes к QQ через Официальный QQ Bot API (v2) — поддерживает личные (C2C), групповые @-упоминания, гильдии и прямые сообщения с транскрипцией голоса.
Обзор
Адаптер QQ Bot использует Официальный QQ Bot API для:
-
Получение сообщений через постоянное WebSocket-соединение с QQ Gateway
-
Отправка текстовых и markdown-ответов через REST API
-
Загрузка и обработка изображений, голосовых сообщений и вложений
-
Транскрипция голосовых сообщений с помощью встроенного ASR Tencent или настраиваемого провайдера STT
Предварительные требования
- Приложение QQ Bot — Зарегистрируйтесь на q.qq.com:
- Создайте новое приложение и запишите ваш App ID и App Secret
- Включите необходимые разрешения: C2C-сообщения, групповые @-сообщения, сообщения гильдий
-
Настройте бота в режиме песочницы для тестирования или опубликуйте для продакшена
-
Зависимости — Адаптер требует
aiohttpиhttpx:bash pip install aiohttp httpx
Настройка
Интерактивная настройка
hermes gateway setup
Выберите QQ Bot из списка платформ и следуйте инструкциям.
Ручная настройка
Задайте необходимые переменные окружения в ~/.hermes/.env:
QQ_APP_ID=your-app-id
QQ_CLIENT_SECRET=your-app-secret
Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
QQ_APP_ID |
QQ Bot App ID (обязательно) | — |
QQ_CLIENT_SECRET |
QQ Bot App Secret (обязательно) | — |
QQBOT_HOME_CHANNEL |
OpenID для доставки cron/уведомлений | — |
QQBOT_HOME_CHANNEL_NAME |
Отображаемое имя для домашнего канала | Home |
QQ_ALLOWED_USERS |
OpenID пользователей через запятую для доступа к ЛС | открыто (все пользователи) |
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) |
n/a |
QQ_STT_MODEL |
Название модели STT | glm-asr |
Расширенная настройка
Для тонкой настройки добавьте параметры платформы в ~/.hermes/config.yaml:
platforms:
qqbot:
enabled: true
extra:
app_id: "your-app-id"
client_secret: "your-secret"
markdown_support: true # enable QQ markdown (msg_type 2). Config-only; no env-var equivalent.
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), etc.
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-эндпоинт
Диагностика проблем
Бот сразу отключается (быстрое отключение)
Обычно это означает:
-
Неверный App ID / Secret — Перепроверьте ваши учётные данные на q.qq.com
-
Отсутствуют разрешения — Убедитесь, что у бота включены необходимые разрешения
-
Бот только в песочнице — Если бот в режиме песочницы, он может получать сообщения только из тестового канала песочницы QQ
Голосовые сообщения не транскрибируются
-
Проверьте, присутствует ли встроенный
asr_refer_textQQ в данных вложения -
Если используется пользовательский провайдер STT, убедитесь, что
QQ_STT_API_KEYустановлен правильно -
Проверьте логи gateway на наличие сообщений об ошибках STT
Сообщения не доставляются
-
Убедитесь, что разрешения бота включены на q.qq.com
-
Проверьте
QQ_ALLOWED_USERS, если доступ к ЛС ограничен -
Для групповых сообщений убедитесь, что бот @упомянут (групповая политика может требовать белого списка)
-
Проверьте
QQBOT_HOME_CHANNELдля доставки cron/уведомлений
Ошибки подключения
-
Убедитесь, что
aiohttpиhttpxустановлены:pip install aiohttp httpx -
Проверьте сетевое подключение к
api.sgroup.qq.comи WebSocket-шлюзу -
Просмотрите логи gateway для получения подробных сообщений об ошибках и поведения переподключения