nechotron/keyboards.go

109 lines
2.2 KiB
Go

package nechotron
import "github.com/NicoNex/echotron/v3"
type InKeyboard struct {
Buttons [][]echotron.InlineKeyboardButton
}
func NewInlineKeyboard() *InKeyboard {
return &InKeyboard{}
}
func (i *InKeyboard) Row(buttons ...echotron.InlineKeyboardButton) *InKeyboard {
i.Buttons = append(i.Buttons, buttons)
return i
}
func (i *InKeyboard) Markup() echotron.InlineKeyboardMarkup {
if len(i.Buttons) == 0 {
return echotron.InlineKeyboardMarkup{
InlineKeyboard: [][]echotron.InlineKeyboardButton{},
}
}
return echotron.InlineKeyboardMarkup{
InlineKeyboard: i.Buttons,
}
}
func InButtonURL(text string, url string) echotron.InlineKeyboardButton {
return echotron.InlineKeyboardButton{
Text: text,
URL: url,
}
}
func InButtonCallback(text string, callback string) echotron.InlineKeyboardButton {
return echotron.InlineKeyboardButton{
Text: text,
CallbackData: callback,
}
}
type ReKeyboard struct {
Buttons [][]echotron.KeyboardButton
}
func (i *ReKeyboard) Row(buttons ...echotron.KeyboardButton) *ReKeyboard {
i.Buttons = append(i.Buttons, buttons)
return i
}
func (i *ReKeyboard) Markup(oneTime bool) echotron.ReplyKeyboardMarkup {
if len(i.Buttons) == 0 {
return echotron.ReplyKeyboardMarkup{
OneTimeKeyboard: oneTime,
ResizeKeyboard: true,
Keyboard: [][]echotron.KeyboardButton{},
}
}
return echotron.ReplyKeyboardMarkup{
OneTimeKeyboard: oneTime,
ResizeKeyboard: true,
Keyboard: i.Buttons,
}
}
func ReButton(text string) echotron.KeyboardButton {
return echotron.KeyboardButton{
Text: text,
}
}
type Button struct {
text string
query string
url string
}
func NewButton() *Button {
return &Button{}
}
func (b *Button) ReplyButton() echotron.KeyboardButton {
return echotron.KeyboardButton{Text: b.text}
}
func (b *Button) InlineCallback() echotron.InlineKeyboardButton {
return echotron.InlineKeyboardButton{CallbackData: b.query}
}
func (b *Button) InlineURL() echotron.InlineKeyboardButton {
return echotron.InlineKeyboardButton{URL: b.url}
}
func (b *Button) Text(text string) *Button {
b.text = text
return b
}
func (b *Button) Query(query string) *Button {
b.query = query
return b
}
func (b *Button) URL(url string) *Button {
b.url = url
return b
}