106 lines
2.5 KiB
Go
106 lines
2.5 KiB
Go
|
|
package protocol
|
|||
|
|
|
|||
|
|
import "time"
|
|||
|
|
|
|||
|
|
// EventType 事件类型
|
|||
|
|
type EventType string
|
|||
|
|
|
|||
|
|
const (
|
|||
|
|
// 事件类型常量
|
|||
|
|
EventTypeMessage EventType = "message"
|
|||
|
|
EventTypeNotice EventType = "notice"
|
|||
|
|
EventTypeRequest EventType = "request"
|
|||
|
|
EventTypeMeta EventType = "meta"
|
|||
|
|
EventTypeMessageSent EventType = "message_sent"
|
|||
|
|
EventTypeNoticeSent EventType = "notice_sent"
|
|||
|
|
EventTypeRequestSent EventType = "request_sent"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// Event 通用事件接口
|
|||
|
|
// 参考OneBot12协议设计,提供统一的事件抽象
|
|||
|
|
type Event interface {
|
|||
|
|
// GetType 获取事件类型
|
|||
|
|
GetType() EventType
|
|||
|
|
// GetDetailType 获取详细类型
|
|||
|
|
GetDetailType() string
|
|||
|
|
// GetSubType 获取子类型
|
|||
|
|
GetSubType() string
|
|||
|
|
// GetTimestamp 获取时间戳
|
|||
|
|
GetTimestamp() time.Time
|
|||
|
|
// GetSelfID 获取机器人自身ID
|
|||
|
|
GetSelfID() string
|
|||
|
|
// GetData 获取事件数据
|
|||
|
|
GetData() map[string]interface{}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// BaseEvent 基础事件结构
|
|||
|
|
type BaseEvent struct {
|
|||
|
|
Type EventType `json:"type"`
|
|||
|
|
DetailType string `json:"detail_type"`
|
|||
|
|
SubType string `json:"sub_type,omitempty"`
|
|||
|
|
Timestamp int64 `json:"timestamp"`
|
|||
|
|
SelfID string `json:"self_id"`
|
|||
|
|
Data map[string]interface{} `json:"data"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetType 获取事件类型
|
|||
|
|
func (e *BaseEvent) GetType() EventType {
|
|||
|
|
return e.Type
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetDetailType 获取详细类型
|
|||
|
|
func (e *BaseEvent) GetDetailType() string {
|
|||
|
|
return e.DetailType
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetSubType 获取子类型
|
|||
|
|
func (e *BaseEvent) GetSubType() string {
|
|||
|
|
return e.SubType
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetTimestamp 获取时间戳
|
|||
|
|
func (e *BaseEvent) GetTimestamp() time.Time {
|
|||
|
|
return time.Unix(e.Timestamp, 0)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetSelfID 获取机器人自身ID
|
|||
|
|
func (e *BaseEvent) GetSelfID() string {
|
|||
|
|
return e.SelfID
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// GetData 获取事件数据
|
|||
|
|
func (e *BaseEvent) GetData() map[string]interface{} {
|
|||
|
|
return e.Data
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// MessageEvent 消息事件
|
|||
|
|
type MessageEvent struct {
|
|||
|
|
BaseEvent
|
|||
|
|
MessageID string `json:"message_id"`
|
|||
|
|
Message string `json:"message"`
|
|||
|
|
AltText string `json:"alt_text,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// NoticeEvent 通知事件
|
|||
|
|
type NoticeEvent struct {
|
|||
|
|
BaseEvent
|
|||
|
|
GroupID string `json:"group_id,omitempty"`
|
|||
|
|
UserID string `json:"user_id,omitempty"`
|
|||
|
|
Operator string `json:"operator,omitempty"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// RequestEvent 请求事件
|
|||
|
|
type RequestEvent struct {
|
|||
|
|
BaseEvent
|
|||
|
|
RequestID string `json:"request_id"`
|
|||
|
|
UserID string `json:"user_id"`
|
|||
|
|
Comment string `json:"comment"`
|
|||
|
|
Flag string `json:"flag"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// MetaEvent 元事件
|
|||
|
|
type MetaEvent struct {
|
|||
|
|
BaseEvent
|
|||
|
|
Status string `json:"status"`
|
|||
|
|
}
|