tencent-connect / botgo

QQ频道机器人 GOSDK
https://bot.q.qq.com/wiki/
Apache License 2.0
303 stars 50 forks source link

样例中websocket的疑问 #28

Closed wangxso closed 2 years ago

wangxso commented 2 years ago

问题

我在实现第二个样例时

func main() {
    token := token.BotToken(conf.AppID, conf.Token)
    api := botgo.NewOpenAPI(token).WithTimeout(3 * time.Second)
    ctx := context.Background()
    ws, err := api.WS(ctx, nil, "")
    if err != nil {
        log.Printf("%+v, err:%v", ws, err)
    }

    // 监听哪类事件就需要实现哪类的 handler,定义:websocket/event_handler.go
    var atMessage websocket.ATMessageEventHandler = func(event *dto.WSPayload, data *dto.WSATMessageData) error {
        fmt.Println(event, data)
        return nil
    }
    intent := websocket.RegisterHandlers(atMessage)
    // 启动 session manager 进行 ws 连接的管理,如果接口返回需要启动多个 shard 的连接,这里也会自动启动多个
    botgo.NewSessionManager().Start(ws, token, &intent)
}

其中的

// 监听哪类事件就需要实现哪类的 handler,定义:websocket/event_handler.go
    var atMessage websocket.ATMessageEventHandler = func(event *dto.WSPayload, data *dto.WSATMessageData) error {
        fmt.Println(event, data)
        return nil
    }

这个websocket下面未定义ATMessageEventHandler, 或者说websocket/event_handler.go是否需要自己在创建。

我的解决方法

// 监听哪类事件就需要实现哪类的 handler,定义:websocket/event_handler.go
    var atMessage event.ATMessageEventHandler = func(event *dto.WSPayload, data *dto.WSATMessageData) error {
        fmt.Println(event, data)
        return nil
    }

我将其中的websocket改成了event,不知道是否是正确的。

vissong commented 2 years ago

websocket/event_handler.go 迁移到了 https://github.com/tencent-connect/botgo/blob/master/event/register.go

wangxso commented 2 years ago

好的 建议修改下README