-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Telegram Bot API bindings -- -- High-level bindings to the Telegram Bot API @package telegram-api @version 0.6.2.0 -- | This module contains objects which represent data of Telegram Bot API -- responses module Web.Telegram.API.Bot.Data -- | This object represents a Telegram user or bot. data User User :: Int -> Text -> Maybe Text -> Maybe Text -> User -- | Unique identifier for this user or bot [user_id] :: User -> Int -- | User‘s or bot’s first name [user_first_name] :: User -> Text -- | User‘s or bot’s last name [user_last_name] :: User -> Maybe Text -- | User‘s or bot’s username [user_username] :: User -> Maybe Text data ChatMember ChatMember :: User -> Text -> ChatMember -- | Information about the user [cm_user] :: ChatMember -> User -- | The member's status in the chat. Can be “creator”, “administrator”, -- “member”, “left” or “kicked” [cm_status] :: ChatMember -> Text -- | This object represents a chat. data Chat Chat :: Int64 -> ChatType -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> Chat -- | Unique identifier for this chat. This number may be greater than 32 -- bits and some programming languages may have difficulty/silent defects -- in interpreting it. But it is smaller than 52 bits, so a signed 64 bit -- integer or double-precision float type are safe for storing this -- identifier. [chat_id] :: Chat -> Int64 -- | Type of chat, can be either Private, Group, -- Supergroup or Channel [chat_type] :: Chat -> ChatType -- | Title, for channels and group chats [chat_title] :: Chat -> Maybe Text -- | Username, for private chats and channels if available [chat_username] :: Chat -> Maybe Text -- | First name of the other party in a private chat [chat_first_name] :: Chat -> Maybe Text -- | Last name of the other party in a private chat [chat_last_name] :: Chat -> Maybe Text -- | True if a group has ‘All Members Are Admins’ enabled. [chat_all_members_are_administrators] :: Chat -> Maybe Bool -- | This object represents a message. data Message Message :: Int -> Maybe User -> Int -> Chat -> Maybe User -> Maybe Chat -> Maybe Int -> Maybe Int -> Maybe Message -> Maybe Int -> Maybe Text -> Maybe [MessageEntity] -> Maybe Audio -> Maybe Document -> Maybe Game -> Maybe [PhotoSize] -> Maybe Sticker -> Maybe Video -> Maybe Voice -> Maybe Text -> Maybe Contact -> Maybe Location -> Maybe Venue -> Maybe User -> Maybe User -> Maybe Text -> Maybe [PhotoSize] -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Int64 -> Maybe Int64 -> Maybe Message -> Maybe Invoice -> Maybe SuccessfulPayment -> Message -- | Unique message identifier [message_id] :: Message -> Int -- | Sender, can be empty for messages sent to channels [from] :: Message -> Maybe User -- | Date the message was sent in Unix time [date] :: Message -> Int -- | Conversation the message belongs to [chat] :: Message -> Chat -- | For forwarded messages, sender of the original message [forward_from] :: Message -> Maybe User -- | For messages forwarded from a channel, information about the original -- channel [forward_from_chat] :: Message -> Maybe Chat -- | For forwarded channel posts, identifier of the original message in the -- channel [forward_from_message_id] :: Message -> Maybe Int -- | For forwarded messages, date the original message was sent in Unix -- time [forward_date] :: Message -> Maybe Int -- | For replies, the original message. Note that the Message object -- in this field will not contain further reply_to_message fields -- even if it itself is a reply. [reply_to_message] :: Message -> Maybe Message -- | Date the message was last edited in Unix time [edit_date] :: Message -> Maybe Int -- | For text messages, the actual UTF-8 text of the message [text] :: Message -> Maybe Text -- | For text messages, special entities like usernames, URLs, bot -- commands, etc. that appear in the text [entities] :: Message -> Maybe [MessageEntity] -- | Message is an audio file, information about the file [audio] :: Message -> Maybe Audio -- | Message is a general file, information about the file [document] :: Message -> Maybe Document -- | Message is a game, information about the game [game] :: Message -> Maybe Game -- | Message is a photo, available sizes of the photo [photo] :: Message -> Maybe [PhotoSize] -- | Message is a sticker, information about the sticker [sticker] :: Message -> Maybe Sticker -- | Message is a video, information about the video [video] :: Message -> Maybe Video -- | Message is a voice message, information about the file [voice] :: Message -> Maybe Voice -- | Caption for the photo or video [caption] :: Message -> Maybe Text -- | Message is a shared contact, information about the contact [contact] :: Message -> Maybe Contact -- | Message is a shared location, information about the location [location] :: Message -> Maybe Location -- | Message is a venue, information about the venue [venue] :: Message -> Maybe Venue -- | A new member was added to the group, information about them (this -- member may be the bot itself) [new_chat_member] :: Message -> Maybe User -- | A member was removed from the group, information about them (this -- member may be the bot itself) [left_chat_member] :: Message -> Maybe User -- | A chat title was changed to this value [new_chat_title] :: Message -> Maybe Text -- | A chat photo was change to this value [new_chat_photo] :: Message -> Maybe [PhotoSize] -- | Service message: the chat photo was deleted [delete_chat_photo] :: Message -> Maybe Bool -- | Service message: the group has been created [group_chat_created] :: Message -> Maybe Bool -- | Service message: the supergroup has been created [supergroup_chat_created] :: Message -> Maybe Bool -- | Service message: the channel has been created [channel_chat_created] :: Message -> Maybe Bool -- | The group has been migrated to a supergroup with the specified -- identifier, not exceeding 1e13 by absolute value [migrate_to_chat_id] :: Message -> Maybe Int64 -- | The supergroup has been migrated from a group with the specified -- identifier, not exceeding 1e13 by absolute value [migrate_from_chat_id] :: Message -> Maybe Int64 -- | Specified message was pinned. Note that the Message object in this -- field will not contain further reply_to_message fields even if it is -- itself a reply. [pinned_message] :: Message -> Maybe Message -- | Message is an invoice for a payment, information about the invoice. [invoice] :: Message -> Maybe Invoice -- | Message is a service message about a successful payment, information -- about the payment. [successful_payment] :: Message -> Maybe SuccessfulPayment -- | This object represents one special entity in a text message. For -- example, hashtags, usernames, URLs, etc. data MessageEntity MessageEntity :: Text -> Int -> Int -> Maybe Text -> Maybe User -> MessageEntity -- | Type of the entity. Can be mention (@username), hashtag, bot_command, -- url, email, bold (bold text), italic (italic text), code (monowidth -- string), pre (monowidth block), text_link (for clickable text URLs), -- text_mention (for users without usernames) [me_type] :: MessageEntity -> Text -- | Offset in UTF-16 code units to the start of the entity [me_offset] :: MessageEntity -> Int -- | Length of the entity in UTF-16 code units [me_length] :: MessageEntity -> Int -- | For “text_link” only, url that will be opened after user taps on the -- text [me_url] :: MessageEntity -> Maybe Text -- | For “text_mention” only, the mentioned user [me_user] :: MessageEntity -> Maybe User -- | This object represents one size of a photo or a File / -- Sticker thumbnail. data PhotoSize PhotoSize :: Text -> Int -> Int -> Maybe Int -> PhotoSize -- | Unique identifier for this file [photo_file_id] :: PhotoSize -> Text -- | Photo width [photo_width] :: PhotoSize -> Int -- | Photo height [photo_height] :: PhotoSize -> Int -- | File size [photo_file_size] :: PhotoSize -> Maybe Int -- | This object represents an audio file to be treated as music by the -- Telegram clients. data Audio Audio :: Text -> Int -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int -> Audio -- | Unique identifier for this file [audio_file_id] :: Audio -> Text -- | Duration of the audio in seconds as defined by sender [audio_duration] :: Audio -> Int -- | Performer of the audio as defined by sender or by audio tags [audio_performer] :: Audio -> Maybe Text -- | Title of the audio as defined by sender or by audio tags [audio_title] :: Audio -> Maybe Text -- | MIME type of the file as defined by sender [audio_mime_type] :: Audio -> Maybe Text -- | File size [audio_file_size] :: Audio -> Maybe Int -- | This object represents a general file (as opposed to PhotoSize, -- Voice messages and Audio files). data Document Document :: Text -> Maybe PhotoSize -> Maybe Text -> Maybe Text -> Maybe Int -> Document -- | Unique file identifier [doc_file_id] :: Document -> Text -- | Document thumbnail as defined by sender [doc_thumb] :: Document -> Maybe PhotoSize -- | Original filename as defined by sender [doc_file_name] :: Document -> Maybe Text -- | MIME type of the file as defined by sender [doc_mime_type] :: Document -> Maybe Text -- | File size [doc_file_size] :: Document -> Maybe Int -- | This object represents a game. Use BotFather to create and edit games, -- their short names will act as unique identifiers. data Game Game :: Text -> Text -> [PhotoSize] -> Maybe Text -> Maybe [MessageEntity] -> Maybe Animation -> Game -- | Title of the game [game_title] :: Game -> Text -- | Description of the game [game_description] :: Game -> Text -- | Photo that will be displayed in the game message in chats. [game_photo] :: Game -> [PhotoSize] -- | Brief description of the game or high scores included in the game -- message. Can be automatically edited to include current high scores -- for the game when the bot calls setGameScore, or manually edited using -- editMessageText. 0-4096 characters. [game_text] :: Game -> Maybe Text -- | Special entities that appear in text, such as usernames, URLs, bot -- commands, etc. [game_text_entities] :: Game -> Maybe [MessageEntity] -- | Animation that will be displayed in the game message in chats. Upload -- via BotFather [game_animation] :: Game -> Maybe Animation -- | This object represents an animation file to be displayed in the -- message containing a game. data Animation Animation :: Text -> Maybe PhotoSize -> Maybe Text -> Maybe Text -> Maybe Int -> Animation -- | Unique file identifier [anim_file_id] :: Animation -> Text -- | Animation thumbnail as defined by sender [anim_thumb] :: Animation -> Maybe PhotoSize -- | Original animation filename as defined by sender [anim_file_name] :: Animation -> Maybe Text -- | MIME type of the file as defined by sender [anim_mime_type] :: Animation -> Maybe Text -- | File size [anim_file_size] :: Animation -> Maybe Int -- | This object represents a sticker. data Sticker Sticker :: Text -> Int -> Int -> Maybe PhotoSize -> Maybe Text -> Maybe Int -> Sticker -- | Unique identifier for this file [sticker_file_id] :: Sticker -> Text -- | Sticker width [sticker_width] :: Sticker -> Int -- | Sticker height [sticker_height] :: Sticker -> Int -- | Sticker thumbnail in .webp or .jpg format [sticker_thumb] :: Sticker -> Maybe PhotoSize -- | Emoji associated with the sticker [sticker_emoji] :: Sticker -> Maybe Text -- | File size [sticker_file_size] :: Sticker -> Maybe Int -- | This object represents a video file. data Video Video :: Text -> Int -> Int -> Int -> Maybe PhotoSize -> Maybe Text -> Maybe Int -> Video -- | Unique identifier for this file [video_file_id] :: Video -> Text -- | Video width as defined by sender [video_width] :: Video -> Int -- | Video height as defined by sender [video_height] :: Video -> Int -- | Duration of the video in seconds as defined by sender [video_duration] :: Video -> Int -- | Video thumbnail [video_thumb] :: Video -> Maybe PhotoSize -- | MIME type of a file as defined by sender [video_mime_type] :: Video -> Maybe Text -- | File size [video_file_size] :: Video -> Maybe Int -- | This object represents a voice note. data Voice Voice :: Text -> Int -> Maybe Text -> Maybe Int -> Voice -- | Unique identifier for this file [voice_file_id] :: Voice -> Text -- | Duration of the audio in seconds as defined by sender [voice_duration] :: Voice -> Int -- | MIME type of the file as defined by sender [voice_mime_type] :: Voice -> Maybe Text -- | File size [voice_file_size] :: Voice -> Maybe Int -- | This object represents a venue. data Venue Venue :: Location -> Text -> Text -> Maybe Text -> Venue -- | Venue location [venue_location] :: Venue -> Location -- | Name of the venue [venue_title] :: Venue -> Text -- | Address of the venue [venue_address] :: Venue -> Text -- | Foursquare identifier of the venue [venue_foursquare_id] :: Venue -> Maybe Text -- | This object represents a phone contact. data Contact Contact :: Text -> Text -> Maybe Text -> Maybe Int -> Contact -- | Contact's phone number [contact_phone_number] :: Contact -> Text -- | Contact's first name [contact_first_name] :: Contact -> Text -- | Contact's last name [contact_last_name] :: Contact -> Maybe Text -- | Contact's user identifier in Telegram [contact_user_id] :: Contact -> Maybe Int -- | This object represents a point on the map. data Location Location :: Float -> Float -> Location -- | Longitude as defined by sender [longitude] :: Location -> Float -- | Latitude as defined by sender [latitude] :: Location -> Float -- | This object represents an incoming update. Only one of the optional -- parameters can be present in any given update. data Update Update :: Int -> Maybe Message -> Maybe Message -> Maybe Message -> Maybe Message -> Maybe InlineQuery -> Maybe ChosenInlineResult -> Maybe CallbackQuery -> Maybe ShippingQuery -> Maybe PreCheckoutQuery -> Update -- | The update's unique identifier. Update identifiers start from a -- certain positive number and increase sequentially. This ID becomes -- especially handy if you’re using setWebhooks, since it allows -- you to ignore repeated updates or to restore the correct update -- sequence, should they get out of order. [update_id] :: Update -> Int -- | New incoming message of any kind — text, photo, sticker, etc. [message] :: Update -> Maybe Message -- | New version of a message that is known to the bot and was edited [edited_message] :: Update -> Maybe Message -- | New incoming channel post of any kind — text, photo, sticker, etc. [channel_post] :: Update -> Maybe Message -- | New version of a channel post that is known to the bot and was edited [edited_channel_post] :: Update -> Maybe Message -- | New incoming inline query [inline_query] :: Update -> Maybe InlineQuery -- | The result of a inline query that was chosen by a user and sent to -- their chat partner [chosen_inline_result] :: Update -> Maybe ChosenInlineResult -- | This object represents an incoming callback query from a callback -- button in an inline keyboard. If the button that originated the query -- was attached to a message sent by the bot, the field message will be -- presented. If the button was attached to a message sent via the bot -- (in inline mode), the field inline_message_id will be presented. [callback_query] :: Update -> Maybe CallbackQuery -- | New incoming shipping query. Only for invoices with flexible price [shipping_query] :: Update -> Maybe ShippingQuery -- | New incoming pre-checkout query. Contains full information about -- checkout [pre_checkout_query] :: Update -> Maybe PreCheckoutQuery -- | This object represents a file ready to be downloaded. The file can be -- downloaded via the link -- https://api.telegram.org/file/bot<token>/<file_path>. -- It is guaranteed that the link will be valid for at least 1 hour. When -- the link expires, a new one can be requested by calling -- getFile. -- -- Maximum file size to download is 20 MB data File File :: Text -> Maybe Int -> Maybe Text -> File -- | Unique identifier for this file [file_id] :: File -> Text -- | File size, if known [file_size] :: File -> Maybe Int -- | File path. Use -- https://api.telegram.org/file/bot<token>/<file_path> -- to get the file. [file_path] :: File -> Maybe Text -- | This object represent a user's profile pictures. data UserProfilePhotos UserProfilePhotos :: Int -> [[PhotoSize]] -> UserProfilePhotos -- | Total number of profile pictures the target user has [total_count] :: UserProfilePhotos -> Int -- | Requested profile pictures (in up to 4 sizes each) [photos] :: UserProfilePhotos -> [[PhotoSize]] -- | This object represents an incoming inline query. When the user sends -- an empty query, your bot could return some default or trending -- results. data InlineQuery InlineQuery :: Text -> User -> Maybe Location -> Text -> Text -> InlineQuery -- | Unique identifier for this query [query_id] :: InlineQuery -> Text -- | Sender [query_from] :: InlineQuery -> User -- | Sender location, only for bots that request user location [query_location] :: InlineQuery -> Maybe Location -- | Text of the query [query_query] :: InlineQuery -> Text -- | Offset of the results to be returned, can be controlled by the bot [query_offset] :: InlineQuery -> Text -- | This object represents a result of an inline query that was chosen by -- the user and sent to their chat partner. data ChosenInlineResult ChosenInlineResult :: Text -> User -> Maybe Location -> Maybe Text -> Text -> ChosenInlineResult -- | The unique identifier for the result that was chosen [chosen_result_id] :: ChosenInlineResult -> Text -- | The user that chose the result [chosen_from] :: ChosenInlineResult -> User -- | Sender location, only for bots that require user location [chosen_location] :: ChosenInlineResult -> Maybe Location -- | Identifier of the sent inline message. Available only if there is an -- inline keyboard attached to the message. Will be also received in -- callback queries and can be used to edit the message. [chosen_inline_message_id] :: ChosenInlineResult -> Maybe Text -- | The query that was used to obtain the result [chosen_query] :: ChosenInlineResult -> Text data InlineQueryResult -- | Represents a link to an article or web page. InlineQueryResultArticle :: Text -> Maybe Text -> Maybe InputMessageContent -> Maybe InlineKeyboardMarkup -> Maybe Text -> Maybe Bool -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Int -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | URL of the result [iq_res_url] :: InlineQueryResult -> Maybe Text -- | Pass True, if you don't want the URL to be shown in the message [iq_res_hide_url] :: InlineQueryResult -> Maybe Bool -- | Short description of the result [iq_res_description] :: InlineQueryResult -> Maybe Text -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Thumbnail width [iq_res_thumb_width] :: InlineQueryResult -> Maybe Int -- | Thumbnail height [iq_res_thumb_height] :: InlineQueryResult -> Maybe Int -- | Represents a link to a photo. By default, this photo will be sent by -- the user with optional caption. Alternatively, you can use -- input_message_content to send a message with the specified content -- instead of the photo. InlineQueryResultPhoto :: Text -> Text -> Maybe Text -> Maybe Int -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid URL of the photo. Photo must be in jpeg format. Photo size -- must not exceed 5MB [iq_res_photo_url] :: InlineQueryResult -> Text -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Optional. Width of the photo [iq_res_photo_width] :: InlineQueryResult -> Maybe Int -- | Optional. Height of the photo [iq_res_photo_height] :: InlineQueryResult -> Maybe Int -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Short description of the result [iq_res_description] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to an animated GIF file. By default, this animated -- GIF file will be sent by the user with optional caption. -- Alternatively, you can provide message_text to send it instead of the -- animation. InlineQueryResultGif :: Text -> Text -> Maybe Int -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid URL for the GIF file. File size must not exceed 1MB [iq_res_gif_url] :: InlineQueryResult -> Text -- | Width of the GIF [iq_res_gif_width] :: InlineQueryResult -> Maybe Int -- | Height of the GIF [iq_res_gif_height] :: InlineQueryResult -> Maybe Int -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a video animation (H.264/MPEG-4 AVC video without -- sound). By default, this animated MPEG-4 file will be sent by the user -- with optional caption. Alternatively, you can provide message_text to -- send it instead of the animation. InlineQueryResultMpeg4Gif :: Text -> Text -> Maybe Int -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid URL for the MP4 file. File size must not exceed 1MB [iq_res_mpeg4_url] :: InlineQueryResult -> Text -- | Video width [iq_res_mpeg4_width] :: InlineQueryResult -> Maybe Int -- | Video height [iq_res_mpeg4_height] :: InlineQueryResult -> Maybe Int -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents link to a page containing an embedded video player or a -- video file. InlineQueryResultVideo :: Text -> Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid URL for the embedded video player or video file [iq_res_video_url] :: InlineQueryResult -> Text -- | Mime type of the content of video url, “texthtml” or “videomp4” [iq_res_mime_type] :: InlineQueryResult -> Text -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Video width [iq_res_video_width] :: InlineQueryResult -> Maybe Int -- | Video height [iq_res_video_height] :: InlineQueryResult -> Maybe Int -- | Video duration in seconds [iq_res_video_duration] :: InlineQueryResult -> Maybe Int -- | Short description of the result [iq_res_description] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to an mp3 audio file. By default, this audio file -- will be sent by the user. Alternatively, you can use -- input_message_content to send a message with the specified content -- instead of the audio. InlineQueryResultAudio :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid URL for the audio file [iq_res_audio_url] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Performer [iq_res_performer] :: InlineQueryResult -> Maybe Text -- | Audio duration in seconds [iq_res_audio_duration] :: InlineQueryResult -> Maybe Int -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a voice recording in an .ogg container encoded -- with OPUS. By default, this voice recording will be sent by the user. -- Alternatively, you can use input_message_content to send a message -- with the specified content instead of the the voice message. InlineQueryResultVoice :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid URL for the voice recording [iq_res_voice_url] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Recording duration in seconds [iq_res_voice_duration] :: InlineQueryResult -> Maybe Int -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a file. By default, this file will be sent by the -- user with an optional caption. Alternatively, you can use -- input_message_content to send a message with the specified content -- instead of the file. Currently, only .PDF and .ZIP files can be sent -- using this method. InlineQueryResultDocument :: Text -> Maybe Text -> Maybe Text -> Text -> Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> Maybe Text -> Maybe Int -> Maybe Int -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | A valid URL for the file [iq_res_document_url] :: InlineQueryResult -> Text -- | Mime type of the content of video url, “texthtml” or “videomp4” [iq_res_mime_type] :: InlineQueryResult -> Text -- | Short description of the result [iq_res_description] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Thumbnail width [iq_res_thumb_width] :: InlineQueryResult -> Maybe Int -- | Thumbnail height [iq_res_thumb_height] :: InlineQueryResult -> Maybe Int -- | Represents a location on a map. By default, the location will be sent -- by the user. Alternatively, you can use input_message_content to send -- a message with the specified content instead of the location. InlineQueryResultLocation :: Text -> Float -> Float -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> Maybe Text -> Maybe Int -> Maybe Int -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | Location latitude in degrees [iq_res_latitude] :: InlineQueryResult -> Float -- | Location longitude in degrees [iq_res_longitude] :: InlineQueryResult -> Float -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Thumbnail width [iq_res_thumb_width] :: InlineQueryResult -> Maybe Int -- | Thumbnail height [iq_res_thumb_height] :: InlineQueryResult -> Maybe Int -- | Represents a venue. By default, the venue will be sent by the user. -- Alternatively, you can use input_message_content to send a message -- with the specified content instead of the venue. InlineQueryResultVenue :: Text -> Float -> Float -> Maybe Text -> Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> Maybe Text -> Maybe Int -> Maybe Int -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | Location latitude in degrees [iq_res_latitude] :: InlineQueryResult -> Float -- | Location longitude in degrees [iq_res_longitude] :: InlineQueryResult -> Float -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Address of the venue [iq_res_address] :: InlineQueryResult -> Text -- | Foursquare identifier of the venue if known [iq_res_foursquare_id] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Thumbnail width [iq_res_thumb_width] :: InlineQueryResult -> Maybe Int -- | Thumbnail height [iq_res_thumb_height] :: InlineQueryResult -> Maybe Int -- | Represents a link to a photo stored on the Telegram servers. By -- default, this photo will be sent by the user with an optional caption. -- Alternatively, you can use input_message_content to send a message -- with the specified content instead of the photo. InlineQueryResultContact :: Text -> Text -> Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> Maybe Text -> Maybe Int -> Maybe Int -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | Contact's phone number [iq_res_phone_number] :: InlineQueryResult -> Text -- | Contact's first name [iq_res_first_name] :: InlineQueryResult -> Text -- | Contact's last name [iq_res_last_name] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Url of the thumbnail for the result [iq_res_thumb_url] :: InlineQueryResult -> Maybe Text -- | Thumbnail width [iq_res_thumb_width] :: InlineQueryResult -> Maybe Int -- | Thumbnail height [iq_res_thumb_height] :: InlineQueryResult -> Maybe Int -- | Represents a Game. InlineQueryResultGame :: Text -> Text -> Maybe InlineKeyboardMarkup -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | Short name of the game [iq_res_game_short_name] :: InlineQueryResult -> Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Represents a link to a photo stored on the Telegram servers. By -- default, this photo will be sent by the user with an optional caption. -- Alternatively, you can use input_message_content to send a message -- with the specified content instead of the photo. InlineQueryResultCachedPhoto :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid file identifier of the photo [iq_res_photo_file_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Short description of the result [iq_res_description] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to an animated GIF file stored on the Telegram -- servers. By default, this animated GIF file will be sent by the user -- with an optional caption. Alternatively, you can use -- input_message_content to send a message with specified content instead -- of the animation. InlineQueryResultCachedGif :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid file identifier for the GIF file [iq_res_gif_file_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a video animation (H.264/MPEG-4 AVC video without -- sound) stored on the Telegram servers. By default, this animated -- MPEG-4 file will be sent by the user with an optional caption. -- Alternatively, you can use input_message_content to send a message -- with the specified content instead of the animation. InlineQueryResultCachedMpeg4Gif :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid file identifier for the MP4 file [iq_res_mpeg4_file_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a sticker stored on the Telegram servers. By -- default, this sticker will be sent by the user. Alternatively, you can -- use input_message_content to send a message with the specified content -- instead of the sticker. InlineQueryResultCachedSticker :: Text -> Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid file identifier of the sticker [iq_res_sticker_file_id] :: InlineQueryResult -> Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a file stored on the Telegram servers. By -- default, this file will be sent by the user with an optional caption. -- Alternatively, you can use input_message_content to send a message -- with the specified content instead of the file. Currently, only -- pdf-files and zip archives can be sent using this method. InlineQueryResultCachedDocument :: Text -> Maybe Text -> Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | A valid file identifier for the file [iq_res_document_file_id] :: InlineQueryResult -> Text -- | Short description of the result [iq_res_description] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a video file stored on the Telegram servers. By -- default, this video file will be sent by the user with an optional -- caption. Alternatively, you can use input_message_content to send a -- message with the specified content instead of the video. InlineQueryResultCachedVideo :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid file identifier for the video file [iq_res_video_file_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Short description of the result [iq_res_description] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to a voice message stored on the Telegram servers. -- By default, this voice message will be sent by the user. -- Alternatively, you can use input_message_content to send a message -- with the specified content instead of the voice message. InlineQueryResultCachedVoice :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid file identifier for the voice message [iq_res_voice_file_id] :: InlineQueryResult -> Text -- | Title of the result [iq_res_title] :: InlineQueryResult -> Maybe Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent -- | Represents a link to an mp3 audio file stored on the Telegram servers. -- By default, this audio file will be sent by the user. Alternatively, -- you can use input_message_content to send a message with the specified -- content instead of the audio. InlineQueryResultCachedAudio :: Text -> Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> Maybe InputMessageContent -> InlineQueryResult -- | Unique identifier for this result, 1-64 Bytes [iq_res_id] :: InlineQueryResult -> Text -- | A valid file identifier for the audio file [iq_res_audio_file_id] :: InlineQueryResult -> Text -- | Caption of the photo to be sent, 0-200 characters [iq_res_caption] :: InlineQueryResult -> Maybe Text -- | Inline keyboard attached to the message [iq_res_reply_markup] :: InlineQueryResult -> Maybe InlineKeyboardMarkup -- | Content of the message to be sent [iq_res_input_message_content] :: InlineQueryResult -> Maybe InputMessageContent data InlineKeyboardMarkup InlineKeyboardMarkup :: [[InlineKeyboardButton]] -> InlineKeyboardMarkup [inline_keyboard] :: InlineKeyboardMarkup -> [[InlineKeyboardButton]] data InlineKeyboardButton InlineKeyboardButton :: Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe CallbackGame -> Maybe Text -> InlineKeyboardButton [ikb_text] :: InlineKeyboardButton -> Text [ikb_url] :: InlineKeyboardButton -> Maybe Text [ikb_callback_data] :: InlineKeyboardButton -> Maybe Text [ikb_switch_inline_query] :: InlineKeyboardButton -> Maybe Text [ikb_callback_game] :: InlineKeyboardButton -> Maybe CallbackGame -- | If set, pressing the button will insert the bot‘s username and the -- specified inline query in the current chat's input field. Can be -- empty, in which case only the bot’s username will be inserted. [ikb_switch_inline_query_current_chat] :: InlineKeyboardButton -> Maybe Text data CallbackGame CallbackGame :: CallbackGame data CallbackQuery CallbackQuery :: Text -> User -> Maybe Message -> Maybe Text -> Text -> Maybe Text -> Maybe Text -> CallbackQuery [cq_id] :: CallbackQuery -> Text [cq_from] :: CallbackQuery -> User [cq_message] :: CallbackQuery -> Maybe Message [cq_inline_message_id] :: CallbackQuery -> Maybe Text [cq_chat_instance] :: CallbackQuery -> Text [cq_data] :: CallbackQuery -> Maybe Text [cq_game_short_name] :: CallbackQuery -> Maybe Text -- | Type of chat. data ChatType Private :: ChatType Group :: ChatType Supergroup :: ChatType Channel :: ChatType -- | Parse mode for text message data ParseMode Markdown :: ParseMode HTML :: ParseMode -- | This object represents the content of a message to be sent as a result -- of an inline query. data InputMessageContent -- | Represents the content of a text message to be sent as the result of -- an inline query. InputTextMessageContent :: Text -> Maybe ParseMode -> Maybe Bool -> InputMessageContent -- | Text of the message to be sent, 1-4096 characters [imc_message_text] :: InputMessageContent -> Text -- | Send Markdown or HTML, if you want Telegram apps to show -- bold, italic, fixed-width text or inline URLs in your bot's message. [imc_parse_mode] :: InputMessageContent -> Maybe ParseMode -- | Disables link previews for links in the sent message [imc_disable_web_page_preview] :: InputMessageContent -> Maybe Bool -- | Represents the content of a location message to be sent as the result -- of an inline query. InputLocationMessageContent :: Float -> Float -> InputMessageContent -- | Latitude of the location in degrees [imc_latitude] :: InputMessageContent -> Float -- | Longitude of the location in degrees [imc_longitude] :: InputMessageContent -> Float -- | Represents the content of a venue message to be sent as the result of -- an inline query. InputVenueMessageContent :: Float -> Float -> Text -> Text -> Maybe Text -> InputMessageContent -- | Latitude of the location in degrees [imc_latitude] :: InputMessageContent -> Float -- | Longitude of the location in degrees [imc_longitude] :: InputMessageContent -> Float -- | Name of the venue [imc_title] :: InputMessageContent -> Text -- | Address of the venue [imc_address] :: InputMessageContent -> Text -- | Foursquare identifier of the venue, if known [imc_foursquare_id] :: InputMessageContent -> Maybe Text -- | Represents the content of a contact message to be sent as the result -- of an inline query. InputContactMessageContent :: Text -> Text -> Maybe Text -> InputMessageContent -- | Contact's phone number [imc_phone_number] :: InputMessageContent -> Text -- | Contact's first name [imc_first_name] :: InputMessageContent -> Text -- | Contact's last name [imc_last_name] :: InputMessageContent -> Maybe Text data KeyboardButton KeyboardButton :: Text -> Maybe Bool -> Maybe Bool -> KeyboardButton -- | Text of the button. If none of the optional fields are used, it will -- be sent to the bot as a message when the button is pressed [kb_text] :: KeyboardButton -> Text -- | If True, the user's phone number will be sent as a contact when the -- button is pressed. Available in private chats only [kb_request_contact] :: KeyboardButton -> Maybe Bool -- | If True, the user's current location will be sent when the button is -- pressed. Available in private chats only [kb_request_location] :: KeyboardButton -> Maybe Bool data WebhookInfo WebhookInfo :: Text -> Bool -> Int -> Maybe Int -> Maybe Text -> Maybe Int -> Maybe [Text] -> WebhookInfo -- | Webhook URL, may be empty if webhook is not set up [whi_url] :: WebhookInfo -> Text -- | True, if a custom certificate was provided for webhook certificate -- checks [whi_has_custom_certificate] :: WebhookInfo -> Bool -- | Number of updates awaiting delivery [whi_pending_update_count] :: WebhookInfo -> Int -- | Unix time for the most recent error that happened when trying to -- deliver an update via webhook [whi_last_error_date] :: WebhookInfo -> Maybe Int -- | Error message in human-readable format for the most recent error that -- happened when trying to deliver an update via webhook [whi_last_error_message] :: WebhookInfo -> Maybe Text -- | Maximum allowed number of simultaneous HTTPS connections to the -- webhook for update delivery [whi_max_connections] :: WebhookInfo -> Maybe Int -- | A list of update types the bot is subscribed to. Defaults to all -- update types [whi_allowed_updates] :: WebhookInfo -> Maybe [Text] data LabeledPrice -- | This object represents a portion of the price for goods or services. LabeledPrice :: Text -> Int -> LabeledPrice -- | Portion label [lp_label] :: LabeledPrice -> Text -- | Total price in the smallest units of the currency (integer, not -- floatdouble). For example, for a price of US$ 1.45 pass amount = -- 145. See the exp parameter in -- <https:core.telegram.orgbotspaymentscurrencies.json -- currencies.json>, it shows the number of digits past the decimal -- point for each currency (2 for the majority of currencies). [lp_amount] :: LabeledPrice -> Int newtype CurrencyCode CurrencyCode :: Text -> CurrencyCode data Invoice -- | This object contains basic information about an invoice. Invoice :: Text -> Text -> Text -> CurrencyCode -> Int -> Invoice -- | Product name [inv_title] :: Invoice -> Text -- | Product description [inv_description] :: Invoice -> Text -- | Unique bot deep-linking parameter that can be used to generate this -- invoice [inv_start_parameter] :: Invoice -> Text -- | Three-letter ISO 4217 currency code [inv_currency] :: Invoice -> CurrencyCode -- | Total price in the smallest units of the currency (integer, not -- floatdouble). For example, for a price of US$ 1.45 pass amount = -- 145. See the exp parameter in -- <https:core.telegram.orgbotspaymentscurrencies.json -- currencies.json>, it shows the number of digits past the decimal -- point for each currency (2 for the majority of currencies). [inv_total_amount] :: Invoice -> Int data ShippingAddress ShippingAddress :: Text -> Maybe Text -> Text -> Text -> Text -> Text -> ShippingAddress -- | ISO 3166-1 alpha-2 country code [ship_addr_country_code] :: ShippingAddress -> Text -- | State, if applicable [ship_addr_state] :: ShippingAddress -> Maybe Text -- | City [ship_addr_city] :: ShippingAddress -> Text -- | First line for the address [ship_addr_street_line1] :: ShippingAddress -> Text -- | Second line for the address [ship_addr_street_line2] :: ShippingAddress -> Text -- | Address post code [ship_addr_post_code] :: ShippingAddress -> Text data OrderInfo OrderInfo :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe ShippingAddress -> OrderInfo -- | User name [ord_info_name] :: OrderInfo -> Maybe Text -- | User's phone number [ord_info_phone_number] :: OrderInfo -> Maybe Text -- | User email [ord_info_email] :: OrderInfo -> Maybe Text -- | User shipping address [ord_info_shipping_address] :: OrderInfo -> Maybe ShippingAddress data ShippingOption ShippingOption :: Text -> Text -> [LabeledPrice] -> ShippingOption -- | Shipping option identifier [ship_opt_id] :: ShippingOption -> Text -- | Option title [ship_opt_title] :: ShippingOption -> Text -- | List of price portions [ship_opt_prices] :: ShippingOption -> [LabeledPrice] data SuccessfulPayment SuccessfulPayment :: CurrencyCode -> Int -> Text -> Maybe Text -> Maybe OrderInfo -> Text -> Text -> SuccessfulPayment -- | Three-letter ISO 4217 currency code [suc_pmnt_currency] :: SuccessfulPayment -> CurrencyCode -- | Total price in the smallest units of the currency (integer, not -- floatdouble). For example, for a price of US$ 1.45 pass amount = -- 145. See the exp parameter in -- <https:core.telegram.orgbotspaymentscurrencies.json -- currencies.json>, it shows the number of digits past the decimal -- point for each currency (2 for the majority of currencies). [suc_pmnt_total_amount] :: SuccessfulPayment -> Int -- | Bot specified invoice payload [suc_pmnt_invoice_payload] :: SuccessfulPayment -> Text -- | Identifier of the shipping option chosen by the user [suc_pmnt_shipping_option_id] :: SuccessfulPayment -> Maybe Text -- | Order info provided by the user [suc_pmnt_order_info] :: SuccessfulPayment -> Maybe OrderInfo -- | Telegram payment identifier [suc_pmnt_telegram_payment_charge_id] :: SuccessfulPayment -> Text -- | Provider payment identifier [suc_pmnt_provider_payment_charge_id] :: SuccessfulPayment -> Text data ShippingQuery ShippingQuery :: Text -> User -> Text -> ShippingAddress -> ShippingQuery -- | Unique query identifier [ship_q_id] :: ShippingQuery -> Text -- | User who sent the query [ship_q_from] :: ShippingQuery -> User -- | Bot specified invoice payload [ship_q_invoice_payload] :: ShippingQuery -> Text -- | User specified shipping address [ship_q_shipping_address] :: ShippingQuery -> ShippingAddress data PreCheckoutQuery PreCheckoutQuery :: Text -> User -> CurrencyCode -> Int -> Text -> Maybe Text -> Maybe OrderInfo -> PreCheckoutQuery -- | Unique query identifier [pre_che_id] :: PreCheckoutQuery -> Text -- | User who sent the query [pre_che_from] :: PreCheckoutQuery -> User -- | Three-letter ISO 4217 currency code [pre_che_currency] :: PreCheckoutQuery -> CurrencyCode -- | Total price in the smallest units of the currency (integer, not -- floatdouble). For example, for a price of US$ 1.45 pass amount = -- 145. See the exp parameter in -- <https:core.telegram.orgbotspaymentscurrencies.json -- currencies.json>, it shows the number of digits past the decimal -- point for each currency (2 for the majority of currencies). [pre_che_total_amount] :: PreCheckoutQuery -> Int -- | Bot specified invoice payload [pre_che_invoice_payload] :: PreCheckoutQuery -> Text -- | Identifier of the shipping option chosen by the user [pre_che_shipping_option_id] :: PreCheckoutQuery -> Maybe Text -- | Order info provided by the user [pre_che_order_info] :: PreCheckoutQuery -> Maybe OrderInfo inlineKeyboardButton :: Text -> InlineKeyboardButton keyboardButton :: Text -> KeyboardButton inlineQueryResultArticle :: Text -> Text -> InputMessageContent -> InlineQueryResult inlineQueryResultAudio :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultContact :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultDocument :: Text -> Text -> Text -> Text -> InlineQueryResult inlineQueryResultGif :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultLocation :: Text -> Float -> Float -> Text -> InlineQueryResult inlineQueryResultMpeg4Gif :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultPhoto :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultVenue :: Text -> Float -> Float -> Text -> Text -> InlineQueryResult inlineQueryResultVideo :: Text -> Text -> Text -> Text -> Text -> InlineQueryResult inlineQueryResultVoice :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultCachedAudio :: Text -> Text -> InlineQueryResult inlineQueryResultCachedDocument :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultCachedGif :: Text -> Text -> InlineQueryResult inlineQueryResultCachedMpeg4Gif :: Text -> Text -> InlineQueryResult inlineQueryResultGame :: Text -> Text -> InlineQueryResult inlineQueryResultCachedPhoto :: Text -> Text -> InlineQueryResult inlineQueryResultCachedSticker :: Text -> Text -> InlineQueryResult inlineQueryResultCachedVideo :: Text -> Text -> Text -> InlineQueryResult inlineQueryResultCachedVoice :: Text -> Text -> Text -> InlineQueryResult instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Update instance GHC.Show.Show Web.Telegram.API.Bot.Data.Update instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Update instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Update instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.PreCheckoutQuery instance GHC.Show.Show Web.Telegram.API.Bot.Data.PreCheckoutQuery instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.ShippingQuery instance GHC.Show.Show Web.Telegram.API.Bot.Data.ShippingQuery instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.CallbackQuery instance GHC.Show.Show Web.Telegram.API.Bot.Data.CallbackQuery instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Message instance GHC.Show.Show Web.Telegram.API.Bot.Data.Message instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Message instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Message instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.SuccessfulPayment instance GHC.Show.Show Web.Telegram.API.Bot.Data.SuccessfulPayment instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.ShippingOption instance GHC.Show.Show Web.Telegram.API.Bot.Data.ShippingOption instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.OrderInfo instance GHC.Show.Show Web.Telegram.API.Bot.Data.OrderInfo instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.ShippingAddress instance GHC.Show.Show Web.Telegram.API.Bot.Data.ShippingAddress instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Invoice instance GHC.Show.Show Web.Telegram.API.Bot.Data.Invoice instance GHC.Classes.Ord Web.Telegram.API.Bot.Data.CurrencyCode instance GHC.Classes.Eq Web.Telegram.API.Bot.Data.CurrencyCode instance GHC.Show.Show Web.Telegram.API.Bot.Data.CurrencyCode instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.LabeledPrice instance GHC.Show.Show Web.Telegram.API.Bot.Data.LabeledPrice instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.WebhookInfo instance GHC.Show.Show Web.Telegram.API.Bot.Data.WebhookInfo instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.KeyboardButton instance GHC.Show.Show Web.Telegram.API.Bot.Data.KeyboardButton instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Venue instance GHC.Show.Show Web.Telegram.API.Bot.Data.Venue instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Game instance GHC.Show.Show Web.Telegram.API.Bot.Data.Game instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.MessageEntity instance GHC.Show.Show Web.Telegram.API.Bot.Data.MessageEntity instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.ChatMember instance GHC.Show.Show Web.Telegram.API.Bot.Data.ChatMember instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.UserProfilePhotos instance GHC.Show.Show Web.Telegram.API.Bot.Data.UserProfilePhotos instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.UserProfilePhotos instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.UserProfilePhotos instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.File instance GHC.Show.Show Web.Telegram.API.Bot.Data.File instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.File instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.File instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.InlineQuery instance GHC.Show.Show Web.Telegram.API.Bot.Data.InlineQuery instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.ChosenInlineResult instance GHC.Show.Show Web.Telegram.API.Bot.Data.ChosenInlineResult instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Location instance GHC.Show.Show Web.Telegram.API.Bot.Data.Location instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Location instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Location instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.InlineQueryResult instance GHC.Show.Show Web.Telegram.API.Bot.Data.InlineQueryResult instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.InlineKeyboardMarkup instance GHC.Show.Show Web.Telegram.API.Bot.Data.InlineKeyboardMarkup instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.InlineKeyboardMarkup instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.InlineKeyboardMarkup instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.InlineKeyboardButton instance GHC.Show.Show Web.Telegram.API.Bot.Data.InlineKeyboardButton instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.CallbackGame instance GHC.Show.Show Web.Telegram.API.Bot.Data.CallbackGame instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.InputMessageContent instance GHC.Show.Show Web.Telegram.API.Bot.Data.InputMessageContent instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Voice instance GHC.Show.Show Web.Telegram.API.Bot.Data.Voice instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Video instance GHC.Show.Show Web.Telegram.API.Bot.Data.Video instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Sticker instance GHC.Show.Show Web.Telegram.API.Bot.Data.Sticker instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Animation instance GHC.Show.Show Web.Telegram.API.Bot.Data.Animation instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Document instance GHC.Show.Show Web.Telegram.API.Bot.Data.Document instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Audio instance GHC.Show.Show Web.Telegram.API.Bot.Data.Audio instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.PhotoSize instance GHC.Show.Show Web.Telegram.API.Bot.Data.PhotoSize instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.ParseMode instance GHC.Show.Show Web.Telegram.API.Bot.Data.ParseMode instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Chat instance GHC.Show.Show Web.Telegram.API.Bot.Data.Chat instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.ChatType instance GHC.Show.Show Web.Telegram.API.Bot.Data.ChatType instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.Contact instance GHC.Show.Show Web.Telegram.API.Bot.Data.Contact instance GHC.Generics.Generic Web.Telegram.API.Bot.Data.User instance GHC.Show.Show Web.Telegram.API.Bot.Data.User instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.User instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.User instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Contact instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Contact instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Chat instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Chat instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.ChatType instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.ChatType instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.ParseMode instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.ParseMode instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.PhotoSize instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.PhotoSize instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Audio instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Audio instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Document instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Document instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Game instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Game instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Animation instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Animation instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Sticker instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Sticker instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Video instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Video instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Voice instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Voice instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.InlineQuery instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.InlineQuery instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.ChosenInlineResult instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.ChosenInlineResult instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.InputMessageContent instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.InputMessageContent instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.InlineQueryResult instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.InlineQueryResult instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.InlineKeyboardButton instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.InlineKeyboardButton instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.CallbackGame instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.CallbackGame instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.CallbackQuery instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.CallbackQuery instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.ChatMember instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.ChatMember instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.MessageEntity instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.MessageEntity instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Venue instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Venue instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.KeyboardButton instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.KeyboardButton instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.WebhookInfo instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.WebhookInfo instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.LabeledPrice instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.LabeledPrice instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.CurrencyCode instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.CurrencyCode instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.Invoice instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.Invoice instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.ShippingAddress instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.ShippingAddress instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.OrderInfo instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.OrderInfo instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.ShippingOption instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.ShippingOption instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.SuccessfulPayment instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.SuccessfulPayment instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.ShippingQuery instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.ShippingQuery instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Data.PreCheckoutQuery instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Data.PreCheckoutQuery -- | This module contains responses from Telegram Bot API module Web.Telegram.API.Bot.Responses data Response a Response :: a -> Maybe ResponseParameters -> Response a [result] :: Response a -> a [parameters] :: Response a -> Maybe ResponseParameters data ResponseParameters ResponseParameters :: Maybe Int64 -> Maybe Int -> ResponseParameters -- | The group has been migrated to a supergroup with the specified -- identifier. This number may be greater than 32 bits and some -- programming languages may have difficulty/silent defects in -- interpreting it. But it is smaller than 52 bits, so a signed 64 bit -- integer or double-precision float type are safe for storing this -- identifier. [res_migrate_to_chat_id] :: ResponseParameters -> Maybe Int64 -- | In case of exceeding flood control, the number of seconds left to wait -- before the request can be repeated [res_retry_after] :: ResponseParameters -> Maybe Int -- | This object represents getMe response type GetMeResponse = Response User -- | This object represents message response type MessageResponse = Response Message -- | This object represents sendChatAction response type ChatActionResponse = Response Bool -- | This object represents getUpdates response type UpdatesResponse = Response [Update] -- | This object represents file response type FileResponse = Response File -- | This object represents user profile photos response type UserProfilePhotosResponse = Response UserProfilePhotos -- | This object represents setWebhook response type SetWebhookResponse = Response Bool -- | This object represents answerInlineQuery response type InlineQueryResponse = Response Bool -- | This object represents answerCallbackQuery response type CallbackQueryResponse = Response Bool -- | This object represents kickChatMember response type KickChatMemberResponse = Response Bool type LeaveChatResponse = Response Bool -- | This object represents unbanChatMember response type UnbanChatMemberResponse = Response Bool type GetChatResponse = Response Chat type GetChatAdministratorsResponse = Response [ChatMember] type GetChatMembersCountResponse = Response Int type GetChatMemberResponse = Response ChatMember type GetWebhookInfoResponse = Response WebhookInfo type AnswerShippingQueryResponse = Response Bool type AnswerPreCheckoutQueryResponse = Response Bool instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Web.Telegram.API.Bot.Responses.Response a) instance GHC.Generics.Generic (Web.Telegram.API.Bot.Responses.Response a) instance GHC.Show.Show a => GHC.Show.Show (Web.Telegram.API.Bot.Responses.Response a) instance GHC.Generics.Generic Web.Telegram.API.Bot.Responses.ResponseParameters instance GHC.Show.Show Web.Telegram.API.Bot.Responses.ResponseParameters instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Responses.ResponseParameters module Web.Telegram.API.Bot.API.Get -- | A simple method for testing your bot's auth token. Requires no -- parameters. Returns basic information about the bot in form of a -- User object. getMe :: Token -> Manager -> IO (Either ServantError GetMeResponse) -- | See getMe getMeM :: TelegramClient GetMeResponse -- | Use this method to get basic info about a file and prepare it for -- downloading. For the moment, bots can download files of up to 20MB in -- size. On success, a File object is returned. The file can -- then be downloaded via the link -- https://api.telegram.org/file/bot<token>/<file_path>, -- where file_path is taken from the response. It is -- guaranteed that the link will be valid for at least 1 hour. When the -- link expires, a new one can be requested by calling getFile again. getFile :: Token -> Text -> Manager -> IO (Either ServantError FileResponse) -- | See getFile getFileM :: Text -> TelegramClient FileResponse -- | Use this method to get a list of profile pictures for a user. Returns -- a UserProfilePhotos object. getUserProfilePhotos :: Token -> Integer -> Maybe Int -> Maybe Int -> Manager -> IO (Either ServantError UserProfilePhotosResponse) -- | See getUserProfilePhotos getUserProfilePhotosM :: Integer -> Maybe Int -> Maybe Int -> TelegramClient UserProfilePhotosResponse -- | Telegram Bot API type TelegramBotGetAPI = (TelegramToken :> ("getMe" :> Get '[JSON] GetMeResponse)) :<|> ((TelegramToken :> ("getFile" :> (QueryParam "file_id" Text :> Get '[JSON] FileResponse))) :<|> (TelegramToken :> ("getUserProfilePhotos" :> (QueryParam "user_id" Integer :> (QueryParam "offset" Int :> (QueryParam "limit" Int :> Get '[JSON] UserProfilePhotosResponse)))))) -- | Proxy for Thelegram Bot API getApi :: Proxy TelegramBotGetAPI module Web.Telegram.API.Bot.API.Chats -- | Use this method to kick a user from a group or a supergroup. In the -- case of supergroups, the user will not be able to return to the group -- on their own using invite links, etc., unless unbanned first. The bot -- must be an administrator in the group for this to work. kickChatMember :: Token -> Text -> Int -> Manager -> IO (Either ServantError KickChatMemberResponse) -- | See kickChatMember kickChatMemberM :: Text -> Int -> TelegramClient KickChatMemberResponse -- | Use this method for your bot to leave a group, supergroup or channel. -- Returns True on success. leaveChat :: Token -> Text -> Manager -> IO (Either ServantError LeaveChatResponse) -- | See leaveChat leaveChatM :: Text -> TelegramClient LeaveChatResponse -- | Use this method to unban a previously kicked user in a supergroup. The -- user will not return to the group automatically, but will be able to -- join via link, etc. The bot must be an administrator in the group for -- this to work. unbanChatMember :: Token -> Text -> Int -> Manager -> IO (Either ServantError UnbanChatMemberResponse) -- | See unbanChatMember unbanChatMemberM :: Text -> Int -> TelegramClient UnbanChatMemberResponse -- | Use this method to get up to date information about the chat (current -- name of the user for one-on-one conversations, current username of a -- user, group or channel, etc.) getChat :: Token -> Text -> Manager -> IO (Either ServantError GetChatResponse) -- | See getChat getChatM :: Text -> TelegramClient GetChatResponse -- | Use this method to get a list of administrators in a chat. On success, -- returns an Array of ChatMember objects that contains -- information about all chat administrators except other bots. If the -- chat is a group or a supergroup and no administrators were appointed, -- only the creator will be returned. getChatAdministrators :: Token -> Text -> Manager -> IO (Either ServantError GetChatAdministratorsResponse) -- | See getChatAdministrators getChatAdministratorsM :: Text -> TelegramClient GetChatAdministratorsResponse -- | Use this method to get the number of members in a chat. Returns -- Int on success. getChatMembersCount :: Token -> Text -> Manager -> IO (Either ServantError GetChatMembersCountResponse) -- | See getChatMembersCount getChatMembersCountM :: Text -> TelegramClient GetChatMembersCountResponse -- | Use this method to get information about a member of a chat. Returns a -- ChatMember object on success. getChatMember :: Token -> Text -> Int -> Manager -> IO (Either ServantError GetChatMemberResponse) -- | See getChatMember getChatMemberM :: Text -> Int -> TelegramClient GetChatMemberResponse -- | Telegram Bot API type TelegramBotChatsAPI = (TelegramToken :> ("kickChatMember" :> (QueryParam "chat_id" Text :> (QueryParam "user_id" Int :> Post '[JSON] KickChatMemberResponse)))) :<|> ((TelegramToken :> ("leaveChat" :> (QueryParam "chat_id" Text :> Post '[JSON] LeaveChatResponse))) :<|> ((TelegramToken :> ("unbanChatMember" :> (QueryParam "chat_id" Text :> (QueryParam "user_id" Int :> Post '[JSON] UnbanChatMemberResponse)))) :<|> ((TelegramToken :> ("getChat" :> (QueryParam "chat_id" Text :> Post '[JSON] GetChatResponse))) :<|> ((TelegramToken :> ("getChatAdministrators" :> (QueryParam "chat_id" Text :> Post '[JSON] GetChatAdministratorsResponse))) :<|> ((TelegramToken :> ("getChatMembersCount" :> (QueryParam "chat_id" Text :> Post '[JSON] GetChatMembersCountResponse))) :<|> (TelegramToken :> ("getChatMember" :> (QueryParam "chat_id" Text :> (QueryParam "user_id" Int :> Post '[JSON] GetChatMemberResponse))))))))) -- | Proxy for Thelegram Bot API to administrate chats chatsApi :: Proxy TelegramBotChatsAPI -- | This module contains data objects which represents requests to -- Telegram Bot API module Web.Telegram.API.Bot.Requests -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) data ChatId ChatId :: Int64 -> ChatId ChatChannel :: Text -> ChatId -- | This object represents request for sendMessage data SendMessageRequest SendMessageRequest :: ChatId -> Text -> Maybe ParseMode -> Maybe Bool -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendMessageRequest -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [message_chat_id] :: SendMessageRequest -> ChatId -- | Text of the message to be sent [message_text] :: SendMessageRequest -> Text -- | Send Markdown, if you want Telegram apps to show bold, italic -- and inline URLs in your bot's message [message_parse_mode] :: SendMessageRequest -> Maybe ParseMode -- | Disables link previews for links in this message [message_disable_web_page_preview] :: SendMessageRequest -> Maybe Bool -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [message_disable_notification] :: SendMessageRequest -> Maybe Bool -- | If the message is a reply, ID of the original message [message_reply_to_message_id] :: SendMessageRequest -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [message_reply_markup] :: SendMessageRequest -> Maybe ReplyKeyboard -- | This object represents request for forwardMessage data ForwardMessageRequest ForwardMessageRequest :: ChatId -> ChatId -> Maybe Bool -> Int -> ForwardMessageRequest -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [forward_chat_id] :: ForwardMessageRequest -> ChatId -- | Unique identifier for the chat where the original message was sent (or -- channel username in the format @channelusername) [forward_from_chat_id] :: ForwardMessageRequest -> ChatId -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [forward_disable_notification] :: ForwardMessageRequest -> Maybe Bool -- | Unique message identifier [forward_message_id] :: ForwardMessageRequest -> Int -- | This object represents data (image, video, ...) with mime type to -- upload. data FileUpload FileUpload :: Maybe MimeType -> FileUploadContent -> FileUpload -- | Mime type of the upload. [fileUpload_type] :: FileUpload -> Maybe MimeType -- | The payload/source to upload. [fileUpload_content] :: FileUpload -> FileUploadContent -- | This object represents data (image, video, ...) to upload. data FileUploadContent FileUploadFile :: FilePath -> FileUploadContent FileUploadBS :: ByteString -> FileUploadContent FileUploadLBS :: ByteString -> FileUploadContent -- | This object represents request for setWebhookWithCertificate data SetWebhookRequest SetWebhookRequest :: Text -> FileUpload -> Maybe Int -> SetWebhookRequest -- | HTTPS url to send updates to. Use setWebhook function and an -- empty string to remove webhook integration [webhook_url] :: SetWebhookRequest -> Text -- | Upload your public key certificate so that the root certificate in use -- can be checked. [webhook_certificate] :: SetWebhookRequest -> FileUpload [webhook_max_connections] :: SetWebhookRequest -> Maybe Int SetWebhookWithoutCertRequest :: Text -> Maybe Int -> Maybe [Text] -> SetWebhookRequest -- | HTTPS url to send updates to. Use setWebhook function and an -- empty string to remove webhook integration [webhook_url] :: SetWebhookRequest -> Text [webhook_max_connections] :: SetWebhookRequest -> Maybe Int [webhook_allowed_updates] :: SetWebhookRequest -> Maybe [Text] data GetUpdatesRequest GetUpdatesRequest :: Maybe Int -> Maybe Int -> Maybe Int -> Maybe [Text] -> GetUpdatesRequest -- | Identifier of the first update to be returned. Must be greater by one -- than the highest among the identifiers of previously received updates. -- By default, updates starting with the earliest unconfirmed update are -- returned. An update is considered confirmed as soon as -- getUpdates is called with an offset higher than its -- update_id. The negative offset can be specified to retrieve updates -- starting from -offset update from the end of the updates queue. All -- previous updates will forgotten. [updates_offset] :: GetUpdatesRequest -> Maybe Int -- | Limits the number of updates to be retrieved. Values between 1—100 are -- accepted. Defaults to 100. [updates_limit] :: GetUpdatesRequest -> Maybe Int -- | Timeout in seconds for long polling. Defaults to 0, i.e. usual short -- polling. Should be positive, short polling should be used for testing -- purposes only. [updates_timeout] :: GetUpdatesRequest -> Maybe Int -- | List the types of updates you want your bot to receive. For example, -- specify [“message”, “edited_channel_post”, “callback_query”] to only -- receive updates of these types. See Update for a complete -- list of available update types. Specify an empty list to receive all -- updates regardless of type (default). If not specified, the previous -- setting will be used. [updates_allowed_updates] :: GetUpdatesRequest -> Maybe [Text] -- | This object represents request for sendPhoto data SendPhotoRequest payload SendPhotoRequest :: ChatId -> payload -> Maybe Text -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendPhotoRequest payload -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [photo_chat_id] :: SendPhotoRequest payload -> ChatId -- | Photo to send. You can either pass a file_id as String to resend a -- photo that is already on the Telegram servers, or upload a new photo. [photo_photo] :: SendPhotoRequest payload -> payload -- | Photo caption (may also be used when resending photos by file_id), -- 0-200 characters. [photo_caption] :: SendPhotoRequest payload -> Maybe Text -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [photo_disable_notification] :: SendPhotoRequest payload -> Maybe Bool -- | If the message is a reply, ID of the original message [photo_reply_to_message_id] :: SendPhotoRequest payload -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [photo_reply_markup] :: SendPhotoRequest payload -> Maybe ReplyKeyboard -- | This object represents request for sendAudio data SendAudioRequest payload SendAudioRequest :: ChatId -> payload -> Maybe Text -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendAudioRequest payload -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [_audio_chat_id] :: SendAudioRequest payload -> ChatId -- | Audio to send. You can either pass a file_id as String to resend an -- audio that is already on the Telegram servers, or upload a new audio -- file. [_audio_audio] :: SendAudioRequest payload -> payload -- | Audio caption, 0-200 characters [_audio_caption] :: SendAudioRequest payload -> Maybe Text -- | Duration of the audio in seconds [_audio_duration] :: SendAudioRequest payload -> Maybe Int -- | Performer [_audio_performer] :: SendAudioRequest payload -> Maybe Text -- | Track name [_audio_title] :: SendAudioRequest payload -> Maybe Text -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [_audio_disable_notification] :: SendAudioRequest payload -> Maybe Bool -- | If the message is a reply, ID of the original message [_audio_reply_to_message_id] :: SendAudioRequest payload -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [_audio_reply_markup] :: SendAudioRequest payload -> Maybe ReplyKeyboard -- | This object represents request for sendDocument data SendDocumentRequest payload SendDocumentRequest :: ChatId -> payload -> Maybe Text -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendDocumentRequest payload -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [document_chat_id] :: SendDocumentRequest payload -> ChatId -- | File to send. You can either pass a file_id as String to resend a file -- that is already on the Telegram servers, or upload a new file. [document_document] :: SendDocumentRequest payload -> payload -- | Document caption (may also be used when resending documents by -- file_id), 0-200 characters [document_caption] :: SendDocumentRequest payload -> Maybe Text -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [document_disable_notification] :: SendDocumentRequest payload -> Maybe Bool -- | If the message is a reply, ID of the original message [document_reply_to_message_id] :: SendDocumentRequest payload -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [document_reply_markup] :: SendDocumentRequest payload -> Maybe ReplyKeyboard -- | This object represents request for sendSticker data SendStickerRequest payload SendStickerRequest :: ChatId -> payload -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendStickerRequest payload -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [sticker_chat_id] :: SendStickerRequest payload -> ChatId -- | Sticker to send. You can either pass a file_id as String to resend a -- sticker that is already on the Telegram servers, or upload a new -- sticker. [sticker_sticker] :: SendStickerRequest payload -> payload -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [sticker_disable_notification] :: SendStickerRequest payload -> Maybe Bool -- | If the message is a reply, ID of the original message [sticker_reply_to_message_id] :: SendStickerRequest payload -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [sticker_reply_markup] :: SendStickerRequest payload -> Maybe ReplyKeyboard -- | This object represents request for sendVideo data SendVideoRequest payload SendVideoRequest :: ChatId -> payload -> Maybe Int -> Maybe Text -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendVideoRequest payload -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [_video_chat_id] :: SendVideoRequest payload -> ChatId -- | Video to send. You can either pass a file_id as String to resend a -- video that is already on the Telegram servers, or upload a new video. [_video_video] :: SendVideoRequest payload -> payload -- | Duration of sent video in seconds [_video_duration] :: SendVideoRequest payload -> Maybe Int -- | Video caption, 0-200 characters. [_video_caption] :: SendVideoRequest payload -> Maybe Text -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [_video_disable_notification] :: SendVideoRequest payload -> Maybe Bool -- | If the message is a reply, ID of the original message [_video_reply_to_message_id] :: SendVideoRequest payload -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [_video_reply_markup] :: SendVideoRequest payload -> Maybe ReplyKeyboard -- | This object represents request for sendVoice data SendVoiceRequest payload SendVoiceRequest :: ChatId -> payload -> Maybe Text -> Maybe Int -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendVoiceRequest payload -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [_voice_chat_id] :: SendVoiceRequest payload -> ChatId -- | Audio file to send. You can either pass a file_id as String to resend -- an audio that is already on the Telegram servers, or upload a new -- audio file. [_voice_voice] :: SendVoiceRequest payload -> payload -- | Voice message caption, 0-200 characters [_voice_caption] :: SendVoiceRequest payload -> Maybe Text -- | Duration of sent audio in seconds [_voice_duration] :: SendVoiceRequest payload -> Maybe Int -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [_voice_disable_notification] :: SendVoiceRequest payload -> Maybe Bool -- | If the message is a reply, ID of the original message [_voice_reply_to_message_id] :: SendVoiceRequest payload -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [_voice_reply_markup] :: SendVoiceRequest payload -> Maybe ReplyKeyboard -- | This object represents request for sendLocation data SendLocationRequest SendLocationRequest :: ChatId -> Float -> Float -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendLocationRequest -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [location_chat_id] :: SendLocationRequest -> ChatId -- | Latitude of location [location_latitude] :: SendLocationRequest -> Float -- | Longitude of location [location_longitude] :: SendLocationRequest -> Float -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [location_disable_notification] :: SendLocationRequest -> Maybe Bool -- | If the message is a reply, ID of the original message [location_reply_to_message_id] :: SendLocationRequest -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [location_reply_markup] :: SendLocationRequest -> Maybe ReplyKeyboard -- | This object represents request for sendVenue data SendVenueRequest SendVenueRequest :: ChatId -> Float -> Float -> Text -> Text -> Maybe Text -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendVenueRequest -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [_venue_chat_id] :: SendVenueRequest -> ChatId -- | Latitude of the venue [_venue_latitude] :: SendVenueRequest -> Float -- | Longitude of the venue [_venue_longitude] :: SendVenueRequest -> Float -- | Name of the venue [_venue_title] :: SendVenueRequest -> Text -- | Address of the venue [_venue_address] :: SendVenueRequest -> Text -- | Foursquare identifier of the venue [_venue_foursquare_id] :: SendVenueRequest -> Maybe Text -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [_venue_disable_notification] :: SendVenueRequest -> Maybe Bool -- | If the message is a reply, ID of the original message [_venue_reply_to_message_id] :: SendVenueRequest -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [_venue_reply_markup] :: SendVenueRequest -> Maybe ReplyKeyboard -- | This object represents request for sendContact data SendContactRequest SendContactRequest :: ChatId -> Text -> Text -> Maybe Text -> Maybe Bool -> Maybe Int -> Maybe ReplyKeyboard -> SendContactRequest -- | Unique identifier for the target chat or username of the target -- channel (in the format @channelusername) [_contact_chat_id] :: SendContactRequest -> ChatId -- | Contact's phone number [_contact_phone_number] :: SendContactRequest -> Text -- | Contact's first name [_contact_first_name] :: SendContactRequest -> Text -- | Contact's last name [_contact_last_name] :: SendContactRequest -> Maybe Text -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [_contact_disable_notification] :: SendContactRequest -> Maybe Bool -- | If the message is a reply, ID of the original message [_contact_reply_to_message_id] :: SendContactRequest -> Maybe Int -- | Additional interface options. A JSON-serialized object for a custom -- reply keyboard, instructions to hide keyboard or to force a reply from -- the user. [_contact_reply_markup] :: SendContactRequest -> Maybe ReplyKeyboard -- | This object represents request for sendChatAction data SendChatActionRequest SendChatActionRequest :: ChatId -> ChatAction -> SendChatActionRequest -- | Unique identifier for the target chat or username of the target -- channel (in the format `@channelusername`) [action_chat_id] :: SendChatActionRequest -> ChatId -- | Type of action to broadcast. [action_action] :: SendChatActionRequest -> ChatAction -- | This object represents request for sendGame data SendGameRequest SendGameRequest :: Integer -> Text -> Maybe Bool -> Maybe Int -> Maybe InlineKeyboardMarkup -> SendGameRequest -- | Unique identifier for the target chat [game_chat_id] :: SendGameRequest -> Integer -- | Short name of the game, serves as the unique identifier for the game. -- Set up your games via Botfather. [game_game_short_name] :: SendGameRequest -> Text -- | Sends the message silently. iOS users will not receive a notification, -- Android users will receive a notification with no sound. [game_disable_notification] :: SendGameRequest -> Maybe Bool -- | If the message is a reply, ID of the original message [game_reply_to_message_id] :: SendGameRequest -> Maybe Int -- | A JSON-serialized object for an inline keyboard. If empty, one ‘Play -- game_title’ button will be shown. If not empty, the first button must -- launch the game. [game_reply_markup] :: SendGameRequest -> Maybe InlineKeyboardMarkup -- | Type of action to broadcast. data ChatAction Typing :: ChatAction UploadPhoto :: ChatAction RecordVideo :: ChatAction UploadVideo :: ChatAction RecordAudio :: ChatAction UploadAudio :: ChatAction UploadDocument :: ChatAction FindLocation :: ChatAction data AnswerInlineQueryRequest AnswerInlineQueryRequest :: Text -> [InlineQueryResult] -> Maybe Int -> Maybe Bool -> Maybe Text -> Maybe Text -> Maybe Text -> AnswerInlineQueryRequest -- | Unique identifier for the answered query [query_inline_query_id] :: AnswerInlineQueryRequest -> Text -- | A JSON-serialized array of results for the inline query [query_results] :: AnswerInlineQueryRequest -> [InlineQueryResult] -- | The maximum amount of time in seconds that the result of the inline -- query may be cached on the server. Defaults to 300. [query_cache_time] :: AnswerInlineQueryRequest -> Maybe Int -- | Pass True, if results may be cached on the server side only for the -- user that sent the query. By default, results may be returned to any -- user who sends the same query [query_is_personal] :: AnswerInlineQueryRequest -> Maybe Bool -- | Pass the offset that a client should send in the next query with the -- same text to receive more results. Pass an empty string if there are -- no more results or if you don‘t support pagination. Offset length -- can’t exceed 64 bytes. [query_next_offset] :: AnswerInlineQueryRequest -> Maybe Text -- | If passed, clients will display a button with specified text that -- switches the user to a private chat with the bot and sends the bot a -- start message with the parameter switch_pm_parameter [query_switch_pm_text] :: AnswerInlineQueryRequest -> Maybe Text -- | Parameter for the start message sent to the bot when user presses the -- switch button -- -- Example: An inline bot that sends YouTube videos can ask the user to -- connect the bot to their YouTube account to adapt search results -- accordingly. To do this, it displays a ‘Connect your YouTube account’ -- button above the results, or even before showing any. The user presses -- the button, switches to a private chat with the bot and, in doing so, -- passes a start parameter that instructs the bot to return an oauth -- link. Once done, the bot can offer a switch_inline button so that the -- user can easily return to the chat where they wanted to use the bot's -- inline capabilities. [query_switch_pm_parameter] :: AnswerInlineQueryRequest -> Maybe Text data AnswerCallbackQueryRequest AnswerCallbackQueryRequest :: Text -> Maybe Text -> Maybe Bool -> Maybe Text -> Maybe Int -> AnswerCallbackQueryRequest -- | Unique identifier for the query to be answered [cq_callback_query_id] :: AnswerCallbackQueryRequest -> Text -- | Text of the notification. If not specified, nothing will be shown to -- the user [cq_text] :: AnswerCallbackQueryRequest -> Maybe Text -- | If true, an alert will be shown by the client instead of a -- notification at the top of the chat screen. Defaults to false. [cq_show_alert] :: AnswerCallbackQueryRequest -> Maybe Bool -- | URL that will be opened by the user's client. If you have created a -- Game and accepted the conditions via `@Botfather`, specify -- the URL that opens your game – note that this will only work if the -- query comes from a callback_game button. Otherwise, you may -- use links like telegram.me/your_bot?start=XXXX that open your bot with -- a parameter. [cq_url] :: AnswerCallbackQueryRequest -> Maybe Text -- | The maximum amount of time in seconds that the result of the callback -- query may be cached client-side. Telegram apps will support caching -- starting in version 3.14. Defaults to 0. [cq_cache_time] :: AnswerCallbackQueryRequest -> Maybe Int data ReplyKeyboard -- | This object represents a custom keyboard with reply options ReplyInlineKeyboardMarkup :: [[InlineKeyboardButton]] -> ReplyKeyboard -- | Array of button rows, each represented by an Array of -- InlineKeyboardButton objects [reply_inline_keyboard] :: ReplyKeyboard -> [[InlineKeyboardButton]] ReplyKeyboardMarkup :: [[KeyboardButton]] -> Maybe Bool -> Maybe Bool -> Maybe Bool -> ReplyKeyboard -- | Array of button rows, each represented by an Array of -- KeyboardButton objects [reply_keyboard] :: ReplyKeyboard -> [[KeyboardButton]] -- | 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. [reply_resize_keyboard] :: ReplyKeyboard -> Maybe Bool -- | Requests clients to hide the keyboard as soon as it's been used. -- Defaults to false. [reply_one_time_keyboard] :: ReplyKeyboard -> Maybe Bool -- | 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 (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. [reply_selective] :: ReplyKeyboard -> Maybe Bool -- | Upon receiving a message with this object, Telegram clients will hide -- 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 ReplyKeyboardHide :: Bool -> Maybe Bool -> ReplyKeyboard -- | Requests clients to hide the custom keyboard [reply_hide_keyboard] :: ReplyKeyboard -> Bool -- | 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 (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. [reply_selective] :: ReplyKeyboard -> Maybe Bool ReplyKeyboardRemove :: Bool -> Maybe Bool -> ReplyKeyboard -- | 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) [reply_remove_keyboard] :: ReplyKeyboard -> Bool -- | 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 (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. [reply_selective] :: ReplyKeyboard -> Maybe Bool -- | 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. ForceReply :: Bool -> Maybe Bool -> ReplyKeyboard -- | Shows reply interface to the user, as if they manually selected the -- bot‘s message and tapped ’Reply' [reply_force_reply] :: ReplyKeyboard -> Bool -- | 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 (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. [reply_selective] :: ReplyKeyboard -> Maybe Bool data EditMessageTextRequest EditMessageTextRequest :: Maybe ChatId -> Maybe Int -> Maybe Text -> Text -> Maybe ParseMode -> Maybe Bool -> Maybe InlineKeyboardMarkup -> EditMessageTextRequest -- | Required if inline_message_id is not specified. Unique -- identifier for the target chat or username of the target channel (in -- the format `@channelusername`) [emt_chat_id] :: EditMessageTextRequest -> Maybe ChatId -- | if inline_message_id is not specified. Unique identifier of -- the sent message [emt_message_id] :: EditMessageTextRequest -> Maybe Int -- | Required if chat_id and message_id are not specified. Identifier of -- the inline message [emt_inline_message_id] :: EditMessageTextRequest -> Maybe Text -- | New text of the message [emt_text] :: EditMessageTextRequest -> Text -- | Send Markdown or HTML, if you want Telegram apps to -- show bold, italic, fixed-width text or inline URLs in your bot's -- message. [emt_parse_mode] :: EditMessageTextRequest -> Maybe ParseMode -- | Disables link previews for links in this message [emt_disable_web_page_preview] :: EditMessageTextRequest -> Maybe Bool -- | A JSON-serialized object for an inline keyboard. [emt_reply_markup] :: EditMessageTextRequest -> Maybe InlineKeyboardMarkup data EditMessageCaptionRequest EditMessageCaptionRequest :: Maybe ChatId -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe InlineKeyboardMarkup -> EditMessageCaptionRequest -- | Required if inline_message_id is not specified. Unique -- identifier for the target chat or username of the target channel (in -- the format `@channelusername`) [emc_chat_id] :: EditMessageCaptionRequest -> Maybe ChatId -- | Required if inline_message_id is not specified. Unique -- identifier of the sent message [emc_message_id] :: EditMessageCaptionRequest -> Maybe Int -- | Required if chat_id and message_id are not -- specified. Identifier of the inline message [emc_inline_message_id] :: EditMessageCaptionRequest -> Maybe Text -- | New caption of the message [emc_caption] :: EditMessageCaptionRequest -> Maybe Text -- | A JSON-serialized object for an inline keyboard. [emc_reply_markup] :: EditMessageCaptionRequest -> Maybe InlineKeyboardMarkup data EditMessageReplyMarkupRequest EditMessageReplyMarkupRequest :: Maybe ChatId -> Maybe Int -> Maybe Text -> Maybe InlineKeyboardMarkup -> EditMessageReplyMarkupRequest -- | Required if inline_message_id is not specified. Unique -- identifier for the target chat or username of the target channel (in -- the format `@channelusername`) [emrm_chat_id] :: EditMessageReplyMarkupRequest -> Maybe ChatId -- | Required if inline_message_id is not specified. Unique -- identifier of the sent message [emrm_message_id] :: EditMessageReplyMarkupRequest -> Maybe Int -- | Required if chat_id and message_id are not -- specified. Identifier of the inline message [emrm_inline_message_id] :: EditMessageReplyMarkupRequest -> Maybe Text -- | A JSON-serialized object for an inline keyboard. [emrm_reply_markup] :: EditMessageReplyMarkupRequest -> Maybe InlineKeyboardMarkup data SendInvoiceRequest SendInvoiceRequest :: Int64 -> Text -> Text -> Text -> Text -> Text -> CurrencyCode -> [LabeledPrice] -> Maybe Text -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Int -> Maybe InlineKeyboardMarkup -> SendInvoiceRequest -- | Unique identifier for the target private chat [snd_inv_chat_id] :: SendInvoiceRequest -> Int64 -- | Product name [snd_inv_title] :: SendInvoiceRequest -> Text -- | Product description [snd_inv_description] :: SendInvoiceRequest -> Text -- | Bot-defined invoice payload, 1-128 bytes. This will not be displayed -- to the user, use for your internal processes. [snd_inv_payload] :: SendInvoiceRequest -> Text -- | Payments provider token, obtained via Botfather [snd_inv_provider_token] :: SendInvoiceRequest -> Text -- | Unique deep-linking parameter that can be used to generate this -- invoice when used as a start parameter [snd_inv_start_parameter] :: SendInvoiceRequest -> Text -- | Three-letter ISO 4217 currency code [snd_inv_currency] :: SendInvoiceRequest -> CurrencyCode -- | Price breakdown, a list of components (e.g. product price, tax, -- discount, delivery cost, delivery tax, bonus, etc.) [snd_inv_prices] :: SendInvoiceRequest -> [LabeledPrice] -- | URL of the product photo for the invoice. Can be a photo of the goods -- or a marketing image for a service. People like it better when they -- see what they are paying for. [snd_inv_photo_url] :: SendInvoiceRequest -> Maybe Text -- | Photo size [snd_inv_photo_size] :: SendInvoiceRequest -> Maybe Int -- | Photo width [snd_inv_photo_width] :: SendInvoiceRequest -> Maybe Int -- | Photo height [snd_inv_photo_height] :: SendInvoiceRequest -> Maybe Int -- | Pass True, if you require the user's full name to complete the -- order [snd_inv_need_name] :: SendInvoiceRequest -> Maybe Bool -- | Pass True, if you require the user's phone number to complete -- the order [snd_inv_need_phone_number] :: SendInvoiceRequest -> Maybe Bool -- | Pass True, if you require the user's email to complete the -- order [snd_inv_need_email] :: SendInvoiceRequest -> Maybe Bool -- | Pass True, if you require the user's shipping address to -- complete the order [snd_inv_need_shipping_address] :: SendInvoiceRequest -> Maybe Bool -- | Pass True, if the final price depends on the shipping method [snd_inv_is_flexible] :: SendInvoiceRequest -> Maybe Bool -- | Sends the message silently. Users will receive a notification with no -- sound. [snd_inv_disable_notification] :: SendInvoiceRequest -> Maybe Bool -- | If the message is a reply, ID of the original message [snd_inv_reply_to_message] :: SendInvoiceRequest -> Maybe Int -- | A JSON-serialized object for an inline keyboard. If empty, one 'Pay -- total price' button will be shown. If not empty, the first button must -- be a Pay button. [snd_inv_reply_markup] :: SendInvoiceRequest -> Maybe InlineKeyboardMarkup data AnswerShippingQueryRequest -- | If you sent an invoice requesting a shipping address and the parameter -- is_flexible was specified, the Bot API will send an Update with a -- shipping_query field to the bot. Use this method to reply to shipping -- queries. On success, True is returned. AnswerShippingQueryRequest :: Text -> Bool -> Maybe [ShippingOption] -> Maybe Text -> AnswerShippingQueryRequest -- | Unique identifier for the query to be answered [asq_shipping_query_id] :: AnswerShippingQueryRequest -> Text -- | Specify True if delivery to the specified address is possible and -- False if there are any problems (for example, if delivery to the -- specified address is not possible) [asq_ok] :: AnswerShippingQueryRequest -> Bool -- | Required if ok is True. A JSON-serialized array of available shipping -- options. [asq_shipping_options] :: AnswerShippingQueryRequest -> Maybe [ShippingOption] -- | Required if ok is False. Error message in human readable form that -- explains why it is impossible to complete the order (e.g. "Sorry, -- delivery to your desired address is unavailable'). Telegram will -- display this message to the user. [asq_error_message] :: AnswerShippingQueryRequest -> Maybe Text data AnswerPreCheckoutQueryRequest -- | Once the user has confirmed their payment and shipping details, the -- Bot API sends the final confirmation in the form of an Update -- with the field pre_checkout_query. Use this method to respond to such -- pre-checkout queries. On success, True is returned. Note: The Bot API -- must receive an answer within 10 seconds after the pre-checkout query -- was sent. AnswerPreCheckoutQueryRequest :: Text -> Bool -> Maybe Text -> AnswerPreCheckoutQueryRequest -- | Unique identifier for the query to be answered [apc_pre_checkout_query_id] :: AnswerPreCheckoutQueryRequest -> Text -- | Specify True if everything is alright (goods are available, etc.) and -- the bot is ready to proceed with the order. Use False if there are any -- problems. [apc_ok] :: AnswerPreCheckoutQueryRequest -> Bool -- | Required if ok is False. Error message in human readable form that -- explains the reason for failure to proceed with the checkout (e.g. -- "Sorry, somebody just bought the last of our amazing black T-shirts -- while you were busy filling out your payment details. Please choose a -- different color or garment!"). Telegram will display this message to -- the user. [apc_error_message] :: AnswerPreCheckoutQueryRequest -> Maybe Text localFileUpload :: FilePath -> FileUpload setWebhookRequest :: Text -> FileUpload -> SetWebhookRequest setWebhookRequest' :: Text -> SetWebhookRequest getUpdatesRequest :: GetUpdatesRequest sendMessageRequest :: ChatId -> Text -> SendMessageRequest forwardMessageRequest :: ChatId -> ChatId -> Int -> ForwardMessageRequest sendPhotoRequest :: ChatId -> Text -> SendPhotoRequest Text uploadPhotoRequest :: ChatId -> FileUpload -> SendPhotoRequest FileUpload sendAudioRequest :: ChatId -> Text -> SendAudioRequest Text uploadAudioRequest :: ChatId -> FileUpload -> SendAudioRequest FileUpload sendDocumentRequest :: ChatId -> Text -> SendDocumentRequest Text uploadDocumentRequest :: ChatId -> FileUpload -> SendDocumentRequest FileUpload sendStickerRequest :: ChatId -> Text -> SendStickerRequest Text uploadStickerRequest :: ChatId -> FileUpload -> SendStickerRequest FileUpload sendVideoRequest :: ChatId -> Text -> SendVideoRequest Text uploadVideoRequest :: ChatId -> FileUpload -> SendVideoRequest FileUpload sendVoiceRequest :: ChatId -> Text -> SendVoiceRequest Text uploadVoiceRequest :: ChatId -> FileUpload -> SendVoiceRequest FileUpload sendLocationRequest :: ChatId -> Float -> Float -> SendLocationRequest sendVenueRequest :: ChatId -> Float -> Float -> Text -> Text -> SendVenueRequest sendContactRequest :: ChatId -> Text -> Text -> SendContactRequest sendChatActionRequest :: ChatId -> ChatAction -> SendChatActionRequest sendGameRequest :: Integer -> Text -> SendGameRequest answerInlineQueryRequest :: Text -> [InlineQueryResult] -> AnswerInlineQueryRequest answerCallbackQueryRequest :: Text -> AnswerCallbackQueryRequest inlineKeyboardMarkup :: [[InlineKeyboardButton]] -> ReplyKeyboard replyKeyboardMarkup :: [[KeyboardButton]] -> ReplyKeyboard replyKeyboardHide :: ReplyKeyboard forceReply :: ReplyKeyboard editMessageTextRequest :: ChatId -> Int -> Text -> EditMessageTextRequest editInlineMessageTextRequest :: Text -> Text -> EditMessageTextRequest editMessageCaptionRequest :: ChatId -> Int -> Maybe Text -> EditMessageCaptionRequest editInlineMessageCaptionRequest :: Text -> Maybe Text -> EditMessageCaptionRequest editMessageReplyMarkupRequest :: ChatId -> Int -> Maybe InlineKeyboardMarkup -> EditMessageReplyMarkupRequest editInlineMessageReplyMarkupRequest :: Text -> Maybe InlineKeyboardMarkup -> EditMessageReplyMarkupRequest sendInvoiceRequest :: Int64 -> Text -> Text -> Text -> Text -> Text -> CurrencyCode -> [LabeledPrice] -> SendInvoiceRequest okShippingQueryRequest :: Text -> [ShippingOption] -> AnswerShippingQueryRequest errorShippingQueryRequest :: Text -> Text -> AnswerShippingQueryRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.AnswerPreCheckoutQueryRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.AnswerPreCheckoutQueryRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.AnswerShippingQueryRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.AnswerShippingQueryRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SendInvoiceRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.SendInvoiceRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.EditMessageReplyMarkupRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.EditMessageReplyMarkupRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.EditMessageCaptionRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.EditMessageCaptionRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.EditMessageTextRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.EditMessageTextRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SendMessageRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.SendMessageRequest instance GHC.Generics.Generic (Web.Telegram.API.Bot.Requests.SendPhotoRequest payload) instance GHC.Show.Show payload => GHC.Show.Show (Web.Telegram.API.Bot.Requests.SendPhotoRequest payload) instance GHC.Generics.Generic (Web.Telegram.API.Bot.Requests.SendAudioRequest payload) instance GHC.Show.Show payload => GHC.Show.Show (Web.Telegram.API.Bot.Requests.SendAudioRequest payload) instance GHC.Generics.Generic (Web.Telegram.API.Bot.Requests.SendStickerRequest payload) instance GHC.Show.Show payload => GHC.Show.Show (Web.Telegram.API.Bot.Requests.SendStickerRequest payload) instance GHC.Generics.Generic (Web.Telegram.API.Bot.Requests.SendDocumentRequest payload) instance GHC.Show.Show payload => GHC.Show.Show (Web.Telegram.API.Bot.Requests.SendDocumentRequest payload) instance GHC.Generics.Generic (Web.Telegram.API.Bot.Requests.SendVideoRequest payload) instance GHC.Show.Show payload => GHC.Show.Show (Web.Telegram.API.Bot.Requests.SendVideoRequest payload) instance GHC.Generics.Generic (Web.Telegram.API.Bot.Requests.SendVoiceRequest payload) instance GHC.Show.Show payload => GHC.Show.Show (Web.Telegram.API.Bot.Requests.SendVoiceRequest payload) instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SendLocationRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.SendLocationRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SendVenueRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.SendVenueRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SendContactRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.SendContactRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.ReplyKeyboard instance GHC.Show.Show Web.Telegram.API.Bot.Requests.ReplyKeyboard instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.AnswerCallbackQueryRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.AnswerCallbackQueryRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.AnswerInlineQueryRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.AnswerInlineQueryRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SendGameRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.SendGameRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SendChatActionRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.SendChatActionRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.ChatAction instance GHC.Show.Show Web.Telegram.API.Bot.Requests.ChatAction instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.ForwardMessageRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.ForwardMessageRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.ChatId instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.GetUpdatesRequest instance GHC.Show.Show Web.Telegram.API.Bot.Requests.GetUpdatesRequest instance GHC.Generics.Generic Web.Telegram.API.Bot.Requests.SetWebhookRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SetWebhookRequest instance Servant.Client.MultipartFormData.ToMultipartFormData Web.Telegram.API.Bot.Requests.SetWebhookRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.GetUpdatesRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.GetUpdatesRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.ChatId instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.ChatId instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SendMessageRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.SendMessageRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.ForwardMessageRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.ForwardMessageRequest instance Data.Aeson.Types.ToJSON.ToJSON (Web.Telegram.API.Bot.Requests.SendPhotoRequest Data.Text.Internal.Text) instance Data.Aeson.Types.FromJSON.FromJSON (Web.Telegram.API.Bot.Requests.SendPhotoRequest Data.Text.Internal.Text) instance Servant.Client.MultipartFormData.ToMultipartFormData (Web.Telegram.API.Bot.Requests.SendPhotoRequest Web.Telegram.API.Bot.Requests.FileUpload) instance Data.Aeson.Types.ToJSON.ToJSON (Web.Telegram.API.Bot.Requests.SendAudioRequest Data.Text.Internal.Text) instance Data.Aeson.Types.FromJSON.FromJSON (Web.Telegram.API.Bot.Requests.SendAudioRequest Data.Text.Internal.Text) instance Servant.Client.MultipartFormData.ToMultipartFormData (Web.Telegram.API.Bot.Requests.SendAudioRequest Web.Telegram.API.Bot.Requests.FileUpload) instance Data.Aeson.Types.ToJSON.ToJSON (Web.Telegram.API.Bot.Requests.SendStickerRequest Data.Text.Internal.Text) instance Data.Aeson.Types.FromJSON.FromJSON (Web.Telegram.API.Bot.Requests.SendStickerRequest Data.Text.Internal.Text) instance Servant.Client.MultipartFormData.ToMultipartFormData (Web.Telegram.API.Bot.Requests.SendStickerRequest Web.Telegram.API.Bot.Requests.FileUpload) instance Data.Aeson.Types.ToJSON.ToJSON (Web.Telegram.API.Bot.Requests.SendDocumentRequest Data.Text.Internal.Text) instance Data.Aeson.Types.FromJSON.FromJSON (Web.Telegram.API.Bot.Requests.SendDocumentRequest Data.Text.Internal.Text) instance Servant.Client.MultipartFormData.ToMultipartFormData (Web.Telegram.API.Bot.Requests.SendDocumentRequest Web.Telegram.API.Bot.Requests.FileUpload) instance Data.Aeson.Types.ToJSON.ToJSON (Web.Telegram.API.Bot.Requests.SendVideoRequest Data.Text.Internal.Text) instance Data.Aeson.Types.FromJSON.FromJSON (Web.Telegram.API.Bot.Requests.SendVideoRequest Data.Text.Internal.Text) instance Servant.Client.MultipartFormData.ToMultipartFormData (Web.Telegram.API.Bot.Requests.SendVideoRequest Web.Telegram.API.Bot.Requests.FileUpload) instance Data.Aeson.Types.ToJSON.ToJSON (Web.Telegram.API.Bot.Requests.SendVoiceRequest Data.Text.Internal.Text) instance Data.Aeson.Types.FromJSON.FromJSON (Web.Telegram.API.Bot.Requests.SendVoiceRequest Data.Text.Internal.Text) instance Servant.Client.MultipartFormData.ToMultipartFormData (Web.Telegram.API.Bot.Requests.SendVoiceRequest Web.Telegram.API.Bot.Requests.FileUpload) instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SendLocationRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.SendLocationRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SendVenueRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.SendVenueRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SendContactRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.SendContactRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.ChatAction instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.ChatAction instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SendChatActionRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.SendChatActionRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SendGameRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.SendGameRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.AnswerInlineQueryRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.AnswerInlineQueryRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.AnswerCallbackQueryRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.AnswerCallbackQueryRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.ReplyKeyboard instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.ReplyKeyboard instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.EditMessageTextRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.EditMessageTextRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.EditMessageCaptionRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.EditMessageCaptionRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.EditMessageReplyMarkupRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.EditMessageReplyMarkupRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.SendInvoiceRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.SendInvoiceRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.AnswerShippingQueryRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.AnswerShippingQueryRequest instance Data.Aeson.Types.ToJSON.ToJSON Web.Telegram.API.Bot.Requests.AnswerPreCheckoutQueryRequest instance Data.Aeson.Types.FromJSON.FromJSON Web.Telegram.API.Bot.Requests.AnswerPreCheckoutQueryRequest module Web.Telegram.API.Bot.API.Edit -- | Use this method to edit text messages sent by the bot. On success, the -- edited Message is returned, otherwise True is returned. editMessageText :: Token -> EditMessageTextRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See editMessageText editMessageTextM :: EditMessageTextRequest -> TelegramClient MessageResponse -- | Use this method to edit captions of messages sent by the bot. On -- success, the edited Message is returned. editMessageCaption :: Token -> EditMessageCaptionRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See editMessageCaption editMessageCaptionM :: EditMessageCaptionRequest -> TelegramClient MessageResponse -- | Use this method to edit only the reply markup of messages sent by the -- bot. On success, the edited Message is returned. editMessageReplyMarkup :: Token -> EditMessageReplyMarkupRequest -> Manager -> IO (Either ServantError MessageResponse) editMessageReplyMarkupM :: EditMessageReplyMarkupRequest -> TelegramClient MessageResponse -- | Use this method to edit text messages sent via the bot (for inline -- bots). editInlineMessageText :: Token -> EditMessageTextRequest -> Manager -> IO (Either ServantError (Response Bool)) -- | See editInlineMessageText editInlineMessageTextM :: EditMessageTextRequest -> TelegramClient (Response Bool) -- | Use this method to edit captions of messages sent via the bot (for -- inline bots). editInlineMessageCaption :: Token -> EditMessageCaptionRequest -> Manager -> IO (Either ServantError (Response Bool)) -- | See editInlineMessageCaption editInlineMessageCaptionM :: EditMessageCaptionRequest -> TelegramClient (Response Bool) -- | Use this method to edit only the reply markup of messages sent via the -- bot (for inline bots). editInlineMessageReplyMarkup :: Token -> EditMessageReplyMarkupRequest -> Manager -> IO (Either ServantError (Response Bool)) -- | See editInlineMessageReplyMarkup editInlineMessageReplyMarkupM :: EditMessageReplyMarkupRequest -> TelegramClient (Response Bool) -- | Telegram Bot API type TelegramBotEditAPI = (TelegramToken :> ("editMessageText" :> (ReqBody '[JSON] EditMessageTextRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("editMessageCaption" :> (ReqBody '[JSON] EditMessageCaptionRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("editMessageReplyMarkup" :> (ReqBody '[JSON] EditMessageReplyMarkupRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("editMessageText" :> (ReqBody '[JSON] EditMessageTextRequest :> Post '[JSON] (Response Bool)))) :<|> ((TelegramToken :> ("editMessageCaption" :> (ReqBody '[JSON] EditMessageCaptionRequest :> Post '[JSON] (Response Bool)))) :<|> (TelegramToken :> ("editMessageReplyMarkup" :> (ReqBody '[JSON] EditMessageReplyMarkupRequest :> Post '[JSON] (Response Bool)))))))) -- | Proxy for Thelegram Bot API editApi :: Proxy TelegramBotEditAPI module Web.Telegram.API.Bot.API.Messages -- | Use this method to send text messages. On success, the sent -- Message is returned. sendMessage :: Token -> SendMessageRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See sendMessage sendMessageM :: SendMessageRequest -> TelegramClient MessageResponse -- | Use this method to forward messages of any kind. On success, the sent -- Message is returned. forwardMessage :: Token -> ForwardMessageRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See forwardMessage forwardMessageM :: ForwardMessageRequest -> TelegramClient MessageResponse -- | Use this method to upload and send photos. On success, the sent -- Message is returned. uploadPhoto :: Token -> SendPhotoRequest FileUpload -> Manager -> IO (Either ServantError MessageResponse) -- | See uploadPhoto uploadPhotoM :: SendPhotoRequest FileUpload -> TelegramClient MessageResponse -- | Use this method to send photos that have already been uploaded. On -- success, the sent Message is returned. sendPhoto :: Token -> SendPhotoRequest Text -> Manager -> IO (Either ServantError MessageResponse) -- | See sendPhoto sendPhotoM :: SendPhotoRequest Text -> TelegramClient MessageResponse -- | Use this method to upload and send audio files, if you want Telegram -- clients to display them in the music player. Your audio must be in the -- .mp3 format. On success, the sent Message is returned. Bots -- can currently send audio files of up to 50 MB in size, this limit may -- be changed in the future. -- -- For backward compatibility, when the fields title and -- performer are both empty and the mime-type of the file to be -- sent is not _audio/mpeg_, the file will be sent as a playable voice -- message. For this to work, the audio must be in an .ogg file encoded -- with OPUS. This behavior will be phased out in the future. For sending -- voice messages, use the sendVoice method instead. uploadAudio :: Token -> SendAudioRequest FileUpload -> Manager -> IO (Either ServantError MessageResponse) -- | See uploadAudio uploadAudioM :: SendAudioRequest FileUpload -> TelegramClient MessageResponse -- | Use this method to send audio files that are already on the Telegram -- servers, if you want Telegram clients to display them in the music -- player. Your audio must be in the .mp3 format. On success, the sent -- Message is returned. Bots can currently send audio files of -- up to 50 MB in size, this limit may be changed in the future. -- -- For backward compatibility, when the fields title and -- performer are both empty and the mime-type of the file to be -- sent is not _audio/mpeg_, the file will be sent as a playable voice -- message. For this to work, the audio must be in an .ogg file encoded -- with OPUS. This behavior will be phased out in the future. For sending -- voice messages, use the sendVoice method instead. sendAudio :: Token -> SendAudioRequest Text -> Manager -> IO (Either ServantError MessageResponse) -- | See sendAudio sendAudioM :: SendAudioRequest Text -> TelegramClient MessageResponse -- | Use this method to upload and send general files. On success, the sent -- Message is returned. Bots can currently send files of any -- type of up to 50 MB in size, this limit may be changed in the future. uploadDocument :: Token -> SendDocumentRequest FileUpload -> Manager -> IO (Either ServantError MessageResponse) -- | See uploadDocument uploadDocumentM :: SendDocumentRequest FileUpload -> TelegramClient MessageResponse -- | Use this method to send general files that have already been uploaded. -- On success, the sent Message is returned. Bots can currently -- send files of any type of up to 50 MB in size, this limit may be -- changed in the future. sendDocument :: Token -> SendDocumentRequest Text -> Manager -> IO (Either ServantError MessageResponse) -- | See sendDocument sendDocumentM :: SendDocumentRequest Text -> TelegramClient MessageResponse -- | Use this method to upload and send .webp stickers. On success, the -- sent Message is returned. uploadSticker :: Token -> SendStickerRequest FileUpload -> Manager -> IO (Either ServantError MessageResponse) -- | See uploadSticker uploadStickerM :: SendStickerRequest FileUpload -> TelegramClient MessageResponse -- | Use this method to send .webp stickers that are already on the -- Telegram servers. On success, the sent Message is returned. sendSticker :: Token -> SendStickerRequest Text -> Manager -> IO (Either ServantError MessageResponse) -- | See sendSticker sendStickerM :: SendStickerRequest Text -> TelegramClient MessageResponse -- | Use this method to upload and send video files. Telegram clients -- support mp4 videos (other formats may be sent as Document). -- On success, the sent Message is returned. Bots can currently -- send video files of up to 50 MB in size, this limit may be changed in -- the future. uploadVideo :: Token -> SendVideoRequest FileUpload -> Manager -> IO (Either ServantError MessageResponse) -- | See uploadVideo uploadVideoM :: SendVideoRequest FileUpload -> TelegramClient MessageResponse -- | Use this method to send video files that are already on the Telegram -- servers. Telegram clients support mp4 videos (other formats may be -- sent as Document). On success, the sent Message is -- returned. Bots can currently send video files of up to 50 MB in size, -- this limit may be changed in the future. sendVideo :: Token -> SendVideoRequest Text -> Manager -> IO (Either ServantError MessageResponse) -- | See sendVideo sendVideoM :: SendVideoRequest Text -> TelegramClient MessageResponse -- | Use this method to upload and send audio files, if you want Telegram -- clients to display the file as a playable voice message. For this to -- work, your audio must be in an .ogg file encoded with OPUS (other -- formats may be sent as Audio or Document). On -- success, the sent Message is returned. Bots can currently -- send voice messages of up to 50 MB in size, this limit may be changed -- in the future. uploadVoice :: Token -> SendVoiceRequest FileUpload -> Manager -> IO (Either ServantError MessageResponse) -- | See uploadVoice uploadVoiceM :: SendVoiceRequest FileUpload -> TelegramClient MessageResponse -- | Use this method to send audio files that are already on the telegram -- server, if you want Telegram clients to display the file as a playable -- voice message. For this to work, your audio must be in an .ogg file -- encoded with OPUS (other formats may be sent as Audio or -- Document). On success, the sent Message is returned. -- Bots can currently send voice messages of up to 50 MB in size, this -- limit may be changed in the future. sendVoice :: Token -> SendVoiceRequest Text -> Manager -> IO (Either ServantError MessageResponse) -- | See sendVoice sendVoiceM :: SendVoiceRequest Text -> TelegramClient MessageResponse -- | Use this method to send point on the map. On success, the sent -- Message is returned. sendLocation :: Token -> SendLocationRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See sendLocation sendLocationM :: SendLocationRequest -> TelegramClient MessageResponse -- | Use this method to send information about a venue. On success, the -- sent Message is returned. sendVenue :: Token -> SendVenueRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See sendVenue sendVenueM :: SendVenueRequest -> TelegramClient MessageResponse -- | Use this method to send information about a venue. On success, the -- sent Message is returned. sendContact :: Token -> SendContactRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See sendContact sendContactM :: SendContactRequest -> TelegramClient MessageResponse -- | Use this method when you need to tell the user that something is -- happening on the bot's side. The status is set for 5 seconds or less -- (when a message arrives from your bot, Telegram clients clear its -- typing status). sendChatAction :: Token -> SendChatActionRequest -> Manager -> IO (Either ServantError ChatActionResponse) -- | See sendChatAction sendChatActionM :: SendChatActionRequest -> TelegramClient ChatActionResponse -- | Use this method to send a game. On success, the sent Message -- is returned. sendGame :: Token -> SendGameRequest -> Manager -> IO (Either ServantError MessageResponse) -- | See sendGame sendGameM :: SendGameRequest -> TelegramClient MessageResponse -- | Telegram Bot API type TelegramBotMessagesAPI = (TelegramToken :> ("sendMessage" :> (ReqBody '[JSON] SendMessageRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("forwardMessage" :> (ReqBody '[JSON] ForwardMessageRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendPhoto" :> (MultipartFormDataReqBody (SendPhotoRequest FileUpload) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendPhoto" :> (ReqBody '[JSON] (SendPhotoRequest Text) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendAudio" :> (MultipartFormDataReqBody (SendAudioRequest FileUpload) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendAudio" :> (ReqBody '[JSON] (SendAudioRequest Text) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendDocument" :> (MultipartFormDataReqBody (SendDocumentRequest FileUpload) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendDocument" :> (ReqBody '[JSON] (SendDocumentRequest Text) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendSticker" :> (MultipartFormDataReqBody (SendStickerRequest FileUpload) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendSticker" :> (ReqBody '[JSON] (SendStickerRequest Text) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendVideo" :> (MultipartFormDataReqBody (SendVideoRequest FileUpload) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendVideo" :> (ReqBody '[JSON] (SendVideoRequest Text) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendVoice" :> (MultipartFormDataReqBody (SendVoiceRequest FileUpload) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendVoice" :> (ReqBody '[JSON] (SendVoiceRequest Text) :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendLocation" :> (ReqBody '[JSON] SendLocationRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendVenue" :> (ReqBody '[JSON] SendVenueRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendContact" :> (ReqBody '[JSON] SendContactRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("sendChatAction" :> (ReqBody '[JSON] SendChatActionRequest :> Post '[JSON] ChatActionResponse))) :<|> (TelegramToken :> ("sendGame" :> (ReqBody '[JSON] SendGameRequest :> Post '[JSON] MessageResponse)))))))))))))))))))) -- | Proxy for Thelegram Bot API messagesApi :: Proxy TelegramBotMessagesAPI module Web.Telegram.API.Bot.API.Payments sendInvoiceM :: SendInvoiceRequest -> TelegramClient MessageResponse answerShippingQueryM :: AnswerShippingQueryRequest -> TelegramClient AnswerShippingQueryResponse answerPreCheckoutQueryM :: AnswerPreCheckoutQueryRequest -> TelegramClient AnswerPreCheckoutQueryResponse type TelegramBotPaymentsAPI = (TelegramToken :> ("sendInvoice" :> (ReqBody '[JSON] SendInvoiceRequest :> Post '[JSON] MessageResponse))) :<|> ((TelegramToken :> ("answerShippingQuery" :> (ReqBody '[JSON] AnswerShippingQueryRequest :> Post '[JSON] AnswerShippingQueryResponse))) :<|> (TelegramToken :> ("answerPreCheckoutQuery" :> (ReqBody '[JSON] AnswerPreCheckoutQueryRequest :> Post '[JSON] AnswerPreCheckoutQueryResponse)))) paymentsApi :: Proxy TelegramBotPaymentsAPI module Web.Telegram.API.Bot.API.Queries -- | Use this method to send answers to an inline query. No more than 50 -- results per query are allowed. answerInlineQuery :: Token -> AnswerInlineQueryRequest -> Manager -> IO (Either ServantError InlineQueryResponse) -- | See answerInlineQuery answerInlineQueryM :: AnswerInlineQueryRequest -> TelegramClient InlineQueryResponse -- | Use this method to send answers to callback queries sent from inline -- keyboards. The answer will be displayed to the user as a notification -- at the top of the chat screen or as an alert. answerCallbackQuery :: Token -> AnswerCallbackQueryRequest -> Manager -> IO (Either ServantError CallbackQueryResponse) -- | See answerCallbackQuery answerCallbackQueryM :: AnswerCallbackQueryRequest -> TelegramClient CallbackQueryResponse -- | Telegram Bot API type TelegramBotQueriesAPI = (TelegramToken :> ("answerInlineQuery" :> (ReqBody '[JSON] AnswerInlineQueryRequest :> Post '[JSON] InlineQueryResponse))) :<|> (TelegramToken :> ("answerCallbackQuery" :> (ReqBody '[JSON] AnswerCallbackQueryRequest :> Post '[JSON] CallbackQueryResponse))) -- | Proxy for Thelegram Bot API queriesApi :: Proxy TelegramBotQueriesAPI module Web.Telegram.API.Bot.API.Updates -- | Use this method to receive incoming updates using long polling. A list -- of Update objects is returned. Use getUpdatesM for -- more features getUpdates :: Token -> Maybe Int -> Maybe Int -> Maybe Int -> Manager -> IO (Either ServantError UpdatesResponse) -- | See getUpdates getUpdatesM :: GetUpdatesRequest -> TelegramClient UpdatesResponse -- | Get update with default parameters See getUpdates for details. getUpdatesM' :: TelegramClient UpdatesResponse -- | Use this method to specify a url and receive incoming updates via an -- outgoing webhook. Whenever there is an update for the bot, we will -- send an HTTPS POST request to the specified url, containing a -- JSON-serialized Update. In case of an unsuccessful request, -- we will give up after a reasonable amount of attempts. -- -- If you'd like to make sure that the Webhook request comes from -- Telegram, we recommend using a secret path in the URL, e.g. -- https://www.example.com/<token>. Since nobody -- else knows your bot‘s token, you can be pretty sure it’s us. setWebhook :: Token -> Maybe Text -> Manager -> IO (Either ServantError SetWebhookResponse) -- | See setWebhook setWebhookM :: SetWebhookRequest -> TelegramClient SetWebhookResponse -- | Use this method to specify a url and receive incoming updates via an -- outgoing webhook. Whenever there is an update for the bot, we will -- send an HTTPS POST request to the specified url, containing a -- JSON-serialized Update. In case of an unsuccessful request, -- we will give up after a reasonable amount of attempts. -- -- If you'd like to make sure that the Webhook request comes from -- Telegram, we recommend using a secret path in the URL, e.g. -- https://www.example.com/<token>. Since nobody -- else knows your bot‘s token, you can be pretty sure it’s us. setWebhookWithCertificate :: Token -> SetWebhookRequest -> Manager -> IO (Either ServantError SetWebhookResponse) -- | See setWebhookWithCertificate setWebhookWithCertificateM :: SetWebhookRequest -> TelegramClient SetWebhookResponse -- | Use this method to remove webhook integration if you decide to switch -- back to getUpdates. Returns True on success. deleteWebhook :: Token -> Manager -> IO (Either ServantError (Response Bool)) -- | See deleteWebhook deleteWebhookM :: TelegramClient (Response Bool) -- | Contains information about the current status of a webhook. getWebhookInfo :: Token -> Manager -> IO (Either ServantError GetWebhookInfoResponse) -- | See getWebhookInfo getWebhookInfoM :: TelegramClient GetWebhookInfoResponse -- | Telegram Bot API type TelegramBotUpdatesAPI = (TelegramToken :> ("getUpdates" :> (ReqBody '[JSON] GetUpdatesRequest :> Get '[JSON] UpdatesResponse))) :<|> ((TelegramToken :> ("setWebhook" :> (ReqBody '[JSON] SetWebhookRequest :> Get '[JSON] SetWebhookResponse))) :<|> ((TelegramToken :> ("setWebhook" :> (MultipartFormDataReqBody SetWebhookRequest :> Post '[JSON] SetWebhookResponse))) :<|> ((TelegramToken :> ("deleteWebhook" :> Post '[JSON] (Response Bool))) :<|> (TelegramToken :> ("getWebhookInfo" :> Get '[JSON] GetWebhookInfoResponse))))) -- | Proxy for Thelegram Bot API to configure your bot updatesApi :: Proxy TelegramBotUpdatesAPI module Web.Telegram.API.Bot.API -- | Runs TelegramClient runClient :: TelegramClient a -> Token -> Manager -> IO (Either ServantError a) -- | Allows to run TelegramClient against arbitrary url runClient' :: TelegramClient a -> Token -> ClientEnv -> IO (Either ServantError a) type TelegramBotAPI = TelegramBotMessagesAPI :<|> (TelegramBotUpdatesAPI :<|> (TelegramBotChatsAPI :<|> (TelegramBotEditAPI :<|> (TelegramBotQueriesAPI :<|> (TelegramBotGetAPI :<|> TelegramBotPaymentsAPI))))) -- | Proxy for Thelegram Bot API api :: Proxy TelegramBotAPI -- | Telegram Bot's Token newtype Token Token :: Text -> Token type TelegramClient a = ReaderT Token ClientM a -- | This module provides Telegram Bot API module Web.Telegram.API.Bot