telegram-api-0.4.3.0: Telegram Bot API bindings

Safe HaskellNone
LanguageHaskell2010

Web.Telegram.API.Bot.Data

Contents

Description

This module contains objects which represent data of Telegram Bot API responses

Synopsis

Types

data User Source #

This object represents a Telegram user or bot.

Constructors

User 

Fields

Instances

Show User Source # 

Methods

showsPrec :: Int -> User -> ShowS #

show :: User -> String #

showList :: [User] -> ShowS #

Generic User Source # 

Associated Types

type Rep User :: * -> * #

Methods

from :: User -> Rep User x #

to :: Rep User x -> User #

ToJSON User Source # 
FromJSON User Source # 

Methods

parseJSON :: Value -> Parser User #

type Rep User Source # 
type Rep User = D1 (MetaData "User" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) (C1 (MetaCons "User" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "user_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) (S1 (MetaSel (Just Symbol "user_first_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "user_last_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "user_username") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))))

data ChatMember Source #

Constructors

ChatMember 

Fields

  • cm_user :: User

    Information about the user

  • cm_status :: Text

    The member's status in the chat. Can be “creator”, “administrator”, “member”, “left” or “kicked”

Instances

data Chat Source #

This object represents a chat.

Constructors

Chat 

Fields

data Message Source #

This object represents a message.

Constructors

Message 

Fields

data PhotoSize Source #

This object represents one size of a photo or a File / Sticker thumbnail.

Constructors

PhotoSize 

Fields

data Audio Source #

This object represents an audio file to be treated as music by the Telegram clients.

Constructors

Audio 

Fields

data Document Source #

This object represents a general file (as opposed to PhotoSize, Voice messages and Audio files).

Constructors

Document 

Fields

data Sticker Source #

This object represents a sticker.

Constructors

Sticker 

Fields

data Video Source #

This object represents a video file.

Constructors

Video 

Fields

data Voice Source #

This object represents a voice note.

Constructors

Voice 

Fields

Instances

Show Voice Source # 

Methods

showsPrec :: Int -> Voice -> ShowS #

show :: Voice -> String #

showList :: [Voice] -> ShowS #

Generic Voice Source # 

Associated Types

type Rep Voice :: * -> * #

Methods

from :: Voice -> Rep Voice x #

to :: Rep Voice x -> Voice #

ToJSON Voice Source # 
FromJSON Voice Source # 
type Rep Voice Source # 
type Rep Voice = D1 (MetaData "Voice" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) (C1 (MetaCons "Voice" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "voice_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "voice_duration") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))) ((:*:) (S1 (MetaSel (Just Symbol "voice_mime_type") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "voice_file_size") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))))))

data Venue Source #

This object represents a venue.

Constructors

Venue 

Fields

Instances

Show Venue Source # 

Methods

showsPrec :: Int -> Venue -> ShowS #

show :: Venue -> String #

showList :: [Venue] -> ShowS #

Generic Venue Source # 

Associated Types

type Rep Venue :: * -> * #

Methods

from :: Venue -> Rep Venue x #

to :: Rep Venue x -> Venue #

ToJSON Venue Source # 
FromJSON Venue Source # 
type Rep Venue Source # 
type Rep Venue = D1 (MetaData "Venue" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) (C1 (MetaCons "Venue" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "venue_location") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Location)) (S1 (MetaSel (Just Symbol "venue_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "venue_address") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "venue_foursquare_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))))

data Contact Source #

This object represents a phone contact.

Constructors

Contact 

Fields

Instances

Show Contact Source # 
Generic Contact Source # 

Associated Types

type Rep Contact :: * -> * #

Methods

from :: Contact -> Rep Contact x #

to :: Rep Contact x -> Contact #

ToJSON Contact Source # 
FromJSON Contact Source # 
type Rep Contact Source # 
type Rep Contact = D1 (MetaData "Contact" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) (C1 (MetaCons "Contact" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "contact_phone_number") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "contact_first_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "contact_last_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "contact_user_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))))))

data Location Source #

This object represents a point on the map.

Constructors

Location 

Fields

Instances

Show Location Source # 
Generic Location Source # 

Associated Types

type Rep Location :: * -> * #

Methods

from :: Location -> Rep Location x #

to :: Rep Location x -> Location #

ToJSON Location Source # 
FromJSON Location Source # 
type Rep Location Source # 
type Rep Location = D1 (MetaData "Location" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) (C1 (MetaCons "Location" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "longitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float)) (S1 (MetaSel (Just Symbol "latitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float))))

data Update Source #

This object represents an incoming update. Only one of the optional parameters can be present in any given update.

Constructors

Update 

Fields

  • update_id :: Int

    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.

  • message :: Maybe Message

    New incoming message of any kind — text, photo, sticker, etc.

  • edited_message :: Maybe Message

    New version of a message that is known to the bot and was edited

  • inline_query :: Maybe InlineQuery

    New incoming inline query

  • chosen_inline_result :: Maybe ChosenInlineResult

    The result of a inline query that was chosen by a user and sent to their chat partner

  • callback_query :: Maybe CallbackQuery

    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.

data File Source #

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

Constructors

File 

Fields

Instances

Show File Source # 

Methods

showsPrec :: Int -> File -> ShowS #

show :: File -> String #

showList :: [File] -> ShowS #

Generic File Source # 

Associated Types

type Rep File :: * -> * #

Methods

from :: File -> Rep File x #

to :: Rep File x -> File #

ToJSON File Source # 
FromJSON File Source # 

Methods

parseJSON :: Value -> Parser File #

type Rep File Source # 
type Rep File = D1 (MetaData "File" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) (C1 (MetaCons "File" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "file_size") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "file_path") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))))

