-
-
Notifications
You must be signed in to change notification settings - Fork 27
/
response.go
127 lines (103 loc) · 3.67 KB
/
response.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package tgbot
import (
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
"github.com/samber/lo"
)
type MessageResponse struct {
messageConfig tgbotapi.MessageConfig
deleteLaterForUserID int64
deleteLaterChatID int64
}
func NewMessage(chatID int64, message string) MessageResponse {
return MessageResponse{
messageConfig: tgbotapi.NewMessage(chatID, message),
}
}
func NewMessageReplyTo(chatID int64, message string, replyToMessageID int) MessageResponse {
m := MessageResponse{
messageConfig: tgbotapi.NewMessage(chatID, message),
}
m.messageConfig.ReplyToMessageID = replyToMessageID
return m
}
func (r MessageResponse) WithMessageConfig(config tgbotapi.MessageConfig) MessageResponse {
r.messageConfig = config
return r
}
func (r MessageResponse) WithParseModeHTML() MessageResponse {
r.messageConfig.ParseMode = tgbotapi.ModeHTML
return r
}
func (r MessageResponse) WithReplyMarkup(replyMarkup any) MessageResponse {
r.messageConfig.ReplyMarkup = replyMarkup
return r
}
func (r MessageResponse) WithDeleteLater(userID int64, chatID int64) MessageResponse {
r.deleteLaterForUserID = userID
r.deleteLaterChatID = chatID
return r
}
type EditMessageResponse struct {
textConfig *tgbotapi.EditMessageTextConfig
mediaConfig *tgbotapi.EditMessageMediaConfig
replyMarkupConfig *tgbotapi.EditMessageReplyMarkupConfig
captionConfig *tgbotapi.EditMessageCaptionConfig
liveLocationConfig *tgbotapi.EditMessageLiveLocationConfig
}
func NewEditMessageText(chatID int64, messageID int, text string) EditMessageResponse {
return EditMessageResponse{
textConfig: lo.ToPtr(tgbotapi.NewEditMessageText(chatID, messageID, text)),
}
}
func NewEditMessageTextAndReplyMarkup(chatID int64, messageID int, text string, replyMarkup tgbotapi.InlineKeyboardMarkup) EditMessageResponse {
return EditMessageResponse{
textConfig: lo.ToPtr(tgbotapi.NewEditMessageTextAndMarkup(chatID, messageID, text, replyMarkup)),
}
}
func NewEditMessageReplyMarkup(chatID int64, messageID int, replyMarkup tgbotapi.InlineKeyboardMarkup) EditMessageResponse {
return EditMessageResponse{
replyMarkupConfig: lo.ToPtr(tgbotapi.NewEditMessageReplyMarkup(chatID, messageID, replyMarkup)),
}
}
func (r EditMessageResponse) WithParseModeHTML() EditMessageResponse {
r.textConfig.ParseMode = tgbotapi.ModeHTML
return r
}
func (r EditMessageResponse) WithInlineReplyMarkup(inlineMarkup tgbotapi.InlineKeyboardMarkup) EditMessageResponse {
if r.textConfig != nil {
r.textConfig.BaseEdit.ReplyMarkup = &inlineMarkup
}
if r.mediaConfig != nil {
r.mediaConfig.BaseEdit.ReplyMarkup = &inlineMarkup
}
if r.replyMarkupConfig != nil {
r.replyMarkupConfig.BaseEdit.ReplyMarkup = &inlineMarkup
}
if r.captionConfig != nil {
r.captionConfig.BaseEdit.ReplyMarkup = &inlineMarkup
}
if r.liveLocationConfig != nil {
r.liveLocationConfig.BaseEdit.ReplyMarkup = &inlineMarkup
}
return r
}
func (r EditMessageResponse) WithEditMessageTextConfig(config tgbotapi.EditMessageTextConfig) EditMessageResponse {
r.textConfig = &config
return r
}
func (r EditMessageResponse) WithEditMessageMediaConfig(config tgbotapi.EditMessageMediaConfig) EditMessageResponse {
r.mediaConfig = &config
return r
}
func (r EditMessageResponse) WithEditMessageReplyMarkupConfig(config tgbotapi.EditMessageReplyMarkupConfig) EditMessageResponse {
r.replyMarkupConfig = &config
return r
}
func (r EditMessageResponse) WithEditMessageCaptionConfig(config tgbotapi.EditMessageCaptionConfig) EditMessageResponse {
r.captionConfig = &config
return r
}
func (r EditMessageResponse) WithEditMessageLiveLocationConfig(config tgbotapi.EditMessageLiveLocationConfig) EditMessageResponse {
r.liveLocationConfig = &config
return r
}