fix group msg

This commit is contained in:
Rogee
2024-09-03 09:43:21 +08:00
parent ba16785b43
commit df2ca18f19
5 changed files with 138 additions and 28 deletions

View File

@@ -13,15 +13,18 @@ type ChannelMessage struct {
ID int
GroupID int64
Message string
Medias []ChannelMessageMedia
Medias ChannelMessageMedia
PublishAt time.Time
}
type ChannelMessageMedia struct {
Photo *string
Video *string
Document *ChannelMessageDocument
WebPage *ChannelMessageMediaWebPage
MsgID int `json:"msg_id,omitempty"`
AssetID int64 `json:"asset_id,omitempty"`
Photo *string `json:"photo,omitempty"`
Video *string `json:"video,omitempty"`
Document *ChannelMessageDocument `json:"document,omitempty"`
WebPage *ChannelMessageMediaWebPage `json:"web_page,omitempty"`
}
type ChannelMessageDocument struct {
@@ -57,31 +60,37 @@ func (c *ChannelMessage) WithMessage(message string) *ChannelMessage {
}
func (c *ChannelMessage) WithPhoto(assetID int64, ext string) *ChannelMessage {
c.Medias = append(c.Medias, ChannelMessageMedia{
Photo: lo.ToPtr(fmt.Sprintf("%d.%s", assetID, strings.Trim(ext, "."))),
})
c.Medias = ChannelMessageMedia{
MsgID: c.ID,
AssetID: assetID,
Photo: lo.ToPtr(fmt.Sprintf("%d.%s", assetID, strings.Trim(ext, "."))),
}
return c
}
func (c *ChannelMessage) WithVideo(video string) *ChannelMessage {
c.Medias = append(c.Medias, ChannelMessageMedia{Video: lo.ToPtr(video)})
return c
}
func (c *ChannelMessage) WithDocument(d ChannelMessageDocument) *ChannelMessage {
c.Medias = append(c.Medias, ChannelMessageMedia{
func (c *ChannelMessage) WithDocument(assetID int64, d ChannelMessageDocument) *ChannelMessage {
c.Medias = ChannelMessageMedia{
MsgID: c.ID,
AssetID: assetID,
Document: lo.ToPtr(d),
})
}
return c
}
func (c *ChannelMessage) WithWebPage(title, url string) *ChannelMessage {
c.Medias = append(c.Medias, ChannelMessageMedia{
func (c *ChannelMessage) WithWebPage(assetID int64, title, url string) *ChannelMessage {
c.Medias = ChannelMessageMedia{
MsgID: c.ID,
AssetID: assetID,
WebPage: lo.ToPtr(ChannelMessageMediaWebPage{Title: title, URL: url}),
})
}
return c
}
func (c *ChannelMessage) GetMedias() string {
b, _ := json.Marshal([]ChannelMessageMedia{c.Medias})
return string(b)
}
func (c *ChannelMessage) GetMedia() string {
b, _ := json.Marshal(c.Medias)
return string(b)