data UserProfilePhotos Source #

This object represent a user's profile pictures.

Constructors

UserProfilePhotos 

Fields

data InlineQuery Source #

This object represents an incoming inline query. When the user sends an empty query, your bot could return some default or trending results.

Constructors

InlineQuery 

Fields

data ChosenInlineResult Source #

This object represents a result of an inline query that was chosen by the user and sent to their chat partner.

Constructors

ChosenInlineResult 

Fields

data InlineQueryResult Source #

Constructors

InlineQueryResultArticle

Represents a link to an article or web page.

Fields

InlineQueryResultPhoto

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.

Fields

InlineQueryResultGif

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.

Fields

InlineQueryResultMpeg4Gif

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.

Fields

InlineQueryResultVideo

Represents link to a page containing an embedded video player or a video file.

Fields

InlineQueryResultAudio

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.

Fields

InlineQueryResultVoice

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.

Fields

InlineQueryResultDocument

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.

Fields

InlineQueryResultLocation

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.

Fields

InlineQueryResultVenue

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.

Fields

InlineQueryResultContact

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.

Fields

InlineQueryResultCachedPhoto

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.

Fields

InlineQueryResultCachedGif

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.

Fields

InlineQueryResultCachedMpeg4Gif

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.

Fields

InlineQueryResultCachedSticker

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.

Fields

InlineQueryResultCachedDocument

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.

Fields

InlineQueryResultCachedVideo

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.

Fields

InlineQueryResultCachedVoice

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.

Fields

InlineQueryResultCachedAudio

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.

Fields

Instances

Show InlineQueryResult Source # 
Generic InlineQueryResult Source # 
ToJSON InlineQueryResult Source # 
FromJSON InlineQueryResult Source # 
type Rep InlineQueryResult Source # 
type Rep InlineQueryResult = D1 (MetaData "InlineQueryResult" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "InlineQueryResultArticle" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_hide_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Bool))) (S1 (MetaSel (Just Symbol "iq_res_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_thumb_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))))) (C1 (MetaCons "InlineQueryResultPhoto" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_photo_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_photo_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_photo_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))))))) ((:+:) (C1 (MetaCons "InlineQueryResultGif" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_gif_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_gif_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_gif_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))))) (C1 (MetaCons "InlineQueryResultMpeg4Gif" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_mpeg4_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_mpeg4_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_mpeg4_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))))))) ((:+:) ((:+:) (C1 (MetaCons "InlineQueryResultVideo" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_video_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_mime_type") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_video_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_video_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_video_duration") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))))) (C1 (MetaCons "InlineQueryResultAudio" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_audio_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_performer") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_audio_duration") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))))) ((:+:) (C1 (MetaCons "InlineQueryResultVoice" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_voice_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_voice_duration") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))))) ((:+:) (C1 (MetaCons "InlineQueryResultDocument" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_document_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_mime_type") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_thumb_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))))) (C1 (MetaCons "InlineQueryResultLocation" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_latitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_longitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_thumb_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))))))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "InlineQueryResultVenue" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_latitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_longitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_address") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_foursquare_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_thumb_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))))) (C1 (MetaCons "InlineQueryResultContact" PrefixI True) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_phone_number") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_first_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_last_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_thumb_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))) (S1 (MetaSel (Just Symbol "iq_res_thumb_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))))))))) ((:+:) (C1 (MetaCons "InlineQueryResultCachedPhoto" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_photo_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))))) ((:+:) (C1 (MetaCons "InlineQueryResultCachedGif" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_gif_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))))) (C1 (MetaCons "InlineQueryResultCachedMpeg4Gif" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_mpeg4_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))))))) ((:+:) ((:+:) (C1 (MetaCons "InlineQueryResultCachedSticker" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_sticker_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))) (C1 (MetaCons "InlineQueryResultCachedDocument" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_document_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))))) ((:+:) (C1 (MetaCons "InlineQueryResultCachedVideo" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_video_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) (S1 (MetaSel (Just Symbol "iq_res_caption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text)))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))))) ((:+:) (C1 (MetaCons "InlineQueryResultCachedVoice" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_voice_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent))))))) (C1 (MetaCons "InlineQueryResultCachedAudio" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "iq_res_audio_file_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))) ((:*:) (S1 (MetaSel (Just Symbol "iq_res_reply_markup") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InlineKeyboardMarkup))) (S1 (MetaSel (Just Symbol "iq_res_input_message_content") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe InputMessageContent)))))))))))

