1
0
Fork 0
telegram/inline.go

1144 lines
37 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package telegram
type (
// InlineQuery represents an incoming inline query. When the user sends an empty query, your bot could return some default or trending results.
InlineQuery struct {
// Unique identifier for this query
ID string `json:"id"`
// Text of the query (up to 512 characters)
Query string `json:"query"`
// Offset of the results to be returned, can be controlled by the bot
Offset string `json:"offset"`
// Sender
From *User `json:"from"`
// Sender location, only for bots that request user location
Location *Location `json:"location,omitempty"`
}
// InlineQueryResult represents one result of an inline query.
InlineQueryResult interface {
IsCached() bool
}
// InlineQueryResultArticle represents a link to an article or web page.
InlineQueryResultArticle struct {
// Type of the result, must be article
Type string `json:"type"`
// Unique identifier for this result, 1-64 Bytes
ID string `json:"id"`
// Title of the result
Title string `json:"title"`
// URL of the result
URL string `json:"url,omitempty"`
// Short description of the result
Description string `json:"description,omitempty"`
// Url of the thumbnail for the result
ThumbURL string `json:"thumb_url,omitempty"`
// Content of the message to be sent
InputMessageContent InputMessageContent `json:"input_message_content"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Pass True, if you don't want the URL to be shown in the message
HideURL bool `json:"hide_url,omitempty"`
// Thumbnail width
ThumbWidth int `json:"thumb_width,omitempty"`
// Thumbnail height
ThumbHeight int `json:"thumb_height,omitempty"`
}
// 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.
InlineQueryResultPhoto struct {
// Type of the result, must be photo
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid URL of the photo. Photo must be in jpeg format. Photo size
// must not exceed 5MB
PhotoURL string `json:"photo_url"`
// URL of the thumbnail for the photo
ThumbURL string `json:"thumb_url"`
// Title for the result
Title string `json:"title,omitempty"`
// Short description of the result
Description string `json:"description,omitempty"`
// Caption of the photo to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Width of the photo
PhotoWidth int `json:"photo_width,omitempty"`
// Height of the photo
PhotoHeight int `json:"photo_height,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the photo
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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 use input_message_content to send a
// message with the specified content instead of the animation.
InlineQueryResultGif struct {
// Type of the result, must be gif
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid URL for the GIF file. File size must not exceed 1MB
GifURL string `json:"gif_url"`
// URL of the static thumbnail for the result (jpeg or gif)
ThumbURL string `json:"thumb_url"`
// Title for the result
Title string `json:"title,omitempty"`
// Caption of the GIF file to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Width of the GIF
GifWidth int `json:"gif_width,omitempty"`
// Height of the GIF
GifHeight int `json:"gif_height,omitempty"`
// Duration of the GIF
GifDuration int `json:"gif_duration,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the GIF animation
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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 use input_message_content to send a message with the specified content
// instead of the animation.
InlineQueryResultMpeg4Gif struct {
// Type of the result, must be mpeg4_gif
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid URL for the MP4 file. File size must not exceed 1MB
Mpeg4URL string `json:"mpeg4_url"`
// URL of the static thumbnail (jpeg or gif) for the result
ThumbURL string `json:"thumb_url"`
// Title for the result
Title string `json:"title,omitempty"`
// Caption of the MPEG-4 file to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Video width
Mpeg4Width int `json:"mpeg4_width,omitempty"`
// Video height
Mpeg4Height int `json:"mpeg4_height,omitempty"`
// Video duration
Mpeg4Duration int `json:"mpeg4_duration,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the video animation
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// InlineQueryResultVideo represents a link to a page containing an embedded
// video player or a video file. 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.
//
// If an InlineQueryResultVideo message contains an embedded video (e.g.,
// YouTube), you must replace its content using input_message_content.
InlineQueryResultVideo struct {
// Type of the result, must be video
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid URL for the embedded video player or video file
VideoURL string `json:"video_url"`
// Mime type of the content of video url, "text/html" or "video/mp4"
MimeType string `json:"mime_type"`
// URL of the thumbnail (jpeg only) for the video
ThumbURL string `json:"thumb_url"`
// Title for the result
Title string `json:"title"`
// Caption of the video to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Short description of the result
Description string `json:"description,omitempty"`
// Video width
VideoWidth int `json:"video_width,omitempty"`
// Video height
VideoHeight int `json:"video_height,omitempty"`
// Video duration in seconds
VideoDuration int `json:"video_duration,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the video. This field is
// required if InlineQueryResultVideo is used to send an HTML-page as a
// result (e.g., a YouTube video).
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultAudio struct {
// Type of the result, must be audio
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid URL for the audio file
AudioURL string `json:"audio_url"`
// Title
Title string `json:"title"`
// Caption, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Performer
Performer string `json:"performer,omitempty"`
// Audio duration in seconds
AudioDuration int `json:"audio_duration,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the audio
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultVoice struct {
// Type of the result, must be voice
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid URL for the voice recording
VoiceURL string `json:"voice_url"`
// Recording title
Title string `json:"title"`
// Caption, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Recording duration in seconds
VoiceDuration int `json:"voice_duration,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the voice recording
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultDocument struct {
// Type of the result, must be document
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// Title for the result
Title string `json:"title"`
// Caption of the document to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// A valid URL for the file
DocumentURL string `json:"document_url"`
// Mime type of the content of the file, either "application/pdf" or
// "application/zip"
MimeType string `json:"mime_type"`
// Short description of the result
Description string `json:"description,omitempty"`
// URL of the thumbnail (jpeg only) for the file
ThumbURL string `json:"thumb_url,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the file
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
// Thumbnail width
ThumbWidth int `json:"thumb_width,omitempty"`
// Thumbnail height
ThumbHeight int `json:"thumb_height,omitempty"`
}
// 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.
InlineQueryResultLocation struct {
// Type of the result, must be location
Type string `json:"type"`
// Unique identifier for this result, 1-64 Bytes
ID string `json:"id"`
// Location title
Title string `json:"title"`
// Url of the thumbnail for the result
ThumbURL string `json:"thumb_url,omitempty"`
// Location latitude in degrees
Latitude float32 `json:"latitude"`
// Location longitude in degrees
Longitude float32 `json:"longitude"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the location
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
// Thumbnail width
ThumbWidth int `json:"thumb_width,omitempty"`
// Thumbnail height
ThumbHeight int `json:"thumb_height,omitempty"`
}
// 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.
InlineQueryResultVenue struct {
// Type of the result, must be venue
Type string `json:"type"`
// Unique identifier for this result, 1-64 Bytes
ID string `json:"id"`
// Title of the venue
Title string `json:"title"`
// Address of the venue
Address string `json:"address"`
// Foursquare identifier of the venue if known
FoursquareID string `json:"foursquare_id,omitempty"`
// Foursquare type of the venue, if known. (For example,
// "arts_entertainment/default", "arts_entertainment/aquarium" or
// "food/icecream".)
FoursquareType string `json:"foursquare_type,omitempty"`
// Url of the thumbnail for the result
ThumbURL string `json:"thumb_url,omitempty"`
// Latitude of the venue location in degrees
Latitude float32 `json:"latitude"`
// Longitude of the venue location in degrees
Longitude float32 `json:"longitude"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the venue
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
// Thumbnail width
ThumbWidth int `json:"thumb_width,omitempty"`
// Thumbnail height
ThumbHeight int `json:"thumb_height,omitempty"`
}
// InlineQueryResultContact represents a contact with a phone number. By
// default, this contact will be sent by the user. Alternatively, you can
// use input_message_content to send a message with the specified content
// instead of the contact.
InlineQueryResultContact struct {
// Type of the result, must be contact
Type string `json:"type"`
// Unique identifier for this result, 1-64 Bytes
ID string `json:"id"`
// Contact's phone number
PhoneNumber string `json:"phone_number"`
// Contact's first name
FirstName string `json:"first_name"`
// Contact's last name
LastName string `json:"last_name,omitempty"`
// Additional data about the contact in the form of a vCard, 0-2048 bytes
VCard string `json:"vcard,omitempty"`
// Url of the thumbnail for the result
ThumbURL string `json:"thumb_url,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the contact
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
// Thumbnail width
ThumbWidth int `json:"thumb_width,omitempty"`
// Thumbnail height
ThumbHeight int `json:"thumb_height,omitempty"`
}
// InlineQueryResultGame represents a Game.
InlineQueryResultGame struct {
// Type of the result, must be game
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// Short name of the game
GameShortName string `json:"game_short_name"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
}
// 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.
InlineQueryResultCachedPhoto struct {
// Type of the result, must be photo
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid file identifier of the photo
PhotoFileID string `json:"photo_file_id"`
// Title for the result
Title string `json:"title,omitempty"`
// Short description of the result
Description string `json:"description,omitempty"`
// Caption of the photo to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the photo
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultCachedGif struct {
// Type of the result, must be gif
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid file identifier for the GIF file
GifFileID string `json:"gif_file_id"`
// Title for the result
Title string `json:"title,omitempty"`
// Caption of the GIF file to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the GIF animation
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultCachedMpeg4Gif struct {
// Type of the result, must be mpeg4_gif
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid file identifier for the MP4 file
Mpeg4FileID string `json:"mpeg4_file_id"`
// Title for the result
Title string `json:"title,omitempty"`
// Caption of the MPEG-4 file to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the video animation
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultCachedSticker struct {
// Type of the result, must be sticker
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid file identifier of the sticker
StickerFileID string `json:"sticker_file_id"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the sticker
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultCachedDocument struct {
// Type of the result, must be document
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// Title for the result
Title string `json:"title"`
// A valid file identifier for the file
DocumentFileID string `json:"document_file_id"`
// Short description of the result
Description string `json:"description,omitempty"`
// Caption of the document to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the file
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultCachedVideo struct {
// Type of the result, must be video
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid file identifier for the video file
VideoFileID string `json:"video_file_id"`
// Title for the result
Title string `json:"title"`
// Short description of the result
Description string `json:"description,omitempty"`
// Caption of the video to be sent, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the video
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultCachedVoice struct {
// Type of the result, must be voice
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid file identifier for the voice message
VoiceFileID string `json:"voice_file_id"`
// Voice message title
Title string `json:"title"`
// Caption, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the voice message
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// 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.
InlineQueryResultCachedAudio struct {
// Type of the result, must be audio
Type string `json:"type"`
// Unique identifier for this result, 1-64 bytes
ID string `json:"id"`
// A valid file identifier for the audio file
AudioFileID string `json:"audio_file_id"`
// Caption, 0-200 characters
Caption string `json:"caption,omitempty"`
// Send Markdown or HTML, if you want Telegram apps to show bold, italic,
// fixed-width text or inline URLs in the media caption.
ParseMode string `json:"parse_mode,omitempty"`
// Inline keyboard attached to the message
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
// Content of the message to be sent instead of the audio
InputMessageContent InputMessageContent `json:"input_message_content,omitempty"`
}
// InputMessageContent represents the content of a message to be sent as a result of an inline query.
InputMessageContent interface {
isInputMessageContent()
}
// InputTextMessageContent represents the content of a text message to be
// sent as the result of an inline query.
InputTextMessageContent struct {
// Text of the message to be sent, 1-4096 characters
MessageText string `json:"message_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.
ParseMode string `json:"parse_mode,omitempty"`
// Disables link previews for links in the sent message
DisableWebPagePreview bool `json:"disable_web_page_preview,omitempty"`
}
// InputLocationMessageContent represents the content of a location message
// to be sent as the result of an inline query.
InputLocationMessageContent struct {
// Latitude of the location in degrees
Latitude float32 `json:"latitude"`
// Longitude of the location in degrees
Longitude float32 `json:"longitude"`
// Period in seconds for which the location can be updated, should be between 60 and 86400.
LivePeriod int `json:"live_period,omitempty"`
}
// InputVenueMessageContent represents the content of a venue message to be
// sent as the result of an inline query.
InputVenueMessageContent struct {
// Latitude of the location in degrees
Latitude float32 `json:"latitude"`
// Longitude of the location in degrees
Longitude float32 `json:"longitude"`
// Name of the venue
Title string `json:"title"`
// Address of the venue
Address string `json:"address"`
// Foursquare identifier of the venue, if known
FoursquareID string `json:"foursquare_id,omitempty"`
// Foursquare type of the venue, if known. (For example,
// "arts_entertainment/default", "arts_entertainment/aquarium" or
// "food/icecream".)
FoursquareType string `json:"foursquare_type,omitempty"`
}
// InputContactMessageContent represents the content of a contact message to
// be sent as the result of an inline query.
InputContactMessageContent struct {
// Contact's phone number
PhoneNumber string `json:"phone_number"`
// Contact's first name
FirstName string `json:"first_name"`
// Contact's last name
LastName string `json:"last_name,omitempty"`
// Additional data about the contact in the form of a vCard, 0-2048 bytes
VCard string `json:"vcard,omitempty"`
}
// ChosenInlineResult represents a result of an inline query that was chosen
// by the user and sent to their chat partner.
ChosenInlineResult struct {
// The unique identifier for the result that was chosen
ResultID string `json:"result_id"`
// 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,omitempty"`
// The query that was used to obtain the result
Query string `json:"query"`
// The user that chose the result
From *User `json:"from"`
// Sender location, only for bots that require user location
Location *Location `json:"location,omitempty"`
}
// AnswerInlineQueryParameters represents data for AnswerInlineQuery method.
AnswerInlineQuery struct {
// Unique identifier for the answered query
InlineQueryID string `json:"inline_query_id"`
// 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 dont support pagination. Offset length cant exceed 64
// bytes.
NextOffset string `json:"next_offset,omitempty"`
// 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
SwitchPrivateMessageText string `json:"switch_pm_text,omitempty"`
// Deep-linking parameter for the /start message sent to the bot when user
// presses the switch button. 1-64 characters, only A-Z, a-z, 0-9, _ and -
// are allowed.
SwitchPrivateMessageParameter string `json:"switch_pm_parameter,omitempty"`
// A JSON-serialized array of results for the inline query
Results []InlineQueryResult `json:"results"`
// The maximum amount of time in seconds that the result of the inline query
// may be cached on the server. Defaults to 300.
CacheTime int `json:"cache_time,omitempty"`
// 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
IsPersonal bool `json:"is_personal,omitempty"`
}
ReplyMarkup interface {
isReplyMarkup()
}
)
// AnswerInlineQuery send answers to an inline query. On success, True is returned.
//
// No more than 50 results per query are allowed.
func (b *Bot) AnswerInlineQuery(p AnswerInlineQuery) (bool, error) {
src, err := b.Do(MethodAnswerInlineQuery, p)
if err != nil {
return false, err
}
resp := new(Response)
if err = b.marshler.Unmarshal(src, resp); err != nil {
return false, err
}
var ok bool
if err = b.marshler.Unmarshal(resp.Result, &ok); err != nil {
return false, err
}
return ok, nil
}
func (iq InlineQuery) HasQuery() bool { return iq.Query != "" }
func (iq InlineQuery) HasOffset() bool { return iq.Offset != "" }
func (iq InlineQuery) HasLocation() bool { return iq.Location != nil }
func (cir ChosenInlineResult) HasLocation() bool { return cir.Location != nil }
func (InputTextMessageContent) isInputMessageContent() {}
func (InputLocationMessageContent) isInputMessageContent() {}
func (InputVenueMessageContent) isInputMessageContent() {}
func (InputContactMessageContent) isInputMessageContent() {}
func NewInlineQueryResultCachedAudio(id, file string) InlineQueryResultCachedAudio {
return InlineQueryResultCachedAudio{
Type: TypeAudio,
ID: id,
AudioFileID: file,
}
}
func (InlineQueryResultCachedAudio) IsCached() bool { return true }
func NewInlineQueryResultCachedDocument(id, title, file string) InlineQueryResultCachedDocument {
return InlineQueryResultCachedDocument{
Type: TypeDocument,
ID: id,
Title: title,
DocumentFileID: file,
}
}
func (InlineQueryResultCachedDocument) IsCached() bool { return true }
func NewInlineQueryResultCachedGif(id, file string) InlineQueryResultCachedGif {
return InlineQueryResultCachedGif{
Type: TypeGIF,
ID: id,
GifFileID: file,
}
}
func (InlineQueryResultCachedGif) IsCached() bool { return true }
func NewInlineQueryResultCachedMpeg4Gif(id, file string) InlineQueryResultCachedMpeg4Gif {
return InlineQueryResultCachedMpeg4Gif{
Type: TypeMpeg4Gif,
ID: id,
Mpeg4FileID: file,
}
}
func (InlineQueryResultCachedMpeg4Gif) IsCached() bool { return true }
func NewInlineQueryResultCachedPhoto(id, file string) InlineQueryResultCachedPhoto {
return InlineQueryResultCachedPhoto{
Type: TypePhoto,
ID: id,
PhotoFileID: file,
}
}
func (InlineQueryResultCachedPhoto) IsCached() bool { return true }
func NewInlineQueryResultCachedSticker(id, file string) InlineQueryResultCachedSticker {
return InlineQueryResultCachedSticker{
Type: TypeSticker,
ID: id,
StickerFileID: file,
}
}
func (InlineQueryResultCachedSticker) IsCached() bool { return true }
func NewInlineQueryResultCachedVideo(id, title, file string) InlineQueryResultCachedVideo {
return InlineQueryResultCachedVideo{
Type: TypeVideo,
ID: id,
Title: title,
VideoFileID: file,
}
}
func (InlineQueryResultCachedVideo) IsCached() bool { return true }
func NewInlineQueryResultCachedVoice(id, title, file string) InlineQueryResultCachedVoice {
return InlineQueryResultCachedVoice{
Type: TypeVoice,
ID: id,
Title: title,
VoiceFileID: file,
}
}
func (InlineQueryResultCachedVoice) IsCached() bool { return true }
func NewInlineQueryResultArticle(id, title string, content InputMessageContent) InlineQueryResultArticle {
return InlineQueryResultArticle{
Type: TypeArticle,
ID: id,
Title: title,
InputMessageContent: content,
}
}
func (InlineQueryResultArticle) IsCached() bool { return false }
func NewInlineQueryResultAudio(id, title, audio string) InlineQueryResultAudio {
return InlineQueryResultAudio{
Type: TypeAudio,
ID: id,
Title: title,
AudioURL: audio,
}
}
func (InlineQueryResultAudio) IsCached() bool { return false }
func NewInlineQueryResultContact(id, phone, name string) InlineQueryResultContact {
return InlineQueryResultContact{
Type: TypeContact,
ID: id,
PhoneNumber: phone,
FirstName: name,
}
}
func (InlineQueryResultContact) IsCached() bool { return false }
func NewInlineQueryResultGame(id, shortName string) InlineQueryResultGame {
return InlineQueryResultGame{
Type: TypeGame,
ID: id,
GameShortName: shortName,
}
}
func (InlineQueryResultGame) IsCached() bool { return false }
func NewInlineQueryResultDocument(id, title, mime, document string) InlineQueryResultDocument {
return InlineQueryResultDocument{
Type: TypeDocument,
ID: id,
Title: title,
MimeType: mime,
DocumentURL: document,
}
}
func (InlineQueryResultDocument) IsCached() bool { return false }
func NewInlineQueryResultGif(id, gif, thumb string) InlineQueryResultGif {
return InlineQueryResultGif{
Type: TypeGIF,
ID: id,
GifURL: gif,
ThumbURL: thumb,
}
}
func (InlineQueryResultGif) IsCached() bool { return false }
func NewInlineQueryResultLocation(id, title string, lat, long float32) InlineQueryResultLocation {
return InlineQueryResultLocation{
Type: TypeLocation,
ID: id,
Title: title,
Latitude: lat,
Longitude: long,
}
}
func (InlineQueryResultLocation) IsCached() bool { return false }
func NewInlineQueryResultMpeg4Gif(id, mpeg4, thumb string) InlineQueryResultMpeg4Gif {
return InlineQueryResultMpeg4Gif{
Type: TypeMpeg4Gif,
ID: id,
Mpeg4URL: mpeg4,
ThumbURL: thumb,
}
}
func (InlineQueryResultMpeg4Gif) IsCached() bool { return false }
func NewInlineQueryResultPhoto(id, photo, thumb string) InlineQueryResultPhoto {
return InlineQueryResultPhoto{
Type: TypePhoto,
ID: id,
PhotoURL: photo,
ThumbURL: thumb,
}
}
func (InlineQueryResultPhoto) IsCached() bool { return false }
func NewInlineQueryResultVenue(id, title, addr string, lat, long float32) InlineQueryResultVenue {
return InlineQueryResultVenue{
Type: TypeVenue,
ID: id,
Title: title,
Address: addr,
Latitude: lat,
Longitude: long,
}
}
func (InlineQueryResultVenue) IsCached() bool { return false }
func NewInlineQueryResultVideo(id, title, mime, video, thumb string) InlineQueryResultVideo {
return InlineQueryResultVideo{
Type: TypeVideo,
ID: id,
VideoURL: video,
MimeType: mime,
Title: title,
ThumbURL: thumb,
}
}
func (InlineQueryResultVideo) IsCached() bool { return false }
func NewInlineQueryResultVoice(id, title, voice string) InlineQueryResultVoice {
return InlineQueryResultVoice{
Type: TypeVoice,
ID: id,
Title: title,
VoiceURL: voice,
}
}
func (InlineQueryResultVoice) IsCached() bool { return false }
func (InlineKeyboardMarkup) isReplyMarkup() {}
func (ReplyKeyboardMarkup) isReplyMarkup() {}
func (ReplyKeyboardRemove) isReplyMarkup() {}
func (ForceReply) isReplyMarkup() {}