diff --git a/message/at.go b/message/at.go index 2657b37..a337f00 100644 --- a/message/at.go +++ b/message/at.go @@ -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) } diff --git a/message/contact.go b/message/contact.go index 65b8632..46ec6a3 100644 --- a/message/contact.go +++ b/message/contact.go @@ -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) } diff --git a/message/face.go b/message/face.go index 2fa04f8..467dfa8 100644 --- a/message/face.go +++ b/message/face.go @@ -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) } diff --git a/message/file.go b/message/file.go index f2309b9..10b7888 100644 --- a/message/file.go +++ b/message/file.go @@ -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) } diff --git a/message/forward.go b/message/forward.go index c1af0f0..9709674 100644 --- a/message/forward.go +++ b/message/forward.go @@ -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) } diff --git a/message/image.go b/message/image.go index 237997e..fd7359f 100644 --- a/message/image.go +++ b/message/image.go @@ -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) } diff --git a/message/json.go b/message/json.go index a5dbedf..9beda9a 100644 --- a/message/json.go +++ b/message/json.go @@ -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) } diff --git a/message/lightapp.go b/message/lightapp.go index 4ed264c..c177468 100644 --- a/message/lightapp.go +++ b/message/lightapp.go @@ -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) } diff --git a/message/location.go b/message/location.go index 25195a6..671b4a5 100644 --- a/message/location.go +++ b/message/location.go @@ -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) } diff --git a/message/mface.go b/message/mface.go index 9a4c8f2..e345f2a 100644 --- a/message/mface.go +++ b/message/mface.go @@ -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) } diff --git a/message/music.go b/message/music.go index a4606e7..4ed5ffc 100644 --- a/message/music.go +++ b/message/music.go @@ -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) } diff --git a/message/record.go b/message/record.go index 45a8a1b..52ba6cd 100644 --- a/message/record.go +++ b/message/record.go @@ -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) } diff --git a/message/reply.go b/message/reply.go index 2afbc22..6204d87 100644 --- a/message/reply.go +++ b/message/reply.go @@ -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) } diff --git a/message/share.go b/message/share.go index 0e28b06..e878f0a 100644 --- a/message/share.go +++ b/message/share.go @@ -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) } diff --git a/message/text.go b/message/text.go index 8b1b5bf..58074de 100644 --- a/message/text.go +++ b/message/text.go @@ -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) } diff --git a/message/video.go b/message/video.go index e152790..c6e55dc 100644 --- a/message/video.go +++ b/message/video.go @@ -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) }