pkg/channelws 提供可外部复用的 QQ Bot 与 WeCom AiBot websocket 客户端,复用的是当前网关已验证的真实协议实现,而不是一套新的草稿 SDK。
import "cnb.cool/zishuo/workbuddy/pkg/channelws"
NewQQBotWSClient(opts Options) *QQBotWSClientNewWeComAiBotClient(opts Options) *WeComAiBotClientQQBotInboundMessageQQBotReplyContextWeComAiBotInboundMessageStatusEventErrorEventOptionsclient := channelws.NewQQBotWSClient(channelws.Options{})
client.SetOnMessage(func(msg channelws.QQBotInboundMessage) {
_ = client.SendReply(context.Background(), msg.MsgID, "收到")
})
if err := client.Connect(context.Background(), appID, appSecret); err != nil {
log.Fatal(err)
}
defer client.Disconnect()
client := channelws.NewWeComAiBotClient(channelws.Options{})
client.SetOnMessage(func(msg channelws.WeComAiBotInboundMessage) {
_ = client.ReplyText(context.Background(), msg.MsgID, "收到")
})
if err := client.Connect(context.Background(), botID, secret); err != nil {
log.Fatal(err)
}
defer client.Disconnect()
Options 支持以下覆盖项:
ProxyURLHTTPTimeoutHandshakeTimeoutQQTokenURLQQGatewayURLQQAPIBaseURLWeComAiBotWSURLReplyContextTTLReplyContextLimit零值会自动回退到当前网关默认配置与真实线上地址。
兼容层仍保留:
SetOnStatus(func(status, errMsg string))新的推荐入口:
SetOnStatusEvent(func(StatusEvent))LastStatusEvent() StatusEventSetOnError(func(ErrorEvent))LastErrorEvent() ErrorEvent其中:
StatusEvent 用于生命周期状态变化,以及同状态下的新错误原因ErrorEvent 用于 reply lookup、ack timeout、connect 等操作级失败INTERACTION_CREATE 目前只支持入站观测,不支持回发;调用 SendReply 时会返回 ErrQQInteractionReplyUnsupportedgo run ./examples/channelws -mode qq -qq-app-id <appId> -qq-app-secret <secret>go run ./examples/channelws -mode aibot -aibot-id <botId> -aibot-secret <secret>