refactor: 重构消息类型的初始化逻辑,新增各消息类型的构造函数以提高代码可读性和可维护性

This commit is contained in:
lixiangwuxian 2025-04-09 23:00:37 +08:00
parent 10eba59c63
commit 144034939c
16 changed files with 88 additions and 20 deletions

View File

@ -18,10 +18,14 @@ type AtMessageData struct {
func init() {
RegisterMessageType(TypeAt, func() CQMessage {
return &AtMessage{Type: TypeAt}
return NewAtMessage()
})
}
func NewAtMessage() *AtMessage {
return &AtMessage{Type: TypeAt}
}
func (msg *AtMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -19,10 +19,14 @@ type ContactMessageData struct {
func init() {
RegisterMessageType(TypeContact, func() CQMessage {
return &ContactMessage{Type: TypeContact}
return NewContactMessage()
})
}
func NewContactMessage() *ContactMessage {
return &ContactMessage{Type: TypeContact}
}
func (msg *ContactMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -18,10 +18,14 @@ type FaceMessageData struct {
func init() {
RegisterMessageType(TypeFace, func() CQMessage {
return &FaceMessage{Type: TypeFace}
return NewFaceMessage()
})
}
func NewFaceMessage() *FaceMessage {
return &FaceMessage{Type: TypeFace}
}
func (msg *FaceMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -24,10 +24,14 @@ type FileMessageData struct {
func init() {
RegisterMessageType(TypeFile, func() CQMessage {
return &FileMessage{Type: TypeFile}
return NewFileMessage()
})
}
func NewFileMessage() *FileMessage {
return &FileMessage{Type: TypeFile}
}
func (msg *FileMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -32,18 +32,26 @@ type NodeMessageData struct {
func init() {
RegisterMessageType(TypeForward, func() CQMessage {
return &ForwardMessage{Type: TypeForward}
return NewForwardMessage()
})
RegisterMessageType(TypeNode, func() CQMessage {
return &NodeMessage{Type: TypeNode}
return NewNodeMessage()
})
}
func NewForwardMessage() *ForwardMessage {
return &ForwardMessage{Type: TypeForward}
}
// ForwardMessage methods
func (msg *ForwardMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}
func NewNodeMessage() *NodeMessage {
return &NodeMessage{Type: TypeNode}
}
func (msg *ForwardMessage) ToCQString() string {
return fmt.Sprintf("[CQ:forward,id=%s]", msg.Data.ID)
}

View File

@ -29,13 +29,17 @@ type ImageMessageData struct {
func init() {
RegisterMessageType(TypeImage, func() CQMessage {
return &ImageMessage{
Type: TypeImage,
Data: ImageMessageData{},
}
return NewImageMessage()
})
}
func NewImageMessage() *ImageMessage {
return &ImageMessage{
Type: TypeImage,
Data: ImageMessageData{},
}
}
func (msg *ImageMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -18,10 +18,14 @@ type JsonMessageData struct {
func init() {
RegisterMessageType(TypeJson, func() CQMessage {
return &JsonMessage{Type: TypeJson}
return NewJsonMessage()
})
}
func NewJsonMessage() *JsonMessage {
return &JsonMessage{Type: TypeJson}
}
func (msg *JsonMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -18,10 +18,14 @@ type LightappMessageData struct {
func init() {
RegisterMessageType(TypeLightapp, func() CQMessage {
return &LightappMessage{Type: TypeLightapp}
return NewLightappMessage()
})
}
func NewLightappMessage() *LightappMessage {
return &LightappMessage{Type: TypeLightapp}
}
func (msg *LightappMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -21,10 +21,14 @@ type LocationMessageData struct {
func init() {
RegisterMessageType(TypeLocation, func() CQMessage {
return &LocationMessage{Type: TypeLocation}
return NewLocationMessage()
})
}
func NewLocationMessage() *LocationMessage {
return &LocationMessage{Type: TypeLocation}
}
func (msg *LocationMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -21,10 +21,14 @@ type MfaceMessageData struct {
func init() {
RegisterMessageType(TypeMface, func() CQMessage {
return &MfaceMessage{Type: TypeMface}
return NewMfaceMessage()
})
}
func NewMfaceMessage() *MfaceMessage {
return &MfaceMessage{Type: TypeMface}
}
func (msg *MfaceMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -24,10 +24,14 @@ type MusicMessageData struct {
func init() {
RegisterMessageType(TypeMusic, func() CQMessage {
return &MusicMessage{Type: TypeMusic}
return NewMusicMessage()
})
}
func NewMusicMessage() *MusicMessage {
return &MusicMessage{Type: TypeMusic}
}
func (msg *MusicMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -24,10 +24,14 @@ type RecordMessageData struct {
func init() {
RegisterMessageType(TypeRecord, func() CQMessage {
return &RecordMessage{Type: TypeRecord}
return NewRecordMessage()
})
}
func NewRecordMessage() *RecordMessage {
return &RecordMessage{Type: TypeRecord}
}
func (msg *RecordMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -18,10 +18,14 @@ type ReplyMessageData struct {
func init() {
RegisterMessageType(TypeReply, func() CQMessage {
return &ReplyMessage{Type: TypeReply}
return NewReplyMessage()
})
}
func NewReplyMessage() *ReplyMessage {
return &ReplyMessage{Type: TypeReply}
}
func (msg *ReplyMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -21,10 +21,14 @@ type ShareMessageData struct {
func init() {
RegisterMessageType(TypeShare, func() CQMessage {
return &ShareMessage{Type: TypeShare}
return NewShareMessage()
})
}
func NewShareMessage() *ShareMessage {
return &ShareMessage{Type: TypeShare}
}
func (msg *ShareMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -16,10 +16,14 @@ type TextMessageData struct {
func init() {
RegisterMessageType(TypeText, func() CQMessage {
return &TextMessage{Type: TypeText}
return NewTextMessage()
})
}
func NewTextMessage() *TextMessage {
return &TextMessage{Type: TypeText}
}
func (msg *TextMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}

View File

@ -25,10 +25,14 @@ type VideoMessageData struct {
func init() {
RegisterMessageType(TypeVideo, func() CQMessage {
return &VideoMessage{Type: TypeVideo}
return NewVideoMessage()
})
}
func NewVideoMessage() *VideoMessage {
return &VideoMessage{Type: TypeVideo}
}
func (msg *VideoMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data)
}