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.Err
type ErrorNotifyHandler func(err error)
// PlainEventHandler 透传handler
type PlainEventHandler func(event *dto.WSPayload, message []byte) error
// GuildEventHandler 频道事件handler
type GuildEventHandler func(event *dto.WSPayload, data *dto.WSGuildData) error
// GuildMemberEventHandler 频道成员事件 handler
type GuildMemberEventHandler func(event *dto.WSPayload, data *dto.WSGuildMemberData) error
// ChannelEventHandler 子频道事件 handler
type ChannelEventHandler func(event *dto.WSPayload, data *dto.WSChannelData) error
// MessageEventHandler 消息事件 handler
type MessageEventHandler func(event *dto.WSPayload, data *dto.WSMessageData) error
// MessageDeleteEventHandler 消息事件 handler
type MessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSMessageDeleteData) error
// PublicMessageDeleteEventHandler 消息事件 handler
type PublicMessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSPublicMessageDeleteData) error
// DirectMessageDeleteEventHandler 消息事件 handler
type DirectMessageDeleteEventHandler func(event *dto.WSPayload, data *dto.WSDirectMessageDeleteData) error
// MessageReactionEventHandler 表情表态事件 handler
type MessageReactionEventHandler func(event *dto.WSPayload, data *dto.WSMessageReactionData) error
// ATMessageEventHandler at 机器人消息事件 handler
type ATMessageEventHandler func(event *dto.WSPayload, data *dto.WSATMessageData) error
// DirectMessageEventHandler 私信消息事件 handler
type DirectMessageEventHandler func(event *dto.WSPayload, data *dto.WSDirectMessageData) error
// AudioEventHandler 音频机器人事件 handler
type AudioEventHandler func(event *dto.WSPayload, data *dto.WSAudioData) error
// MessageAuditEventHandler 消息审核事件 handler
type MessageAuditEventHandler func(event *dto.WSPayload, data *dto.WSMessageAuditData) error
// ThreadEventHandler 论坛主题事件 handler
type ThreadEventHandler func(event *dto.WSPayload, data *dto.WSThreadData) error
// PostEventHandler 论坛回帖事件 handler
type PostEventHandler func(event *dto.WSPayload, data *dto.WSPostData) error
// ReplyEventHandler 论坛帖子回复事件 handler
type ReplyEventHandler func(event *dto.WSPayload, data *dto.WSReplyData) error
// ForumAuditEventHandler 论坛帖子审核事件 handler
type ForumAuditEventHandler func(event *dto.WSPayload, data *dto.WSForumAuditData) error
// InteractionEventHandler 互动事件 handler
type InteractionEventHandler func(event *dto.WSPayload, data *dto.WSInteractionData) error
使用示例
创建 WSS 实例并监听消息
func main() {
token := token.BotToken(config.AppID, config.Token) //生成token
api = botgo.NewOpenAPI(token).WithTimeout(3 * time.Second)
ctx = context.Background()
ws, _ := api.WS(ctx, nil, "") //websocket
var 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监听