WSS 消息体

当前支持的事件

  1. // 事件类型
  2. const (
  3. EventGuildCreate EventType = "GUILD_CREATE"
  4. EventGuildUpdate EventType = "GUILD_UPDATE"
  5. EventGuildDelete EventType = "GUILD_DELETE"
  6. EventChannelCreate EventType = "CHANNEL_CREATE"
  7. EventChannelUpdate EventType = "CHANNEL_UPDATE"
  8. EventChannelDelete EventType = "CHANNEL_DELETE"
  9. EventGuildMemberAdd EventType = "GUILD_MEMBER_ADD"
  10. EventGuildMemberUpdate EventType = "GUILD_MEMBER_UPDATE"
  11. EventGuildMemberRemove EventType = "GUILD_MEMBER_REMOVE"
  12. EventMessageCreate EventType = "MESSAGE_CREATE"
  13. EventMessageReactionAdd EventType = "MESSAGE_REACTION_ADD"
  14. EventMessageReactionRemove EventType = "MESSAGE_REACTION_REMOVE"
  15. EventAtMessageCreate EventType = "AT_MESSAGE_CREATE"
  16. EventPublicMessageDelete EventType = "PUBLIC_MESSAGE_DELETE"
  17. EventDirectMessageCreate EventType = "DIRECT_MESSAGE_CREATE"
  18. EventDirectMessageDelete EventType = "DIRECT_MESSAGE_DELETE"
  19. EventAudioStart EventType = "AUDIO_START"
  20. EventAudioFinish EventType = "AUDIO_FINISH"
  21. EventAudioOnMic EventType = "AUDIO_ON_MIC"
  22. EventAudioOffMic EventType = "AUDIO_OFF_MIC"
  23. EventMessageAuditPass EventType = "MESSAGE_AUDIT_PASS"
  24. EventMessageAuditReject EventType = "MESSAGE_AUDIT_REJECT"
  25. EventMessageDelete EventType = "MESSAGE_DELETE"
  26. EventForumThreadCreate EventType = "FORUM_THREAD_CREATE"
  27. EventForumThreadUpdate EventType = "FORUM_THREAD_UPDATE"
  28. EventForumThreadDelete EventType = "FORUM_THREAD_DELETE"
  29. EventForumPostCreate EventType = "FORUM_POST_CREATE"
  30. EventForumPostDelete EventType = "FORUM_POST_DELETE"
  31. EventForumReplyCreate EventType = "FORUM_REPLY_CREATE"
  32. EventForumReplyDelete EventType = "FORUM_REPLY_DELETE"
  33. EventForumAuditResult EventType = "FORUM_PUBLISH_AUDIT_RESULT"
  34. EventInteractionCreate EventType = "INTERACTION_CREATE"
  35. )

当前事件的返回类型

  1. // ReadyHandler 可以处理 ws 的 ready 事件
  2. type ReadyHandler func(event *dto.WSPayload, data *dto.WSReadyData)
  3. // ErrorNotifyHandler 当 ws 连接发生错误的时候,会回调,方便使用方监控相关错误
  4. // 比如 reconnect invalidSession 等错误,错误可以转换为 bot.Err
  5. type ErrorNotifyHandler func(err error)
  6. // PlainEventHandler 透传handler
  7. type PlainEventHandler func(event *dto.WSPayload, message []byte) error
  8. // GuildEventHandler 频道事件handler
  9. type GuildEventHandler func(event *dto.WSPayload, data *dto.WSGuildData) error
  10. // GuildMemberEventHandler 频道成员事件 handler
  11. type GuildMemberEventHandler func(event *dto.WSPayload, data *dto.WSGuildMemberData) error
  12. // ChannelEventHandler 子频道事件 handler
  13. type ChannelEventHandler func(event *dto.WSPayload, data *dto.WSChannelData) error
  14. // MessageEventHandler 消息事件 handler
  15. type MessageEventHandler func(event *dto.WSPayload, data *dto.WSMessageData) error
  16. // MessageDeleteEventHandler 消息事件 handler
  17. type MessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSMessageDeleteData) error
  18. // PublicMessageDeleteEventHandler 消息事件 handler
  19. type PublicMessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSPublicMessageDeleteData) error
  20. // DirectMessageDeleteEventHandler 消息事件 handler
  21. type DirectMessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSDirectMessageDeleteData) error
  22. // MessageReactionEventHandler 表情表态事件 handler
  23. type MessageReactionEventHandler func(event *dto.WSPayload, data *dto.WSMessageReactionData) error
  24. // ATMessageEventHandler at 机器人消息事件 handler
  25. type ATMessageEventHandler func(event *dto.WSPayload, data *dto.WSATMessageData) error
  26. // DirectMessageEventHandler 私信消息事件 handler
  27. type DirectMessageEventHandler func(event *dto.WSPayload, data *dto.WSDirectMessageData) error
  28. // AudioEventHandler 音频机器人事件 handler
  29. type AudioEventHandler func(event *dto.WSPayload, data *dto.WSAudioData) error
  30. // MessageAuditEventHandler 消息审核事件 handler
  31. type MessageAuditEventHandler func(event *dto.WSPayload, data *dto.WSMessageAuditData) error
  32. // ThreadEventHandler 论坛主题事件 handler
  33. type ThreadEventHandler func(event *dto.WSPayload, data *dto.WSThreadData) error
  34. // PostEventHandler 论坛回帖事件 handler
  35. type PostEventHandler func(event *dto.WSPayload, data *dto.WSPostData) error
  36. // ReplyEventHandler 论坛帖子回复事件 handler
  37. type ReplyEventHandler func(event *dto.WSPayload, data *dto.WSReplyData) error
  38. // ForumAuditEventHandler 论坛帖子审核事件 handler
  39. type ForumAuditEventHandler func(event *dto.WSPayload, data *dto.WSForumAuditData) error
  40. // InteractionEventHandler 互动事件 handler
  41. type InteractionEventHandler func(event *dto.WSPayload, data *dto.WSInteractionData) error

使用示例

创建 WSS 实例并监听消息

  1. func main() {
  2. token := token.BotToken(config.AppID, config.Token) //生成token
  3. api = botgo.NewOpenAPI(token).WithTimeout(3 * time.Second)
  4. ctx = context.Background()
  5. ws, _ := api.WS(ctx, nil, "") //websocket
  6. var atMessage event.ATMessageEventHandler = atMessageEventHandler //@事件处理
  7. intent := websocket.RegisterHandlers(atMessage) // 注册socket消息处理
  8. botgo.NewSessionManager().Start(ws, token, &intent) // 启动socket监听
  9. }
  10. func atMessageEventHandler(event *dto.WSPayload, data *dto.WSATMessageData) error {
  11. message, err := api.PostMessage(ctx, channelId, &dto.MessageToCreate{
  12. MsgID: msgId, //如果未空则表示主动消息
  13. Content: "hello world",
  14. })
  15. if err != nil {
  16. log.Fatalln("调用 PostMessage 接口失败, err = ", err)
  17. }
  18. log.Println(message)
  19. return nil
  20. }

如果同时需要监听多个事件,在listen_events增加多个事件的handler对象

  1. //同时监听at消息和私信消息的事件
  2. var atMessage event.ATMessageEventHandler = atMessageEventHandler //@事件处理
  3. var directMessage event.DirectMessageEventHandler = directMessageEventHandler//私信事件处理
  4. intent := websocket.RegisterHandlers(atMessage, directMessage) // 注册socket消息处理
  5. botgo.NewSessionManager().Start(ws, token, &intent) // 启动socket监听