data InlineKeyboardButton Source #

data CallbackQuery Source #

data ChatType Source #

Type of chat.

Constructors

Private 
Group 
Supergroup 
Channel 

Instances

Show ChatType Source # 
Generic ChatType Source # 

Associated Types

type Rep ChatType :: * -> * #

Methods

from :: ChatType -> Rep ChatType x #

to :: Rep ChatType x -> ChatType #

ToJSON ChatType Source # 
FromJSON ChatType Source # 
type Rep ChatType Source # 
type Rep ChatType = D1 (MetaData "ChatType" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) ((:+:) ((:+:) (C1 (MetaCons "Private" PrefixI False) U1) (C1 (MetaCons "Group" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Supergroup" PrefixI False) U1) (C1 (MetaCons "Channel" PrefixI False) U1)))

data ParseMode Source #

Parse mode for text message

Constructors

Markdown 
HTML 

Instances

Show ParseMode Source # 
Generic ParseMode Source # 

Associated Types

type Rep ParseMode :: * -> * #

ToJSON ParseMode Source # 
FromJSON ParseMode Source # 
type Rep ParseMode Source # 
type Rep ParseMode = D1 (MetaData "ParseMode" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) ((:+:) (C1 (MetaCons "Markdown" PrefixI False) U1) (C1 (MetaCons "HTML" PrefixI False) U1))

data InputMessageContent Source #

This object represents the content of a message to be sent as a result of an inline query.

Constructors

InputTextMessageContent

Represents the content of a text message to be sent as the result of an inline query.

Fields

InputLocationMessageContent

Represents the content of a location message to be sent as the result of an inline query.

Fields

InputVenueMessageContent

Represents the content of a venue message to be sent as the result of an inline query.

Fields

InputContactMessageContent

Represents the content of a contact message to be sent as the result of an inline query.

Fields

Instances

Show InputMessageContent Source # 
Generic InputMessageContent Source # 
ToJSON InputMessageContent Source # 
FromJSON InputMessageContent Source # 
type Rep InputMessageContent Source # 
type Rep InputMessageContent = D1 (MetaData "InputMessageContent" "Web.Telegram.API.Bot.Data" "telegram-api-0.4.3.0-7gUtd774AGu1nW0CVBhSHa" False) ((:+:) ((:+:) (C1 (MetaCons "InputTextMessageContent" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "imc_message_text") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "imc_parse_mode") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe ParseMode))) (S1 (MetaSel (Just Symbol "imc_disable_web_page_preview") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Bool)))))) (C1 (MetaCons "InputLocationMessageContent" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "imc_latitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float)) (S1 (MetaSel (Just Symbol "imc_longitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float))))) ((:+:) (C1 (MetaCons "InputVenueMessageContent" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "imc_latitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float)) (S1 (MetaSel (Just Symbol "imc_longitude") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float))) ((:*:) (S1 (MetaSel (Just Symbol "imc_title") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "imc_address") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "imc_foursquare_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))))) (C1 (MetaCons "InputContactMessageContent" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "imc_phone_number") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Just Symbol "imc_first_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) (S1 (MetaSel (Just Symbol "imc_last_name") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Text))))))))

data KeyboardButton Source #

Constructors

KeyboardButton 

Fields

  • kb_text :: Text

    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_request_contact :: Maybe Bool

    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_location :: Maybe Bool

    If True, the user's current location will be sent when the button is pressed. Available in private chats only

Functions