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() { func init() {
RegisterMessageType(TypeAt, func() CQMessage { 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 { func (msg *AtMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -19,10 +19,14 @@ type ContactMessageData struct {
func init() { func init() {
RegisterMessageType(TypeContact, func() CQMessage { 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 { func (msg *ContactMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -18,10 +18,14 @@ type FaceMessageData struct {
func init() { func init() {
RegisterMessageType(TypeFace, func() CQMessage { 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 { func (msg *FaceMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -24,10 +24,14 @@ type FileMessageData struct {
func init() { func init() {
RegisterMessageType(TypeFile, func() CQMessage { 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 { func (msg *FileMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

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

View File

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

View File

@ -18,10 +18,14 @@ type JsonMessageData struct {
func init() { func init() {
RegisterMessageType(TypeJson, func() CQMessage { 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 { func (msg *JsonMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -18,10 +18,14 @@ type LightappMessageData struct {
func init() { func init() {
RegisterMessageType(TypeLightapp, func() CQMessage { 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 { func (msg *LightappMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -21,10 +21,14 @@ type LocationMessageData struct {
func init() { func init() {
RegisterMessageType(TypeLocation, func() CQMessage { 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 { func (msg *LocationMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -21,10 +21,14 @@ type MfaceMessageData struct {
func init() { func init() {
RegisterMessageType(TypeMface, func() CQMessage { 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 { func (msg *MfaceMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -24,10 +24,14 @@ type MusicMessageData struct {
func init() { func init() {
RegisterMessageType(TypeMusic, func() CQMessage { 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 { func (msg *MusicMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -24,10 +24,14 @@ type RecordMessageData struct {
func init() { func init() {
RegisterMessageType(TypeRecord, func() CQMessage { 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 { func (msg *RecordMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -18,10 +18,14 @@ type ReplyMessageData struct {
func init() { func init() {
RegisterMessageType(TypeReply, func() CQMessage { 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 { func (msg *ReplyMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -21,10 +21,14 @@ type ShareMessageData struct {
func init() { func init() {
RegisterMessageType(TypeShare, func() CQMessage { 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 { func (msg *ShareMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -16,10 +16,14 @@ type TextMessageData struct {
func init() { func init() {
RegisterMessageType(TypeText, func() CQMessage { 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 { func (msg *TextMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }

View File

@ -25,10 +25,14 @@ type VideoMessageData struct {
func init() { func init() {
RegisterMessageType(TypeVideo, func() CQMessage { 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 { func (msg *VideoMessage) SetData(data json.RawMessage) error {
return json.Unmarshal(data, &msg.Data) return json.Unmarshal(data, &msg.Data)
} }