@@ -21,8 +21,9 @@ func NewButton[T any](text, dType string, data T) Button {
21
21
22
22
type Message struct {
23
23
Text string
24
- Button [][] Button
24
+ Media models. InputFile
25
25
ParseMode models.ParseMode
26
+ Button [][]Button
26
27
}
27
28
28
29
func (m * Message ) toInlineKeyboardMarkup () * models.InlineKeyboardMarkup {
@@ -54,6 +55,19 @@ func (m *Message) toSendMessageParams(chatID int64) *bot.SendMessageParams {
54
55
return params
55
56
}
56
57
58
+ func (m * Message ) toSendPhotoParams (chatID int64 ) * bot.SendPhotoParams {
59
+ params := & bot.SendPhotoParams {
60
+ ChatID : chatID ,
61
+ Caption : m .Text ,
62
+ ParseMode : m .ParseMode ,
63
+ Photo : m .Media ,
64
+ }
65
+ if len (m .Button ) > 0 {
66
+ params .ReplyMarkup = m .toInlineKeyboardMarkup ()
67
+ }
68
+ return params
69
+ }
70
+
57
71
func (m * Message ) toEditMessageTextParams (chatID int64 , messageID int ) * bot.EditMessageTextParams {
58
72
params := & bot.EditMessageTextParams {
59
73
ChatID : chatID ,
@@ -66,3 +80,39 @@ func (m *Message) toEditMessageTextParams(chatID int64, messageID int) *bot.Edit
66
80
}
67
81
return params
68
82
}
83
+
84
+ func (m * Message ) toEditMessageCaptionParams (chatID int64 , messageID int ) * bot.EditMessageCaptionParams {
85
+ params := & bot.EditMessageCaptionParams {
86
+ ChatID : chatID ,
87
+ MessageID : messageID ,
88
+ Caption : m .Text ,
89
+ }
90
+ if len (m .Button ) > 0 {
91
+ params .ReplyMarkup = m .toInlineKeyboardMarkup ()
92
+ }
93
+ return params
94
+ }
95
+
96
+ func (m * Message ) toEditMessageMediaParams (chatID int64 , messageID int ) * bot.EditMessageMediaParams {
97
+ params := & bot.EditMessageMediaParams {
98
+ ChatID : chatID ,
99
+ MessageID : messageID ,
100
+ Media : & models.InputMediaPhoto {
101
+ Caption : m .Text ,
102
+ ParseMode : m .ParseMode ,
103
+ },
104
+ }
105
+ photo := & models.InputMediaPhoto {}
106
+ if upload , ok := m .Media .(* models.InputFileUpload ); ok {
107
+ photo .Media = "attach://" + upload .Filename
108
+ photo .MediaAttachment = upload .Data
109
+ }
110
+ if url , ok := m .Media .(* models.InputFileString ); ok {
111
+ photo .Media = url .Data
112
+ }
113
+ params .Media = photo
114
+ if len (m .Button ) > 0 {
115
+ params .ReplyMarkup = m .toInlineKeyboardMarkup ()
116
+ }
117
+ return params
118
+ }
0 commit comments