QQ Bot
Hermes를 Official QQ Bot API (v2) 통해 QQ 연결 — private (), group @-mentions, guild, direct messages 지원, 음성 transcription 포함.
Overview
QQ Bot adapter는 Official QQ Bot API 사용:
- QQ Gateway에 persistent WebSocket connection으로 메시지 수신
- REST API 통해 text 및 markdown 응답 전송
- 이미지, 음성 메시지, 파일 첨부 다운로드 및 처리
- Tencent 내장 ASR 또는 설정 가능한 STT provider로 음성 메시지 transcribe
Prerequisites
-
QQ Bot Application — q.qq.com에서 등록:
- 새 application 생성, App ID및App Secret 기록
- 필요한 intents 활성화: messages, Group @-messages, Guild messages
- 테스트용 sandbox mode 설정, production용 publish
-
Dependencies — Adapter는
aiohttp및httpx필요:pip install aiohttp httpx
Configuration
Interactive setup
hermes gateway setup
플랫폼 목록에서 QQ Bot 선택, 프롬프트 따라 진행.
Manual configuration
~/.hermes/.env에 필수 환경 변수 설정:
QQ_APP_ID=your-app-id
QQ_CLIENT_SECRET=your-app-secret
Environment Variables
| Variable | Description | Default |
|---|---|---|
QQ_APP_ID | QQ Bot App ID (필수) | — |
QQ_CLIENT_SECRET | QQ Bot App Secret (필수) | — |
QQBOT_HOME_CHANNEL | cron/notification 전달용 OpenID | — |
QQBOT_HOME_CHANNEL_NAME | home channel 표시 이름 | Home |
QQ_ALLOWED_USERS | DM 접근용 user OpenID 콤마 구분 목록 | open (모든 사용자) |
QQ_GROUP_ALLOWED_USERS | group 접근용 group OpenID 콤마 구분 목록 | — |
QQ_ALLOW_ALL_USERS | 모든 DM 허용하려면 true로 설정 | false |
QQ_PORTAL_HOST | QQ portal host override (sandbox routing은 sandbox.q.qq.com로 설정) | q.qq.com |
QQ_STT_API_KEY | voice-to-text provider용 API key | — |
QQ_STT_BASE_URL | (직접 읽지 않음 — config.yaml에 platforms.qqbot.extra.stt.baseUrl 설정) | n/a |
QQ_STT_MODEL | STT 모델 이름 | glm-asr |
Advanced Configuration
세밀한 제어용으로 ~/.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"
Voice Messages (STT)
음성 transcription은 2단계 작동:
-
QQ 내장 ASR (무료, 항상 먼저 시도) — QQ가 음성 메시지 첨부에
asr_refer_text제공, Tencent 자체 speech recognition 사용 -
설정된 STT provider (fallback) — QQ ASR이 텍스트 반환 안 하면 adapter가 OpenAI 호환 STT API 호출:
- Zhipu/GLM (zai): 기본 provider,
glm-asr모델 사용 - OpenAI Whisper:
QQ_STT_BASE_URL및QQ_STT_MODEL설정 - OpenAI 호환 STT endpoint 모두 가능
- Zhipu/GLM (zai): 기본 provider,
Troubleshooting
Bot 즉시 disconnect (quick disconnect)
보통 원인:
- 잘못된 App ID / Secret — q.qq.com에서 credentials 재확인
- 권한 누락 — bot에 필수 intents 활성화 확인
- Sandbox 전용 bot — bot이 sandbox mode면 QQ sandbox 테스트 채널 메시지만 수신 가능
음성 메시지 transcribe 안 됨
- 첨부 데이터에 QQ 내장
asr_refer_text존재 여부 확인 - custom STT provider 사용 시
QQ_STT_API_KEY정확히 설정됐는지 확인 - STT 에러 메시지는 gateway 로그 확인
메시지 전달 안 됨
- q.qq.com에서 bot intents 활성화 확인
- DM 접근 제한 시
QQ_ALLOWED_USERS확인 - group 메시지는 bot @mention 필수 (group policy가 allowlist 요구할 수 있음)
- cron/notification 전달은
QQBOT_HOME_CHANNEL확인
연결 에러
aiohttp및httpx설치 확인:pip install aiohttp httpxapi.sgroup.qq.com및 WebSocket gateway 네트워크 연결 확인- 상세 에러 메시지 및 재접속 동작은 gateway 로그 확인