Documentation ¶
Overview ¶
Package bot implement the Telegram Bot API https://core.telegram.org/bots/api.
The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram.
Index ¶
- Constants
- type Animation
- type Audio
- type Bot
- func (bot *Bot) DeleteWebhook() (err error)
- func (bot *Bot) GetMe() (user *User, err error)
- func (bot *Bot) GetMyCommands() (cmds []Command, err error)
- func (bot *Bot) GetWebhookInfo() (webhookInfo *WebhookInfo, err error)
- func (bot *Bot) SendMessage(parent *Message, parseMode, text string) (msg *Message, err error)
- func (bot *Bot) SetMyCommands(cmds []Command) (err error)
- func (bot *Bot) Start() (err error)
- func (bot *Bot) Stop() (err error)
- type CallbackGame
- type CallbackQuery
- type Chat
- type ChatPermissions
- type ChatPhoto
- type ChosenInlineResult
- type Command
- type Contact
- type Dice
- type Document
- type EncryptedCredentials
- type EncryptedPassportElement
- type Game
- type InlineKeyboardButton
- type InlineKeyboardMarkup
- type InlineQuery
- type Invoice
- type Location
- type LoginURL
- type MaskPosition
- type Message
- type MessageEntity
- type MessageForward
- type Options
- type OrderInfo
- type PassportData
- type PassportFile
- type PhotoSize
- type Poll
- type PollAnswer
- type PollOption
- type PreCheckoutQuery
- type ShippingAddress
- type ShippingQuery
- type Sticker
- type SuccessfulPayment
- type Update
- type UpdateHandler
- type User
- type Venue
- type Video
- type VideoNote
- type Voice
- type Webhook
- type WebhookInfo
Constants ¶
const ( ParseModeMarkdownV2 = "MarkdownV2" ParseModeHTML = "HTML" )
List of message parse mode.
const ( // New incoming message of any kind — text, photo, sticker, etc. UpdateTypeMessage = "message" // New version of a message that is known to the bot and was edited. UpdateTypeEditedMessage = "edited_message" // New incoming channel post of any kind — text, photo, sticker, etc. UpdateTypeChannelPost = "channel_post" // New version of a channel post that is known to the bot and was // edited. UpdateTypeEditedChannelPost = "edited_channel_post" // New incoming inline query UpdateTypeInlineQuery = "inline_query" // The result of an inline query that was chosen by a user and sent to // their chat partner. UpdateTypeChosenInlineResult = "chosen_inline_result" // New incoming callback query. UpdateTypeCallbackQuery = "callback_query" // New incoming shipping query. // Only for invoices with flexible price. UpdateTypeShippingQuery = "shipping_query" // New incoming pre-checkout query. // Contains full information about checkout. UpdateTypePreCheckoutQuery = "pre_checkout_query" // New poll state. // Bots receive only updates about stopped polls and polls, which are // sent by the bot. UpdateTypePoll = "poll" // A user changed their answer in a non-anonymous poll. // Bots receive new votes only in polls that were sent by the bot // itself. UpdateTypePollAnswer = "poll_answer" )
List of Update types.
This types can be used to set AllowedUpdates on Options.Webhook.
const ( ChatTypeChannel = "channel" ChatTypeGroup = "group" ChatTypePrivate = "private" ChatTypeSupergroup = "supergroup" )
List of chat types.
const ( EntityTypeMention = "mention" // @username EntityTypeHashtag = "hashtag" // #hashtag EntityTypeBotCommand = "bot_command" // /start@jobs_bot EntityTypeURL = "url" // https://x.y EntityTypeEmail = "email" // a@b.c EntityTypePhoneNumber = "phone_number" //+1-234 EntityTypeBold = "bold" // bold text EntityTypeItalic = "italic" // italic text EntityTypeUnderline = "underline" // underlined text EntityTypeStrikethrough = "strikethrough" // strikethrough text EntityTypeCode = "code" // monowidth string EntityTypePre = "pre" // monowidth block EntityTypeTextLink = "text_link" // for clickable text URLs EntityTypeTextMention = "text_mention" // for users without usernames. )
List of message entity types.
const ( // EnvToken define the environment variable for setting the Telegram // Bot token. // The environment variable has higher priority than Options parameter // that passed in New() function. EnvToken = "TELEGRAM_TOKEN" // EnvWebhookURL define the environment variable for setting the // Telegram Webhook URL. // The environment variable has higher priority than Options parameter // that passed in New() function. EnvWebhookURL = "TELEGRAM_WEBHOOK_URL" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Animation ¶
type Animation Video
Animation represents an animation file (GIF or H.264/MPEG-4 AVC video without sound).
type Audio ¶
type Audio struct { // Optional. Performer of the audio as defined by sender or by audio // tags. Performer string `json:"performer"` // Optional. Title of the audio as defined by sender or by audio tags. Title string `json:"title"` Document // Duration of the audio in seconds as defined by sender. Duration int `json:"duration"` }
Audio represents an audio file to be treated as music by the Telegram clients.
type Bot ¶
type Bot struct {
// contains filtered or unexported fields
}
Bot for Telegram using webHook.
func (*Bot) DeleteWebhook ¶
DeleteWebhook remove webhook integration if you decide to switch back to getUpdates. Returns True on success. Requires no parameters.
func (*Bot) GetMe ¶
GetMe 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.
func (*Bot) GetMyCommands ¶
GetMyCommands get the current list of the bot's commands.
func (*Bot) GetWebhookInfo ¶
func (bot *Bot) GetWebhookInfo() (webhookInfo *WebhookInfo, err error)
GetWebhookInfo get current webhook status. Requires no parameters. On success, returns a WebhookInfo object. If the bot is using getUpdates, will return an object with the url field empty.
func (*Bot) SendMessage ¶
SendMessage send text messages using defined parse mode to specific user.
func (*Bot) SetMyCommands ¶
SetMyCommands change the list of the bot's commands.
The value of each Command in the list must be valid according to description in Command type; this is including length and characters.
type CallbackGame ¶
type CallbackGame struct{}
CallbackGame A placeholder, currently holds no information.
type CallbackQuery ¶
type CallbackQuery struct { ID string `json:"id"` // Unique identifier for this query From *User `json:"from"` // Sender // Optional. Message with the callback button that originated the // query. Note that message content and message date will not be // available if the message is too old. Message *Message `json:"message"` // Optional. Identifier of the message sent via the bot in inline // mode, that originated the query. InlineMessageID string `json:"inline_message_id"` // Global identifier, uniquely corresponding to the chat to which the // message with the callback button was sent. Useful for high scores // in games. ChatInstance string `json:"chat_instance"` // Optional. Data associated with the callback button. // Be aware that a bad client can send arbitrary data in this field. Data string `json:"data"` // Optional. Short name of a Game to be returned, serves as the unique // identifier for the game. GameShortName string `sjon:"game_short_name"` }
CallbackQuery 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 present. If the button was attached to a message sent via the bot (in inline mode), the field inline_message_id will be present. Exactly one of the fields data or game_short_name will be present.
type Chat ¶
type Chat struct { // Optional. Default chat member permissions, for groups and // supergroups. Returned only in getChat. Permissions *ChatPermissions `json:"permissions"` // Optional. Chat photo. Returned only in getChat. Photo *ChatPhoto `json:"chat_photo"` // Optional. Pinned message, for groups, supergroups and channels. // Returned only in getChat. PinnedMesage *Message `json:"pinned_mesage"` // Type of chat, can be either “private”, “group”, “supergroup” or // “channel”. Type string `json:"type"` // Optional. Title, for supergroups, channels and group chats. Title string `json:"title"` // Optional. Username, for private chats, supergroups and channels if // available. Username string `json:"username"` // Optional. First name of the other party in a private chat. FirstName string `json:"first_name"` // Optional. Last name of the other party in a private chat. LastName string `json:"last_name"` // Optional. Description, for groups, supergroups and channel chats. // Returned only in getChat. Description string `json:"description"` // Optional. Chat invite link, for groups, supergroups and channel // chats. // Each administrator in a chat generates their own invite links, so // the bot must first generate the link using exportChatInviteLink. // Returned only in getChat. InviteLink string `json:"invite_link"` // Optional. For supergroups, name of group sticker set. Returned only // in getChat. StickerSetName string `json:"sticker_set_name"` // 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. ID int64 `json:"id"` // Optional. For supergroups, the minimum allowed delay between // consecutive messages sent by each unpriviledged user. Returned only // in getChat. SlowModeDelay int `json:"slow_mode_delay"` // Optional. True, if the bot can change the group sticker set. // Returned only in getChat. CanSetStickerSet bool `json:"can_set_sticker_set"` }
Chat represents a chat.
type ChatPermissions ¶
type ChatPermissions struct { // Optional. True, if the user is allowed to send text messages, // contacts, locations and venues. CanSendMessages bool `json:"can_send_messages"` // Optional. True, if the user is allowed to send audios, documents, // photos, videos, video notes and voice notes, implies // can_send_messages. CanSendMediaMessages bool `json:"can_send_media_messages"` // Optional. True, if the user is allowed to send polls, implies // can_send_messages. CanSendPolls bool `json:"can_send_polls"` // Optional. True, if the user is allowed to send animations, games, // stickers and use inline bots, implies can_send_media_messages. CanSendOtherMessages bool `json:"can_send_other_messages"` // Optional. True, if the user is allowed to add web page previews to // their messages, implies can_send_media_messages. CanAddWebPagePreviews bool `json:"can_add_web_page_previews"` // Optional. True, if the user is allowed to change the chat title, // photo and other settings. Ignored in public supergroups. CanChangeInfo bool `json:"can_change_info"` // Optional. True, if the user is allowed to invite new users to the // chat. CanInviteUsers bool `json:"can_invite_users"` // Optional. True, if the user is allowed to pin messages. Ignored in // public supergroups. CanPinMessages bool `json:"can_pin_messages"` }
ChatPermissions describes actions that a non-administrator user is allowed to take in a chat.
type ChatPhoto ¶
type ChatPhoto struct { // File identifier of small (160x160) chat photo. // This file_id can be used only for photo download and only for as // long as the photo is not changed. SmallFileID string `json:"small_file_id"` // Unique file identifier of small (160x160) chat photo, which is // supposed to be the same over time and for different bots. // Can't be used to download or reuse the file. SmallFileUniqueID string `json:"small_file_unique_id"` // File identifier of big (640x640) chat photo. // This file_id can be used only for photo download and only for as // long as the photo is not changed. BigFileID string `json:"big_file_id"` // Unique file identifier of big (640x640) chat photo, which is // supposed to be the same over time and for different bots. // Can't be used to download or reuse the file. BigFileUniqueID string `json:"big_file_unique_id"` }
ChatPhoto represents a chat photo.
type ChosenInlineResult ¶
type ChosenInlineResult struct { // The unique identifier for the result that was chosen. ResultID string `json:"result_id"` // The user that chose the result. From *User `json:"from"` // The query that was used to obtain the result Query string `json:"query"` // Optional. Sender location, only for bots that require user // location. Location *Location `json:"location"` // Optional. 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. InlineMessageID string `json:"inline_message_id"` }
ChosenInlineResult represents a result of an inline query that was chosen by the user and sent to their chat partner.
type Command ¶
type Command struct { // Function that will be called when Bot receive the command. // Handler can read command and its arguments through Message.Command // and Message.CommandArgs. Handler UpdateHandler `json:"-"` // Text of the command, 1-32 characters. Can contain only lowercase // English letters, digits and underscores. Command string `json:"command"` // Description of the command, 3-256 characters. Description string `json:"description"` }
Command represents a bot command.
type Contact ¶
type Contact struct { PhoneNumber string `json:"phone_number"` // Contact's phone number. FirstName string `json:"first_name"` // Contact's first name. // Optional. Contact's last name. LastName string `json:"last_name"` // Optional. Additional data about the contact in the form of a vCard VCard string `json:"vcard"` // Optional. Contact's user identifier in Telegram UserID int64 `json:"user_id"` }
Contact represents a phone contact.
type Dice ¶
type Dice struct {
Value int `json:"value"` // Value of the dice, 1-6
}
Dice represents a dice with random value from 1 to 6. (Yes, we're aware of the “proper” singular of die. But it's awkward, and we decided to help it change. One dice at a time!).
type Document ¶
type Document struct { // Optional. Document thumbnail as defined by sender. Thumb *PhotoSize `json:"thumb"` // Identifier for this file, which can be used to download or reuse // the file. FileID string `json:"file_id"` // Unique identifier for this file, which is supposed to be the same // over time and for different bots. Can't be used to download or // reuse the file. FileUniqueID string `json:"file_unique_id"` // Optional. MIME type of the file as defined by sender. MimeType string `json:"mime_type"` // Optional. Original filename as defined by sender. FileName string `json:"file_name"` // Optional. File size. FileSize int `json:"file_size"` }
Document represents a general file (as opposed to photos, voice messages and audio files).
type EncryptedCredentials ¶
type EncryptedCredentials struct { // Base64-encoded encrypted JSON-serialized data with unique user's // payload, data hashes and secrets required for // EncryptedPassportElement decryption and authentication. Data string `json:"data"` // Base64-encoded data hash for data authentication Hash string `json:"hash"` // Base64-encoded secret, encrypted with the bot's public RSA key, // required for data decryption. Secret string `json:"secret"` }
EncryptedCredentials contains data required for decrypting and authenticating EncryptedPassportElement.
type EncryptedPassportElement ¶
type EncryptedPassportElement struct { // Optional. Encrypted file with the front side of the document, // provided by the user. // Available for “passport”, “driver_license”, “identity_card” and // “internal_passport”. The file can be decrypted and verified using // the accompanying EncryptedCredentials. FrontSide *PassportFile `json:"front_size"` // Optional. Encrypted file with the reverse side of the document, // provided by the user. // Available for “driver_license” and “identity_card”. // The file can be decrypted and verified using the accompanying // EncryptedCredentials. ReverseSide *PassportFile `json:"reverse_side"` // Optional. Encrypted file with the selfie of the user holding a // document, provided by the user; available for “passport”, // “driver_license”, “identity_card” and “internal_passport”. // The file can be decrypted and verified using the accompanying // EncryptedCredentials. Selfie *PassportFile `json:"selfie"` // Element type. One of “personal_details”, “passport”, // “driver_license”, “identity_card”, “internal_passport”, “address”, // “utility_bill”, “bank_statement”, “rental_agreement”, // “passport_registration”, “temporary_registration”, “phone_number”, // “email”. Type string `json:"type"` // Optional. Base64-encoded encrypted Telegram Passport element data // provided by the user, available for “personal_details”, “passport”, // “driver_license”, “identity_card”, “internal_passport” and // “address” types. // Can be decrypted and verified using the accompanying // EncryptedCredentials. Data string `json:"data"` // Optional. User's verified phone number, available only for // “phone_number” type. PhoneNumber string `json:"phone_number"` // Optional. User's verified email address, available only for “email” // type. Email string `json:"email"` // Optional. Array of encrypted files with documents provided by the // user, available for “utility_bill”, “bank_statement”, // “rental_agreement”, “passport_registration” and // “temporary_registration” types. // Files can be decrypted and verified using the accompanying // EncryptedCredentials. Files []PassportFile `json:"files"` // Optional. Array of encrypted files with translated versions of // documents provided by the user. // Available if requested for “passport”, “driver_license”, // “identity_card”, “internal_passport”, “utility_bill”, // “bank_statement”, “rental_agreement”, “passport_registration” and // “temporary_registration” types. // // Files can be decrypted and verified using the accompanying // EncryptedCredentials. Translation []PassportFile `json:"translation"` }
EncryptedPassportElement contains information about documents or other Telegram Passport elements shared with the bot by the user.
type Game ¶
type Game struct { // Optional. Animation that will be displayed in the game message in // chats. Upload via BotFather. Animation *Animation `json:"animation"` Title string `json:"title"` // Title of the game. Description string `json:"description"` // Description of the game. // Optional. 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. Text string `json:"text"` // Photo that will be displayed in the game message in chats. Photo []PhotoSize `json:"photo"` // Optional. Special entities that appear in text, such as usernames, // URLs, bot commands, etc. TextEntities []MessageEntity `json:"text_entities"` }
Game represents a game. Use BotFather to create and edit games, their short names will act as unique identifiers.
type InlineKeyboardButton ¶
type InlineKeyboardButton struct { // Optional. An HTTP URL used to automatically authorize the user. Can // be used as a replacement for the Telegram Login Widget. LoginURL *LoginURL `json:"login_url"` // Optional. Description of the game that will be launched when the // user presses the button. // // NOTE: This type of button must always be the first button in the // first row. CallbackGame *CallbackGame `json:"callback_game"` // Label text on the button. Text string `json:"text"` // Optional. HTTP or tg:// url to be opened when button is pressed. URL string `json:"url"` // Optional. Data to be sent in a callback query to the bot when // button is pressed, 1-64 bytes. CallbackData string `json:"callback_data"` // Optional. If set, pressing the button will prompt the user to // select one of their chats, open that chat and insert the bot‘s // username and the specified inline query in the input field. Can be // empty, in which case just the bot’s username will be inserted. SwitchInlineQuery string `json:"switch_inline_query"` // Optional. 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. SwitchInlineQueryCurrentChat string `json:"switch_inline_query_current_chat"` // Optional. Specify True, to send a Pay button. // // NOTE: This type of button must always be the first button in the // first row. Pay bool `json:"pay"` }
InlineKeyboardButton represents one button of an inline keyboard. You must use exactly one of the optional fields.
type InlineKeyboardMarkup ¶
type InlineKeyboardMarkup struct { // Array of button rows, each represented by an Array of // InlineKeyboardButton objects. InlineKeyboard [][]InlineKeyboardButton `json:"inline_keyboard"` }
InlineKeyboardMarkup represents an inline keyboard that appears right next to the message it belongs to.
type InlineQuery ¶
type InlineQuery struct { From *User `json:"from"` // Sender // Optional. Sender location, only for bots that request user // location. Location *Location `json:"location"` ID string `json:"id"` // Unique identifier for this qery Query string `json:"query"` // Text of the query (up to 256 characters). // Offset of the results to be returned, can be controlled by the bot. Offset string `json:"offset"` }
InlineQuery represents an incoming inline query. When the user sends an empty query, your bot could return some default or trending results.
type Invoice ¶
type Invoice struct { Title string `json:"title"` // Product name Description string `json:"description"` // Product description // Unique bot deep-linking parameter that can be used to generate // this invoice. StartParameter string `json:"start_parameter"` // Three-letter ISO 4217 currency code Currency string `json:"currency"` // Total price in the smallest units of the currency (integer, not // float/double). For example, for a price of US$ 1.45 pass amount = // 145. See the exp parameter in currencies.json, it shows the number // of digits past the decimal point for each currency (2 for the // majority of currencies). TotalAmount int `json:"total_amount"` }
Invoice contains basic information about an invoice.
type Location ¶
type Location struct { Longitude float64 `json:"longitude"` // Longitude as defined by sender. Latitude float64 `json:"latitude"` // Latitude as defined by sender. }
Location represents a point on the map.
type LoginURL ¶
type LoginURL struct { // An HTTP URL to be opened with user authorization data added to the // query string when the button is pressed. If the user refuses to // provide authorization data, the original URL without information // about the user will be opened. The data added is the same as // described in Receiving authorization data. // // NOTE: You must always check the hash of the received data to verify // the authentication and the integrity of the data as described in // Checking authorization. URL string `json:"url"` // Optional. New text of the button in forwarded messages. ForwardText string `json:"forward_text"` // Optional. Username of a bot, which will be used for user // authorization. See Setting up a bot for more details. If not // specified, the current bot's username will be assumed. The url's // domain must be the same as the domain linked with the bot. See // Linking your domain to the bot for more details. BotUsername string `json:"bot_username"` // Optional. Pass True to request the permission for your bot to send // messages to the user. RequestWriteAccess bool `json:"request_write_access"` }
LoginURL represents a parameter of the inline keyboard button used to automatically authorize a user. Serves as a great replacement for the Telegram Login Widget when the user is coming from Telegram. All the user needs to do is tap/click a button and confirm that they want to log in.
type MaskPosition ¶
type MaskPosition struct { // The part of the face relative to which the mask should be placed. // One of “forehead”, “eyes”, “mouth”, or “chin”. Point string `json:"point"` // Shift by X-axis measured in widths of the mask scaled to the face // size, from left to right. // For example, choosing -1.0 will place mask just to the left of the // default mask position. XShift float64 `json:"x_shift"` // Shift by Y-axis measured in heights of the mask scaled to the face // size, from top to bottom. // For example, 1.0 will place the mask just below the default mask // position. YShift float64 `json:"y_shift"` // Mask scaling coefficient. For example, 2.0 means double size. Scale float64 `json:"scale"` }
MaskPosition describes the position on faces where a mask should be placed by default.
type Message ¶
type Message struct { // Chat contains conversation the message belongs to. Chat *Chat `json:"chat"` // Optional. Sender, empty for messages sent to channels. From *User `json:"from"` // Optional. 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. ReplyTo *Message `json:"reply_to_message"` // Optional. Message is an audio file, information about the file Audio *Audio `json:"audio"` // Optional. Message is a general file, information about the file. Document *Document `json:"document"` // Optional. Message is an animation, information about the animation. // For backward compatibility, when this field is set, the document // field will also be set. Animation *Animation `json:"animation"` // Optional. Message is a game, information about the game. Game *Game `json:"game"` // Optional. Message is a sticker, information about the sticker. Sticker *Sticker `json:"sticker"` // Optional. Message is a video, information about the video. Video *Video `json:"video"` // Optional. Message is a voice message, information about the file. Voice *Voice `json:"voice"` // Optional. Message is a video note, information about the video // message. VideoNote *VideoNote `json:"video_note"` // Optional. Message is a shared contact, information about the // contact. Contact *Contact `json:"contact"` // Optional. Message is a shared location, information about the // location. Location *Location `json:"location"` // Optional. Message is a venue, information about the venue. Venue *Venue `json:"venue"` // Optional. Message is a native poll, information about the poll. Poll *Poll `json:"poll"` // Optional. Message is a dice with random value from 1 to 6. Dice *Dice `json:"dice"` // Optional. 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. PinnedMessage *Message `json:"pinned_message"` // Optional. Message is an invoice for a payment, information about // the invoice. Invoice *Invoice `json:"invoice"` // Optional. Message is a service message about a successful payment, // information about the payment. SuccessfulPayment *SuccessfulPayment `json:"successful_payment"` // Optional. Telegram Passport data. PassportData *PassportData `json:"passport_data"` // Optional. Inline keyboard attached to the message. ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup"` // Optional. The unique identifier of a media message group this // message belongs to. MediaGroupID string `json:"media_group_id"` // Optional. Signature of the post author for messages in channels. AuthorSignature string `json:"author_signature"` // Optional. For text messages, the actual UTF-8 text of the message, // 0-4096 characters. Text string `json:"text"` // Optional. Caption for the animation, audio, document, photo, video // or voice, 0-1024 characters. Caption string `json:"caption"` // Optional. A chat title was changed to this value. NewChatTitle string `json:"new_chat_title"` // Optional. The domain name of the website on which the user has // logged in. ConnectedWebsite string `json:"connected_website"` Command string // It will contains the Command name. CommandArgs string // It will contains the Command arguments. // Optional. For text messages, special entities like usernames, URLs, // bot commands, etc. that appear in the text. Entities []MessageEntity `json:"entities"` // Optional. Message is a photo, available sizes of the photo. Photo []PhotoSize `json:"photo"` // Optional. For messages with a caption, special entities like // usernames, URLs, bot commands, etc. that appear in the caption. CaptionEntities []MessageEntity `json:"caption_entities"` // Optional. New members that were added to the group or supergroup // and information about them (the bot itself may be one of these // members). NewMembers []*User `json:"new_chat_members"` // Optional. A member was removed from the group, information about // them (this member may be the bot itself). LeftMembers []*User `json:"left_chat_members"` // Optional. A chat photo was change to this value. NewChatPhoto []PhotoSize `json:"new_chat_photo"` MessageForward // Optional. The group has been migrated to a supergroup with the // specified identifier. MigrateToChatID int64 `json:"migrate_to_chat_id"` // Optional. The supergroup has been migrated from a group with the // specified identifier. MigrateFromChatID int64 `json:"migrate_from_chat_id"` ID int `json:"message_id"` // Unique message identifier inside this chat. Date int `json:"date"` // Date the message was sent in Unix time. // Optional. Date the message was last edited in Unix time EditDate int `json:"edit_date"` // Optional. Service message: the chat photo was deleted. IsChatPhotoDeleted bool `json:"delete_chat_photo"` // Optional. Service message: the group has been created. IsGroupChatCreated bool `json:"group_chat_created"` // Optional. Service message: the supergroup has been created. This // field can‘t be received in a message coming through updates, // because bot can’t be a member of a supergroup when it is created. // It can only be found in reply_to_message if someone replies to a // very first message in a directly created supergroup. IsSupergroupChatCreated bool `json:"supergroup_chat_created"` // Optional. Service message: the channel has been created. // This field can‘t be received in a message coming through updates, // because bot can’t be a member of a channel when it is created. // It can only be found in reply_to_message if someone replies to a // very first message in a channel. IsChannelChatCreated bool `json:"channel_chat_created"` }
Message represents a message.
type MessageEntity ¶
type MessageEntity struct { // Optional. For “text_mention” only, the mentioned user. User *User `json:"user"` // Type of the entity. Type string `json:"type"` // Optional. For “text_link” only, url that will be opened after user // taps on the text. URL string `json:"url"` // Optional. For “pre” only, the programming language of the entity // text. Language string `json:"language"` // Offset in UTF-16 code units to the start of the entity. Offset int `json:"offset"` // Length of the entity in UTF-16 code units. Length int `json:"length"` }
MessageEntity represents one special entity in a text message. For example, hashtags, usernames, URLs, etc.
type MessageForward ¶
type MessageForward struct { // Optional. For forwarded messages, sender of the original message. ForwardFrom *User `json:"forward_from"` // Optional. For messages forwarded from channels, information about // the original channel. ForwardChat *Chat `json:"forward_from_chat"` // Optional. For messages forwarded from channels, signature of the post // author if present. ForwardSignature string `json:"forward_signature"` // Optional. Sender's name for messages forwarded from users who // disallow adding a link to their account in forwarded messages. ForwardSenderName string `json:"forward_sender_name"` // Optional. For messages forwarded from channels, identifier of the // original message in the channel. ForwardID int64 `json:"forward_from_message_id"` // Optional. For forwarded messages, date the original message was // sent in Unix time. ForwardDate int64 `json:"forward_date"` }
MessageForward define the content for forwarded message.
type Options ¶
type Options struct { // Required. The function that will be called when Bot receiving // Updates. HandleUpdate UpdateHandler // Optional. Set this options if the Bot want to receive updates // using Webhook. Webhook *Webhook // Required. Your Bot authentication token. // This option will be overridden by environment variable // TELEGRAM_TOKEN. Token string }
Options to create new Bot.
type OrderInfo ¶
type OrderInfo struct { // Optional. User shipping address ShippingAddress *ShippingAddress `json:"shipping_address"` // Optional. User name Name string `json:"name"` // Optional. User's phone number PhoneNumber string `json:"phone_number"` // Optional. User email Email string `json:"email"` }
OrderInfo represents information about an order.
type PassportData ¶
type PassportData struct { // Encrypted credentials required to decrypt the data. Credentials EncryptedCredentials }
PassportData contains information about Telegram Passport data shared with the bot by the user.
type PassportFile ¶
type PassportFile struct { // Identifier for this file, which can be used to download or reuse // the file. FileID string `json:"file_id"` // Unique identifier for this file, which is supposed to be the same // over time and for different bots. Can't be used to download or // reuse the file. FileUniqueID string `json:"file_unique_id"` // File size. FileSize int `json:"file_size"` // Unix time when the file was uploaded. FileDate int `json:"file_date"` }
PassportFile represents a file uploaded to Telegram Passport. Currently all Telegram Passport files are in JPEG format when decrypted and don't exceed 10MB.
type PhotoSize ¶
type PhotoSize struct { // Identifier for this file, which can be used to download or reuse // the file. FileID string `json:"file_id"` // Unique identifier for this file, which is supposed to be the same // over time and for different bots. Can't be used to download or // reuse the file. FileUniqueID string `json:"file_unique_id"` // Photo width. Width int `json:"width"` // Photo height. Height int `json:"height"` // Optional. File size. FileSize int `json:"file_size"` }
PhotoSize represents one size of a photo or a file / sticker thumbnail.
type Poll ¶
type Poll struct { // Unique poll identifier ID string `json:"id"` // Poll type, currently can be “regular” or “quiz”. Type string `json:"type"` // Poll question, 1-255 characters. Question string `json:"question"` // List of poll options. Options []PollOption `json:"options"` // Optional. 0-based identifier of the correct answer option. // Available only for polls in the quiz mode, which are closed, or was // sent (not forwarded) by the bot or to the private chat with the // bot. CorrectOptionID int `json:"correct_option_id"` // Total number of users that voted in the poll. TotalVoterCount int `json:"total_voter_count"` // True, if the poll is closed. IsClosed bool `json:"is_closed"` // True, if the poll is anonymous. IsAnonymous bool `json:"is_anonymous"` // True, if the poll allows multiple answers. AllowsMultipleAnswers bool `json:"allow_multiple_answers"` }
Poll contains information about a poll.
type PollAnswer ¶
type PollAnswer struct { // Unique poll identifier PollID string `json:"poll_id"` // The user, who changed the answer to the poll. User *User `json:"user"` // 0-based identifiers of answer options, chosen by the user. May be // empty if the user retracted their vote. OptionIDs []int `json:"option_ids"` }
PollAnswer represents an answer of a user in a non-anonymous poll.
type PollOption ¶
type PollOption struct { // Option text, 1-100 characters. Text string `json:"text"` // Number of users that voted for this option. VoterCount int `json:"voter_count"` }
PollOption contains information about one answer option in a poll.
type PreCheckoutQuery ¶
type PreCheckoutQuery struct { // User who sent the query. From *User `json:"from"` // Optional. Order info provided by the user. OrderInfo *OrderInfo `json:"order_info"` // Unique query identifier. ID string `json:"id"` // Three-letter ISO 4217 currency code. Currency string `json:"currency"` // Bot specified invoice payload. InvoicePayload string `json:"invoice_payload"` // Optional. Identifier of the shipping option chosen by the user. ShippingOptionID string `json:"shipping_option_id"` // Total price in the smallest units of the currency (integer, not // float/double). // For example, for a price of US$ 1.45 pass amount = 145. // See the exp parameter in currencies.json, it shows the number // of digits past the decimal point for each currency (2 for the // majority of currencies). TotalAmount int `json:"total_amount"` }
PreCheckoutQuery contains information about an incoming pre-checkout query.
type ShippingAddress ¶
type ShippingAddress struct { // ISO 3166-1 alpha-2 country code. CountryCode string `json:"country_code"` // State, if applicable. State string `json:"state"` // City. City string `json:"city"` // First line for the address. StreetLine1 string `json:"street_line1"` // Second line for the address. StreetLine2 string `json:"street_line2"` // Address post code. PostCode string `json:"post_code"` }
ShippingAddress represents a shipping address.
type ShippingQuery ¶
type ShippingQuery struct { // User who sent the query. From *User `json:"from"` // User specified shipping address. ShippingAddress *ShippingAddress `json:"shipping_address"` // Unique query identifier. ID string `json:"id"` // Bot specified invoice payload. InvoicePayload string `json:"invoice_payload"` }
ShippingQuery contains information about an incoming shipping query.
type Sticker ¶
type Sticker struct { // Optional. For mask stickers, the position where the mask should be // placed. MaskPosition *MaskPosition `json:"mask_position"` // Optional. Emoji associated with the sticker. Emoji string `json:"emoji"` // Optional. Name of the sticker set to which the sticker belongs. SetName string `json:"set_name"` Document // Sticker width. Width int `json:"width"` // Sticker height. Height int `json:"height"` // True, if the sticker is animated. IsAnimated bool `json:"is_animated"` }
Sticker represents a sticker.
type SuccessfulPayment ¶
type SuccessfulPayment struct { // Optional. Order info provided by the user. OrderInfo *OrderInfo `json:"order_info"` // Three-letter ISO 4217 currency code. Currency string `json:"currency"` // Bot specified invoice payload. InvoicePayload string `json:"invoice_payload"` // Optional. Identifier of the shipping option chosen by the user. ShippingOptionID string `json:"shipping_option_id"` // Telegram payment identifier. TelegramPaymentChargeID string `json:"telegram_payment_charge_id"` // Provider payment identifier. ProviderPaymentChargeID string `json:"provider_payment_charge_id"` // Total price in the smallest units of the currency (integer, not // float/double). For example, for a price of US$ 1.45 pass amount = // 145. See the exp parameter in currencies.json, it shows the number // of digits past the decimal point for each currency (2 for the // majority of currencies). TotalAmount int `json:"total_amount"` }
SuccessfulPayment contains basic information about a successful payment.
type Update ¶
type Update struct { // Optional. New incoming message of any kind — text, photo, sticker, // etc. Message *Message `json:"Message"` // Optional. New version of a message that is known to the bot and was // edited. EditedMessage *Message `json:"edited_message"` // Optional. New incoming channel post of any kind — text, photo, // sticker, etc.. ChannelPost *Message `json:"channel_post"` // Optional. New version of a channel post that is known to the bot // and was edited. EditedChannelPost *Message `json:"edited_channel_post"` // Optional. New incoming inline query. InlineQuery *InlineQuery `json:"inline_query"` // Optional. The result of an inline query that was chosen by a user // and sent to their chat partner. // Please see our documentation on the feedback collecting for details // on how to enable these updates for your bot. ChosenInlineResult *ChosenInlineResult `json:"chosen_inline_result"` // Optional. New incoming callback query. CallbackQuery *CallbackQuery `json:"callback_query"` // Optional. New incoming shipping query. Only for invoices with // flexible price. ShippingQuery *ShippingQuery `json:"shipping_query"` // Optional. New incoming pre-checkout query. Contains full // information about checkout. PreCheckoutQuery *PreCheckoutQuery `json:"pre_checkout_query"` // Optional. New poll state. Bots receive only updates about stopped // polls and polls, which are sent by the bot. Poll *Poll `json:"poll"` // Optional. A user changed their answer in a non-anonymous poll. Bots // receive new votes only in polls that were sent by the bot itself. PollAnswer *PollAnswer `json:"poll_answer"` // 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 Webhooks, since it // allows you to ignore repeated updates or to restore the correct // update sequence, should they get out of order. // If there are no new updates for at least a week, then identifier of // the next update will be chosen randomly instead of sequentially. ID int64 `json:"update_id"` }
Update an object represents an incoming update. At most one of the optional parameters can be present in any given update.
type UpdateHandler ¶
type UpdateHandler func(update Update)
UpdateHandler define the handler when Bot receiving updates.
type User ¶
type User struct { // User‘s or bot’s first name. FirstName string `json:"first_name"` // Optional. User‘s or bot’s last name. LastName string `json:"last_name"` // Optional. User‘s or bot’s username. Username string `json:"username"` // Optional. IETF language tag of the user's language. LanguageCode string `json:"language_code"` // Unique identifier for this user or bot ID int `json:"id"` // True, if this user is a bot IsBot bool `json:"is_bot"` // Optional. True, if the bot can be invited to groups. Returned only // in getMe. CanJoinGroups bool `json:"can_join_groups"` // Optional. True, if privacy mode is disabled for the bot. Returned // only in getMe. CanReadAllGroupMessages bool `json:"can_read_all_group_messages"` // Optional. True, if the bot supports inline queries. Returned only // in getMe. SupportsInlineQueries bool `json:"supports_inline_queries"` }
User represents a Telegram user or bot.
type Venue ¶
type Venue struct { // Name of the venue. Title string `json:"title"` // Address of the venue. Address string `json:"address"` // Optional. Foursquare identifier of the venue. FoursquareID string `json:"foursquare_id"` // Optional. Foursquare type of the venue. (For example, // “arts_entertainment/default”, “arts_entertainment/aquarium” or // “food/icecream”). FoursquareType string `json:"foursquare_type"` // Venue location. Location Location `json:"location"` }
Venue represents a venue.
type Video ¶
type Video struct { Document Width int `json:"width"` // Video width as defined by sender. Height int `json:"height"` // Video height as defined by sender. // Duration of the video in seconds as defined by sender. Duration int `json:"duration"` }
Video represents a video file.
type VideoNote ¶
type VideoNote struct { Document // Video width and height (diameter of the video message) as defined // by sender. Length int `json:"length"` // Duration of the video in seconds as defined by sender. Duration int `json:"duration"` }
VideoNote represents a video message (available in Telegram apps as of v.4.0).
type Webhook ¶
type Webhook struct { // Optional. The certificate for Bot server when listening for // Webhook. ListenCertificate *tls.Certificate // HTTPS url to send updates to. // This option will be overridden by environment variable // TELEGRAM_WEBHOOK_URL. URL string // Optional. The address and port where the Bot will listen for // Webhook in the following format "<address>:<port>". // Default to ":80" if ListenCertificate is nil or ":443" if not nil. ListenAddress string // Optional. Upload your public key certificate so that the root // certificate in use can be checked. Certificate []byte // Optional. A JSON-serialized list of the update types you want your // bot to receive. // For example, specify ["message", "edited_channel_post", // "callback_query"] to only receive updates of these types. // // Specify an empty list to receive all updates regardless of type // (default). If not specified, the previous setting will be used. AllowedUpdates []string // Optional. // Maximum allowed number of simultaneous HTTPS connections // to the webhook for update delivery, 1-100. // Defaults to 40. // Use lower values to limit the load on your bot‘s server, and higher // values to increase your bot’s throughput. MaxConnections int }
Webhook contains options to set Webhook to receive updates.
type WebhookInfo ¶
type WebhookInfo struct { // Webhook URL, may be empty if webhook is not set up. URL string `json:"url"` // Optional. Error message in human-readable format for the most // recent error that happened when trying to deliver an update via // webhook. LastErrorMessage string `json:"last_error_message"` // Optional. A list of update types the bot is subscribed to. Defaults // to all update types. AllowedUpdates []string `json:"allowed_updates"` // Number of updates awaiting delivery PendingUpdateCount int `json:"pending_update_count"` // Optional. Unix time for the most recent error that happened when // trying to deliver an update via webhook. LastErrorDate int `json:"last_error_date"` // Optional. Maximum allowed number of simultaneous HTTPS connections // to the webhook for update delivery. MaxConnections int `json:"max_connections"` // True, if a custom certificate was provided for webhook certificate // checks. HasCustomCertificate bool `json:"has_custom_certificate"` }
WebhookInfo contains information about the current status of a webhook.
Source Files ¶
- animation.go
- audio.go
- bot.go
- callback_game.go
- callback_query.go
- chat.go
- chat_permissions.go
- chat_photo.go
- chosen_inline_result.go
- command.go
- commands.go
- contact.go
- dice.go
- doc.go
- document.go
- encrypted_credential.go
- encrypted_passport_element.go
- game.go
- inline_keyboard_button.go
- inline_keyboard_markup.go
- inline_query.go
- invoice.go
- location.go
- login_url.go
- mask_position.go
- message.go
- message_entity.go
- message_forward.go
- message_request.go
- options.go
- order_info.go
- passport_data.go
- passport_file.go
- photo_size.go
- poll.go
- poll_answer.go
- poll_option.go
- pre_checkout_query.go
- response.go
- response_parameters.go
- shipping_address.go
- shipping_query.go
- sticker.go
- successful_payment.go
- update.go
- user.go
- venue.go
- video.go
- video_note.go
- voice.go
- webhook.go
- webhook_info.go