All Downloads are FREE. Search and download functionalities are using the official Maven repository.

telegramium.bots.KeyboardMarkup.scala Maven / Gradle / Ivy

package telegramium.bots

sealed trait KeyboardMarkup {}

/** This object represents an inline keyboard that appears right next to the message it belongs to.
  *
  * @param inlineKeyboard
  *   Array of button rows, each represented by an Array of InlineKeyboardButton objects
  */
final case class InlineKeyboardMarkup(inlineKeyboard: List[List[InlineKeyboardButton]] = List.empty)
    extends KeyboardMarkup

/** Upon receiving a message with this object, Telegram clients will display a reply interface to the user (act as if
  * the user has selected the bot's message and tapped 'Reply'). This can be extremely useful if you want to create
  * user-friendly step-by-step interfaces without having to sacrifice privacy mode. Not supported in channels and for
  * messages sent on behalf of a Telegram Business account.
  *
  * @param forceReply
  *   Shows reply interface to the user, as if they manually selected the bot's message and tapped 'Reply'
  * @param inputFieldPlaceholder
  *   Optional. The placeholder to be shown in the input field when the reply is active; 1-64 characters
  * @param selective
  *   Optional. Use this parameter if you want to force reply from 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 to a message in the same
  *   chat and forum topic, sender of the original message.
  */
final case class ForceReply(
  forceReply: Boolean,
  inputFieldPlaceholder: Option[String] = Option.empty,
  selective: Option[Boolean] = Option.empty
) extends KeyboardMarkup

/** Upon receiving a message with this object, Telegram clients will remove the current custom keyboard and display the
  * default letter-keyboard. By default, custom keyboards are displayed until a new keyboard is sent by a bot. An
  * exception is made for one-time keyboards that are hidden immediately after the user presses a button (see
  * ReplyKeyboardMarkup). Not supported in channels and for messages sent on behalf of a Telegram Business account.
  *
  * @param removeKeyboard
  *   Requests clients to remove the custom keyboard (user will not be able to summon this keyboard; if you want to hide
  *   the keyboard from sight but keep it accessible, use one_time_keyboard in ReplyKeyboardMarkup)
  * @param selective
  *   Optional. Use this parameter if you want to remove the keyboard for 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 to a message in the same
  *   chat and forum topic, sender of the original message. Example: A user votes in a poll, bot returns confirmation
  *   message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll
  *   options to users who haven't voted yet.
  */
final case class ReplyKeyboardRemove(removeKeyboard: Boolean, selective: Option[Boolean] = Option.empty)
    extends KeyboardMarkup

/** This object represents a custom keyboard with reply options (see Introduction to bots for details and examples). Not
  * supported in channels and for messages sent on behalf of a Telegram Business account.
  *
  * @param keyboard
  *   Array of button rows, each represented by an Array of KeyboardButton objects
  * @param isPersistent
  *   Optional. Requests clients to always show the keyboard when the regular keyboard is hidden. Defaults to false, in
  *   which case the custom keyboard can be hidden and opened with a keyboard icon.
  * @param resizeKeyboard
  *   Optional. Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if
  *   there are just two rows of buttons). Defaults to false, in which case the custom keyboard is always of the same
  *   height as the app's standard keyboard.
  * @param oneTimeKeyboard
  *   Optional. Requests 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. Defaults to false.
  * @param inputFieldPlaceholder
  *   Optional. The placeholder to be shown in the input field when the keyboard is active; 1-64 characters
  * @param selective
  *   Optional. Use this parameter if you want 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 to a message in the same
  *   chat and forum topic, 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.
  */
final case class ReplyKeyboardMarkup(
  keyboard: List[List[KeyboardButton]] = List.empty,
  isPersistent: Option[Boolean] = Option.empty,
  resizeKeyboard: Option[Boolean] = Option.empty,
  oneTimeKeyboard: Option[Boolean] = Option.empty,
  inputFieldPlaceholder: Option[String] = Option.empty,
  selective: Option[Boolean] = Option.empty
) extends KeyboardMarkup




© 2015 - 2024 Weber Informatics LLC | Privacy Policy