QQ-бот
Подключите Hermes к QQ через Официальный API QQ Bot (v2) — поддержка личных сообщений (C2C), @-упоминаний в группах, сообщений гильдий и передачи сообщений с транскрипцией голосов.
Обзор
Адаптер QQ Bot использует Официальный API QQ Bot для:
- Получение сообщений через постоянное соединение WebSocket с QQ Gateway.
- Отправка текстовых и уценочных ответов через 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 (обязательно) | — |
QQ_CLIENT_SECRET |
App Secret QQ Bot (обязательно) | — |
QQBOT_HOME_CHANNEL |
OpenID для доставки cron/уведомлений | — |
QQBOT_HOME_CHANNEL_NAME |
Отражаемое имя для канала дома | Дом |
QQ_ALLOWED_USERS |
Разделённые запятыми OpenID пользователи для доступа к ЛС | открыть (все пользователи) |
QQ_GROUP_ALLOWED_USERS |
Разделённые запятыми группы OpenID для доступа к группам | — |
QQ_ALLOW_ALL_USERS |
Установите true, чтобы разрешить все ЛС | ложь |
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 | глм-аср |
Дополнительные расширения
Для тонкой настройки настройки платформы в ~/.hermes/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"
Голосовые сообщения (СТТ)
Транскрипция голосов работает в два этапа:
- Встроенный 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установлен правильно. - Проверить наличие логиков шлюза на сообщениях об ошибках STT.
Сообщения не дозваниваются
- Убедитесь, что интенты бота включены на q.qq.com
- проверьте
QQ_ALLOWED_USERS, если доступ к ЛС ограничен - Для групповых сообщений убедитесь, что бот @упомянут (групповая политика может потребовать внесения изменений в белый список)
- Проверьте
QQBOT_HOME_CHANNELдля доставки cron/уведомлений.
Ошибки подключения
- Убедитесь, что
aiohttpиhttpxустановлены:pip install aiohttp httpx - Проверьте сетевое подключение к
api.sgroup.qq.comи WebSocket-шлюзу. - Просмотрите логи шлюза для получения подробных сообщений об ошибках и поведении при переподключении.