feat(bridge): QQ adapter reconnect and send rate limiting

- supervisor loop keeps the OBv11 WebSocket alive, reconnecting with
  exponential backoff (1s→30s) when the connection drops; Start no
  longer fails permanently when NapCat is temporarily unreachable
- Send enforces MinGap between messages (from SendOptions or the
  adapter's send_interval_ms setting, now wired from the admin panel)
- parseMessage no longer panics on events missing sender/time fields
- tests: reconnect after drop, rate limit enforcement, malformed events,
  send while disconnected
This commit is contained in:
Aska committed 2026-08-21 12:48:04 +08:00
1 parent 8603839711
commit 9f30cdd086
3 files changed
+237 -33

No files matched your search

+3
View File
@@ -462,9 +462,12 @@ func loadAdaptersFromConfig(router *bridge.Router, cfg *bridge.BridgeConfig, orc
if !ac.Enabled { continue }
switch ac.Type {
case "qq-obv11":
minGapMs := 0
fmt.Sscanf(ac.Settings["send_interval_ms"], "%d", &minGapMs)
router.Register(bridgeqq.New(bridgeqq.Config{
Name: ac.Name, WSURL: ac.Settings["ws_url"],
AccessToken: ac.Settings["access_token"], BotQQ: ac.Settings["bot_qq"],
MinGapMs: minGapMs,
}))
case "telegram":
router.Register(bridgetg.New(bridgetg.Config{Name: ac.Name, Token: ac.Settings["token"]}))