WSS 消息体
当前支持的事件
// 事件类型const (EventGuildCreate EventType = "GUILD_CREATE"EventGuildUpdate EventType = "GUILD_UPDATE"EventGuildDelete EventType = "GUILD_DELETE"EventChannelCreate EventType = "CHANNEL_CREATE"EventChannelUpdate EventType = "CHANNEL_UPDATE"EventChannelDelete EventType = "CHANNEL_DELETE"EventGuildMemberAdd EventType = "GUILD_MEMBER_ADD"EventGuildMemberUpdate EventType = "GUILD_MEMBER_UPDATE"EventGuildMemberRemove EventType = "GUILD_MEMBER_REMOVE"EventMessageCreate EventType = "MESSAGE_CREATE"EventMessageReactionAdd EventType = "MESSAGE_REACTION_ADD"EventMessageReactionRemove EventType = "MESSAGE_REACTION_REMOVE"EventAtMessageCreate EventType = "AT_MESSAGE_CREATE"EventPublicMessageDelete EventType = "PUBLIC_MESSAGE_DELETE"EventDirectMessageCreate EventType = "DIRECT_MESSAGE_CREATE"EventDirectMessageDelete EventType = "DIRECT_MESSAGE_DELETE"EventAudioStart EventType = "AUDIO_START"EventAudioFinish EventType = "AUDIO_FINISH"EventAudioOnMic EventType = "AUDIO_ON_MIC"EventAudioOffMic EventType = "AUDIO_OFF_MIC"EventMessageAuditPass EventType = "MESSAGE_AUDIT_PASS"EventMessageAuditReject EventType = "MESSAGE_AUDIT_REJECT"EventMessageDelete EventType = "MESSAGE_DELETE"EventForumThreadCreate EventType = "FORUM_THREAD_CREATE"EventForumThreadUpdate EventType = "FORUM_THREAD_UPDATE"EventForumThreadDelete EventType = "FORUM_THREAD_DELETE"EventForumPostCreate EventType = "FORUM_POST_CREATE"EventForumPostDelete EventType = "FORUM_POST_DELETE"EventForumReplyCreate EventType = "FORUM_REPLY_CREATE"EventForumReplyDelete EventType = "FORUM_REPLY_DELETE"EventForumAuditResult EventType = "FORUM_PUBLISH_AUDIT_RESULT"EventInteractionCreate EventType = "INTERACTION_CREATE")
当前事件的返回类型
// ReadyHandler 可以处理 ws 的 ready 事件type ReadyHandler func(event *dto.WSPayload, data *dto.WSReadyData)// ErrorNotifyHandler 当 ws 连接发生错误的时候,会回调,方便使用方监控相关错误// 比如 reconnect invalidSession 等错误,错误可以转换为 bot.Errtype ErrorNotifyHandler func(err error)// PlainEventHandler 透传handlertype PlainEventHandler func(event *dto.WSPayload, message []byte) error// GuildEventHandler 频道事件handlertype GuildEventHandler func(event *dto.WSPayload, data *dto.WSGuildData) error// GuildMemberEventHandler 频道成员事件 handlertype GuildMemberEventHandler func(event *dto.WSPayload, data *dto.WSGuildMemberData) error// ChannelEventHandler 子频道事件 handlertype ChannelEventHandler func(event *dto.WSPayload, data *dto.WSChannelData) error// MessageEventHandler 消息事件 handlertype MessageEventHandler func(event *dto.WSPayload, data *dto.WSMessageData) error// MessageDeleteEventHandler 消息事件 handlertype MessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSMessageDeleteData) error// PublicMessageDeleteEventHandler 消息事件 handlertype PublicMessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSPublicMessageDeleteData) error// DirectMessageDeleteEventHandler 消息事件 handlertype DirectMessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSDirectMessageDeleteData) error// MessageReactionEventHandler 表情表态事件 handlertype MessageReactionEventHandler func(event *dto.WSPayload, data *dto.WSMessageReactionData) error// ATMessageEventHandler at 机器人消息事件 handlertype ATMessageEventHandler func(event *dto.WSPayload, data *dto.WSATMessageData) error// DirectMessageEventHandler 私信消息事件 handlertype DirectMessageEventHandler func(event *dto.WSPayload, data *dto.WSDirectMessageData) error// AudioEventHandler 音频机器人事件 handlertype AudioEventHandler func(event *dto.WSPayload, data *dto.WSAudioData) error// MessageAuditEventHandler 消息审核事件 handlertype MessageAuditEventHandler func(event *dto.WSPayload, data *dto.WSMessageAuditData) error// ThreadEventHandler 论坛主题事件 handlertype ThreadEventHandler func(event *dto.WSPayload, data *dto.WSThreadData) error// PostEventHandler 论坛回帖事件 handlertype PostEventHandler func(event *dto.WSPayload, data *dto.WSPostData) error// ReplyEventHandler 论坛帖子回复事件 handlertype ReplyEventHandler func(event *dto.WSPayload, data *dto.WSReplyData) error// ForumAuditEventHandler 论坛帖子审核事件 handlertype ForumAuditEventHandler func(event *dto.WSPayload, data *dto.WSForumAuditData) error// InteractionEventHandler 互动事件 handlertype InteractionEventHandler func(event *dto.WSPayload, data *dto.WSInteractionData) error
使用示例
创建 WSS 实例并监听消息
func main() {token := token.BotToken(config.AppID, config.Token) //生成tokenapi = botgo.NewOpenAPI(token).WithTimeout(3 * time.Second)ctx = context.Background()ws, _ := api.WS(ctx, nil, "") //websocketvar atMessage event.ATMessageEventHandler = atMessageEventHandler //@事件处理intent := websocket.RegisterHandlers(atMessage) // 注册socket消息处理botgo.NewSessionManager().Start(ws, token, &intent) // 启动socket监听}func atMessageEventHandler(event *dto.WSPayload, data *dto.WSATMessageData) error {message, err := api.PostMessage(ctx, channelId, &dto.MessageToCreate{MsgID: msgId, //如果未空则表示主动消息Content: "hello world",})if err != nil {log.Fatalln("调用 PostMessage 接口失败, err = ", err)}log.Println(message)return nil}
如果同时需要监听多个事件,在listen_events增加多个事件的handler对象
//同时监听at消息和私信消息的事件var atMessage event.ATMessageEventHandler = atMessageEventHandler //@事件处理var directMessage event.DirectMessageEventHandler = directMessageEventHandler//私信事件处理intent := websocket.RegisterHandlers(atMessage, directMessage) // 注册socket消息处理botgo.NewSessionManager().Start(ws, token, &intent) // 启动socket监听
