Add helpers for regular and inline keyboards.
parent
0252f39e17
commit
0d1bc8c4e2
110
helpers.go
110
helpers.go
|
@ -427,3 +427,113 @@ func NewEditMessageReplyMarkup(chatID int64, messageID int, replyMarkup InlineKe
|
|||
ReplyMarkup: &replyMarkup,
|
||||
}
|
||||
}
|
||||
|
||||
// NewHideKeyboard hides the keyboard, with the option for being selective
|
||||
// or hiding for everyone.
|
||||
func NewHideKeyboard(selective bool) ReplyKeyboardHide {
|
||||
return ReplyKeyboardHide{
|
||||
HideKeyboard: true,
|
||||
Selective: selective,
|
||||
}
|
||||
}
|
||||
|
||||
// NewKeyboardButton creates a regular keyboard button.
|
||||
func NewKeyboardButton(text string) KeyboardButton {
|
||||
return KeyboardButton{
|
||||
Text: text,
|
||||
}
|
||||
}
|
||||
|
||||
// NewKeyboardButtonContact creates a keyboard button that requests
|
||||
// user contact information upon click.
|
||||
func NewKeyboardButtonContact(text string) KeyboardButton {
|
||||
return KeyboardButton{
|
||||
Text: text,
|
||||
RequestContact: true,
|
||||
}
|
||||
}
|
||||
|
||||
// NewKeyboardButtonLocation creates a keyboard button that requests
|
||||
// user location information upon click.
|
||||
func NewKeyboardButtonLocation(text string) KeyboardButton {
|
||||
return KeyboardButton{
|
||||
Text: text,
|
||||
RequestLocation: true,
|
||||
}
|
||||
}
|
||||
|
||||
// NewKeyboardButtonRow creates a row of keyboard buttons.
|
||||
func NewKeyboardButtonRow(buttons ...KeyboardButton) []KeyboardButton {
|
||||
var row []KeyboardButton
|
||||
|
||||
for _, button := range buttons {
|
||||
row = append(row, button)
|
||||
}
|
||||
|
||||
return row
|
||||
}
|
||||
|
||||
// NewReplyKeyboard creates a new regular keyboard with sane defaults.
|
||||
func NewReplyKeyboard(rows ...[]KeyboardButton) ReplyKeyboardMarkup {
|
||||
var keyboard [][]KeyboardButton
|
||||
|
||||
for _, row := range rows {
|
||||
keyboard = append(keyboard, row)
|
||||
}
|
||||
|
||||
return ReplyKeyboardMarkup{
|
||||
ResizeKeyboard: true,
|
||||
Keyboard: keyboard,
|
||||
}
|
||||
}
|
||||
|
||||
// NewInlineKeyboardButtonData creates an inline keyboard button with text
|
||||
// and data for a callback.
|
||||
func NewInlineKeyboardButtonData(text, data string) InlineKeyboardButton {
|
||||
return InlineKeyboardButton{
|
||||
Text: text,
|
||||
CallbackData: &data,
|
||||
}
|
||||
}
|
||||
|
||||
// NewInlineKeyboardButtonURL creates an inline keyboard button with text
|
||||
// which goes to a URL.
|
||||
func NewInlineKeyboardButtonURL(text, url string) InlineKeyboardButton {
|
||||
return InlineKeyboardButton{
|
||||
Text: text,
|
||||
URL: &url,
|
||||
}
|
||||
}
|
||||
|
||||
// NewInlineKeyboardButtonSwitch creates an inline keyboard button with
|
||||
// text which allows the user to switch to a chat or return to a chat.
|
||||
func NewInlineKeyboardButtonSwitch(text, sw string) InlineKeyboardButton {
|
||||
return InlineKeyboardButton{
|
||||
Text: text,
|
||||
SwitchInlineQuery: &sw,
|
||||
}
|
||||
}
|
||||
|
||||
// NewInlineKeyboardRow creates an inline keyboard row with buttons.
|
||||
func NewInlineKeyboardRow(buttons ...InlineKeyboardButton) []InlineKeyboardButton {
|
||||
var row []InlineKeyboardButton
|
||||
|
||||
for _, button := range buttons {
|
||||
row = append(row, button)
|
||||
}
|
||||
|
||||
return row
|
||||
}
|
||||
|
||||
// NewInlineKeyboardMarkup creates a new inline keyboard.
|
||||
func NewInlineKeyboardMarkup(rows ...[]InlineKeyboardButton) InlineKeyboardMarkup {
|
||||
var keyboard [][]InlineKeyboardButton
|
||||
|
||||
for _, row := range rows {
|
||||
keyboard = append(keyboard, row)
|
||||
}
|
||||
|
||||
return InlineKeyboardMarkup{
|
||||
InlineKeyboard: keyboard,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue