7a04f298d2
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
63 lines
2.1 KiB
Go
63 lines
2.1 KiB
Go
package markup
|
||
|
||
import (
|
||
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
|
||
)
|
||
|
||
// ReplyKeyboardMarkupBuilder is a keyboard markup builder.
|
||
type ReplyKeyboardMarkupBuilder struct {
|
||
kb tg.ReplyKeyboardMarkup
|
||
}
|
||
|
||
// Resize sets flag to request clients to resize the keyboard vertically for
|
||
// optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons).
|
||
// If not set, the custom keyboard is always of the same height as the app's standard keyboard.
|
||
func (b *ReplyKeyboardMarkupBuilder) Resize() *ReplyKeyboardMarkupBuilder {
|
||
b.kb.Resize = true
|
||
return b
|
||
}
|
||
|
||
// SingleUse sets flag to request clients to hide the keyboard as soon as it's been used.
|
||
// The keyboard will still be available, but clients will automatically display the usual letter-keyboard
|
||
// in the chat – the user can press a special button in the input field to see the custom keyboard again.
|
||
func (b *ReplyKeyboardMarkupBuilder) SingleUse() *ReplyKeyboardMarkupBuilder {
|
||
b.kb.SingleUse = true
|
||
return b
|
||
}
|
||
|
||
// Selective sets flag to show the keyboard to specific users only.
|
||
// Targets:
|
||
// 1. users that are @mentioned in the text of the Message object;
|
||
// 2. if the bot's message is a reply (has reply_to_message_id), sender of the original message.
|
||
//
|
||
// Example: A user requests to change the bot‘s language, bot replies to the request
|
||
// with a keyboard to select the new language.
|
||
// Other users in the group don’t see the keyboard.
|
||
func (b *ReplyKeyboardMarkupBuilder) Selective() *ReplyKeyboardMarkupBuilder {
|
||
b.kb.Selective = true
|
||
return b
|
||
}
|
||
|
||
// Build returns created keyboard.
|
||
func (b *ReplyKeyboardMarkupBuilder) Build(rows ...tg.KeyboardButtonRow,
|
||
) tg.ReplyMarkupClass {
|
||
cp := b.kb
|
||
cp.Rows = rows
|
||
return &cp
|
||
}
|
||
|
||
// BuildKeyboard creates keyboard builder.
|
||
func BuildKeyboard() *ReplyKeyboardMarkupBuilder {
|
||
return &ReplyKeyboardMarkupBuilder{}
|
||
}
|
||
|
||
// SingleRow creates keyboard with single row using given buttons.
|
||
func SingleRow(buttons ...tg.KeyboardButtonClass) tg.ReplyMarkupClass {
|
||
return Keyboard(Row(buttons...))
|
||
}
|
||
|
||
// Keyboard creates keyboard using given rows.
|
||
func Keyboard(rows ...tg.KeyboardButtonRow) tg.ReplyMarkupClass {
|
||
return BuildKeyboard().Build(rows...)
|
||
}
|