Files
tg_exporter/internal/channel_message.go
Rogee 422a5a9cab fix
2024-09-02 19:51:29 +08:00

61 lines
1.3 KiB
Go

package internal
import (
"encoding/json"
"fmt"
"time"
)
type ChannelMessage struct {
ID int
GroupID int64
Message string
Medias []ChannelMessageMedia
PublishAt time.Time
}
type ChannelMessageMedia struct {
Photo string
Video string
WebPage ChannelMessageMediaWebPage
}
type ChannelMessageMediaWebPage struct {
Title string
URL string
}
func NewChannelMessage(id, ts int) *ChannelMessage {
return &ChannelMessage{ID: id, PublishAt: time.Unix(int64(ts), 0)}
}
func (c *ChannelMessage) WithGroupID(groupID int64) *ChannelMessage {
c.GroupID = groupID
return c
}
func (c *ChannelMessage) WithMessage(message string) *ChannelMessage {
c.Message = message
return c
}
func (c *ChannelMessage) WithPhoto(assetID int64, ext string) *ChannelMessage {
c.Medias = append(c.Medias, ChannelMessageMedia{Photo: fmt.Sprintf("%d.%s", assetID, ext)})
return c
}
func (c *ChannelMessage) WithVideo(video string) *ChannelMessage {
c.Medias = append(c.Medias, ChannelMessageMedia{Video: video})
return c
}
func (c *ChannelMessage) WithWebPage(title, url string) *ChannelMessage {
c.Medias = append(c.Medias, ChannelMessageMedia{WebPage: ChannelMessageMediaWebPage{Title: title, URL: url}})
return c
}
func (c *ChannelMessage) GetMedia() string {
b, _ := json.Marshal(c.Medias)
return string(b)
}