Added omitempty tag for clean JSON marshaling

bot-api-6.1
Alexander Borsuk 2020-05-11 10:54:32 +02:00
parent 774f1e72e7
commit 5b3f2f3365
1 changed files with 138 additions and 138 deletions

270
types.go
View File

@ -13,32 +13,32 @@ import (
// stored raw.
type APIResponse struct {
Ok bool `json:"ok"`
Result json.RawMessage `json:"result"`
ErrorCode int `json:"error_code"`
Description string `json:"description"`
Parameters *ResponseParameters `json:"parameters"`
Result json.RawMessage `json:"result,omitempty"`
ErrorCode int `json:"error_code,omitempty"`
Description string `json:"description,omitempty"`
Parameters *ResponseParameters `json:"parameters,omitempty"`
}
// ResponseParameters are various errors that can be returned in APIResponse.
type ResponseParameters struct {
MigrateToChatID int64 `json:"migrate_to_chat_id"` // optional
RetryAfter int `json:"retry_after"` // optional
MigrateToChatID int64 `json:"migrate_to_chat_id,omitempty"` // optional
RetryAfter int `json:"retry_after,omitempty"` // optional
}
// Update is an update response, from GetUpdates.
type Update struct {
UpdateID int `json:"update_id"`
Message *Message `json:"message"`
EditedMessage *Message `json:"edited_message"`
ChannelPost *Message `json:"channel_post"`
EditedChannelPost *Message `json:"edited_channel_post"`
InlineQuery *InlineQuery `json:"inline_query"`
ChosenInlineResult *ChosenInlineResult `json:"chosen_inline_result"`
CallbackQuery *CallbackQuery `json:"callback_query"`
ShippingQuery *ShippingQuery `json:"shipping_query"`
PreCheckoutQuery *PreCheckoutQuery `json:"pre_checkout_query"`
Poll *Poll `json:"poll"`
PollAnswer *PollAnswer `json:"poll_answer"`
Message *Message `json:"message,omitempty"`
EditedMessage *Message `json:"edited_message,omitempty"`
ChannelPost *Message `json:"channel_post,omitempty"`
EditedChannelPost *Message `json:"edited_channel_post,omitempty"`
InlineQuery *InlineQuery `json:"inline_query,omitempty"`
ChosenInlineResult *ChosenInlineResult `json:"chosen_inline_result,omitempty"`
CallbackQuery *CallbackQuery `json:"callback_query,omitempty"`
ShippingQuery *ShippingQuery `json:"shipping_query,omitempty"`
PreCheckoutQuery *PreCheckoutQuery `json:"pre_checkout_query,omitempty"`
Poll *Poll `json:"poll,omitempty"`
PollAnswer *PollAnswer `json:"poll_answer,omitempty"`
}
// UpdatesChannel is the channel for getting updates.
@ -55,13 +55,13 @@ func (ch UpdatesChannel) Clear() {
type User struct {
ID int `json:"id"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"` // optional
UserName string `json:"username"` // optional
LanguageCode string `json:"language_code"` // optional
IsBot bool `json:"is_bot"` // optional
CanJoinGroups bool `json:"can_join_groups"` // optional
CanReadAllGroupMessages bool `json:"can_read_all_group_messages"` // optional
SupportsInlineQueries bool `json:"supports_inline_queries"` // optional
LastName string `json:"last_name,omitempty"` // optional
UserName string `json:"username,omitempty"` // optional
LanguageCode string `json:"language_code,omitempty"` // optional
IsBot bool `json:"is_bot,omitempty"` // optional
CanJoinGroups bool `json:"can_join_groups,omitempty"` // optional
CanReadAllGroupMessages bool `json:"can_read_all_group_messages,omitempty"` // optional
SupportsInlineQueries bool `json:"supports_inline_queries,omitempty"` // optional
}
// String displays a simple text version of a user.
@ -112,19 +112,19 @@ type ChatPermissions struct {
type Chat struct {
ID int64 `json:"id"`
Type string `json:"type"`
Title string `json:"title"` // optional
UserName string `json:"username"` // optional
FirstName string `json:"first_name"` // optional
LastName string `json:"last_name"` // optional
AllMembersAreAdmins bool `json:"all_members_are_administrators"` // deprecated, optional
Photo *ChatPhoto `json:"photo"` // optional
Title string `json:"title,omitempty"` // optional
UserName string `json:"username,omitempty"` // optional
FirstName string `json:"first_name,omitempty"` // optional
LastName string `json:"last_name,omitempty"` // optional
AllMembersAreAdmins bool `json:"all_members_are_administrators,omitempty"` // deprecated, optional
Photo *ChatPhoto `json:"photo,omitempty"` // optional
Description string `json:"description,omitempty"` // optional
InviteLink string `json:"invite_link,omitempty"` // optional
PinnedMessage *Message `json:"pinned_message"` // optional
Permissions *ChatPermissions `json:"permissions"` // optional
SlowModeDelay int `json:"slow_mode_delay"` // optional
StickerSetName string `json:"sticker_set_name"` // optional
CanSetStickerSet bool `json:"can_set_sticker_set"` // optional
PinnedMessage *Message `json:"pinned_message,omitempty"` // optional
Permissions *ChatPermissions `json:"permissions,omitempty"` // optional
SlowModeDelay int `json:"slow_mode_delay,omitempty"` // optional
StickerSetName string `json:"sticker_set_name,omitempty"` // optional
CanSetStickerSet bool `json:"can_set_sticker_set,omitempty"` // optional
}
// IsPrivate returns if the Chat is a private conversation.
@ -156,53 +156,53 @@ func (c Chat) ChatConfig() ChatConfig {
// almost anything.
type Message struct {
MessageID int `json:"message_id"`
From *User `json:"from"` // optional
From *User `json:"from,omitempty"` // optional
Date int `json:"date"`
Chat *Chat `json:"chat"`
ForwardFrom *User `json:"forward_from"` // optional
ForwardFromChat *Chat `json:"forward_from_chat"` // optional
ForwardFromMessageID int `json:"forward_from_message_id"` // optional
ForwardSignature string `json:"forward_signature"` // optional
ForwardSenderName string `json:"forward_sender_name"` // optional
ForwardDate int `json:"forward_date"` // optional
ReplyToMessage *Message `json:"reply_to_message"` // optional
EditDate int `json:"edit_date"` // optional
MediaGroupID string `json:"media_group_id"` // optional
AuthorSignature string `json:"author_signature"` // optional
Text string `json:"text"` // optional
Entities []MessageEntity `json:"entities"` // optional
CaptionEntities []MessageEntity `json:"caption_entities"` // optional
Audio *Audio `json:"audio"` // optional
Document *Document `json:"document"` // optional
Animation *ChatAnimation `json:"animation"` // optional
Game *Game `json:"game"` // optional
Photo []PhotoSize `json:"photo"` // optional
Sticker *Sticker `json:"sticker"` // optional
Video *Video `json:"video"` // optional
VideoNote *VideoNote `json:"video_note"` // optional
Voice *Voice `json:"voice"` // optional
Caption string `json:"caption"` // optional
Contact *Contact `json:"contact"` // optional
Location *Location `json:"location"` // optional
Venue *Venue `json:"venue"` // optional
Poll *Poll `json:"poll"` // optional
Dice *Dice `json:"dice"` // optional
NewChatMembers []User `json:"new_chat_members"` // optional
LeftChatMember *User `json:"left_chat_member"` // optional
NewChatTitle string `json:"new_chat_title"` // optional
NewChatPhoto []PhotoSize `json:"new_chat_photo"` // optional
DeleteChatPhoto bool `json:"delete_chat_photo"` // optional
GroupChatCreated bool `json:"group_chat_created"` // optional
SuperGroupChatCreated bool `json:"supergroup_chat_created"` // optional
ChannelChatCreated bool `json:"channel_chat_created"` // optional
MigrateToChatID int64 `json:"migrate_to_chat_id"` // optional
MigrateFromChatID int64 `json:"migrate_from_chat_id"` // optional
PinnedMessage *Message `json:"pinned_message"` // optional
Invoice *Invoice `json:"invoice"` // optional
SuccessfulPayment *SuccessfulPayment `json:"successful_payment"` // optional
ConnectedWebsite string `json:"connected_website"` // optional
ForwardFrom *User `json:"forward_from,omitempty"` // optional
ForwardFromChat *Chat `json:"forward_from_chat,omitempty"` // optional
ForwardFromMessageID int `json:"forward_from_message_id,omitempty"` // optional
ForwardSignature string `json:"forward_signature,omitempty"` // optional
ForwardSenderName string `json:"forward_sender_name,omitempty"` // optional
ForwardDate int `json:"forward_date,omitempty"` // optional
ReplyToMessage *Message `json:"reply_to_message,omitempty"` // optional
EditDate int `json:"edit_date,omitempty"` // optional
MediaGroupID string `json:"media_group_id,omitempty"` // optional
AuthorSignature string `json:"author_signature,omitempty"` // optional
Text string `json:"text,omitempty"` // optional
Entities []MessageEntity `json:"entities,omitempty"` // optional
CaptionEntities []MessageEntity `json:"caption_entities,omitempty"` // optional
Audio *Audio `json:"audio,omitempty"` // optional
Document *Document `json:"document,omitempty"` // optional
Animation *ChatAnimation `json:"animation,omitempty"` // optional
Game *Game `json:"game,omitempty"` // optional
Photo []PhotoSize `json:"photo,omitempty"` // optional
Sticker *Sticker `json:"sticker,omitempty"` // optional
Video *Video `json:"video,omitempty"` // optional
VideoNote *VideoNote `json:"video_note,omitempty"` // optional
Voice *Voice `json:"voice,omitempty"` // optional
Caption string `json:"caption,omitempty"` // optional
Contact *Contact `json:"contact,omitempty"` // optional
Location *Location `json:"location,omitempty"` // optional
Venue *Venue `json:"venue,omitempty"` // optional
Poll *Poll `json:"poll,omitempty"` // optional
Dice *Dice `json:"dice,omitempty"` // optional
NewChatMembers []User `json:"new_chat_members,omitempty"` // optional
LeftChatMember *User `json:"left_chat_member,omitempty"` // optional
NewChatTitle string `json:"new_chat_title,omitempty"` // optional
NewChatPhoto []PhotoSize `json:"new_chat_photo,omitempty"` // optional
DeleteChatPhoto bool `json:"delete_chat_photo,omitempty"` // optional
GroupChatCreated bool `json:"group_chat_created,omitempty"` // optional
SuperGroupChatCreated bool `json:"supergroup_chat_created,omitempty"` // optional
ChannelChatCreated bool `json:"channel_chat_created,omitempty"` // optional
MigrateToChatID int64 `json:"migrate_to_chat_id,omitempty"` // optional
MigrateFromChatID int64 `json:"migrate_from_chat_id,omitempty"` // optional
PinnedMessage *Message `json:"pinned_message,omitempty"` // optional
Invoice *Invoice `json:"invoice,omitempty"` // optional
SuccessfulPayment *SuccessfulPayment `json:"successful_payment,omitempty"` // optional
ConnectedWebsite string `json:"connected_website,omitempty"` // optional
PassportData *PassportData `json:"passport_data,omitempty"` // optional
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup"` // optional
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"` // optional
}
// Time converts the message timestamp into a Time.
@ -279,9 +279,9 @@ type MessageEntity struct {
Type string `json:"type"`
Offset int `json:"offset"`
Length int `json:"length"`
URL string `json:"url"` // optional
User *User `json:"user"` // optional
Language string `json:"language"` // optional
URL string `json:"url,omitempty"` // optional
User *User `json:"user,omitempty"` // optional
Language string `json:"language,omitempty"` // optional
}
// ParseURL attempts to parse a URL contained within a MessageEntity.
@ -349,7 +349,7 @@ type PhotoSize struct {
FileUniqueID string `json:"file_unique_id"`
Width int `json:"width"`
Height int `json:"height"`
FileSize int `json:"file_size"` // optional
FileSize int `json:"file_size,omitempty"` // optional
}
// Audio contains information about audio.
@ -357,20 +357,20 @@ type Audio struct {
FileID string `json:"file_id"`
FileUniqueID string `json:"file_unique_id"`
Duration int `json:"duration"`
Performer string `json:"performer"` // optional
Title string `json:"title"` // optional
MimeType string `json:"mime_type"` // optional
FileSize int `json:"file_size"` // optional
Performer string `json:"performer,omitempty"` // optional
Title string `json:"title,omitempty"` // optional
MimeType string `json:"mime_type,omitempty"` // optional
FileSize int `json:"file_size,omitempty"` // optional
}
// Document contains information about a document.
type Document struct {
FileID string `json:"file_id"`
FileUniqueID string `json:"file_unique_id"`
Thumbnail *PhotoSize `json:"thumb"` // optional
FileName string `json:"file_name"` // optional
MimeType string `json:"mime_type"` // optional
FileSize int `json:"file_size"` // optional
Thumbnail *PhotoSize `json:"thumb,omitempty"` // optional
FileName string `json:"file_name,omitempty"` // optional
MimeType string `json:"mime_type,omitempty"` // optional
FileSize int `json:"file_size,omitempty"` // optional
}
// Sticker contains information about a sticker.
@ -380,11 +380,11 @@ type Sticker struct {
Width int `json:"width"`
Height int `json:"height"`
IsAnimated bool `json:"is_animated"`
Thumbnail *PhotoSize `json:"thumb"` // optional
Emoji string `json:"emoji"` // optional
SetName string `json:"set_name"` // optional
MaskPosition MaskPosition `json:"mask_position"` //optional
FileSize int `json:"file_size"` // optional
Thumbnail *PhotoSize `json:"thumb,omitempty"` // optional
Emoji string `json:"emoji,omitempty"` // optional
SetName string `json:"set_name,omitempty"` // optional
MaskPosition MaskPosition `json:"mask_position,omitempty"` //optional
FileSize int `json:"file_size,omitempty"` // optional
}
// MaskPosition is the position of a mask.
@ -396,10 +396,10 @@ type MaskPosition struct {
FileID string `json:"file_id"`
Width int `json:"width"`
Height int `json:"height"`
Thumbnail *PhotoSize `json:"thumb"` // optional
Emoji string `json:"emoji"` // optional
FileSize int `json:"file_size"` // optional
SetName string `json:"set_name"` // optional
Thumbnail *PhotoSize `json:"thumb,omitempty"` // optional
Emoji string `json:"emoji,omitempty"` // optional
FileSize int `json:"file_size,omitempty"` // optional
SetName string `json:"set_name,omitempty"` // optional
}
// ChatAnimation contains information about an animation.
@ -409,10 +409,10 @@ type ChatAnimation struct {
Width int `json:"width"`
Height int `json:"height"`
Duration int `json:"duration"`
Thumbnail *PhotoSize `json:"thumb"` // optional
FileName string `json:"file_name"` // optional
MimeType string `json:"mime_type"` // optional
FileSize int `json:"file_size"` // optional
Thumbnail *PhotoSize `json:"thumb,omitempty"` // optional
FileName string `json:"file_name,omitempty"` // optional
MimeType string `json:"mime_type,omitempty"` // optional
FileSize int `json:"file_size,omitempty"` // optional
}
// Video contains information about a video.
@ -422,9 +422,9 @@ type Video struct {
Width int `json:"width"`
Height int `json:"height"`
Duration int `json:"duration"`
Thumbnail *PhotoSize `json:"thumb"` // optional
MimeType string `json:"mime_type"` // optional
FileSize int `json:"file_size"` // optional
Thumbnail *PhotoSize `json:"thumb,omitempty"` // optional
MimeType string `json:"mime_type,omitempty"` // optional
FileSize int `json:"file_size,omitempty"` // optional
}
// VideoNote contains information about a video.
@ -433,8 +433,8 @@ type VideoNote struct {
FileUniqueID string `json:"file_unique_id"`
Length int `json:"length"`
Duration int `json:"duration"`
Thumbnail *PhotoSize `json:"thumb"` // optional
FileSize int `json:"file_size"` // optional
Thumbnail *PhotoSize `json:"thumb,omitempty"` // optional
FileSize int `json:"file_size,omitempty"` // optional
}
// Voice contains information about a voice.
@ -442,8 +442,8 @@ type Voice struct {
FileID string `json:"file_id"`
FileUniqueID string `json:"file_unique_id"`
Duration int `json:"duration"`
MimeType string `json:"mime_type"` // optional
FileSize int `json:"file_size"` // optional
MimeType string `json:"mime_type,omitempty"` // optional
FileSize int `json:"file_size,omitempty"` // optional
}
// Contact contains information about a contact.
@ -452,9 +452,9 @@ type Voice struct {
type Contact struct {
PhoneNumber string `json:"phone_number"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"` // optional
UserID int `json:"user_id"` // optional
VCard string `json:"vcard"` // optional
LastName string `json:"last_name,omitempty"` // optional
UserID int `json:"user_id,omitempty"` // optional
VCard string `json:"vcard,omitempty"` // optional
}
// Location contains information about a place.
@ -468,7 +468,7 @@ type Venue struct {
Location Location `json:"location"`
Title string `json:"title"`
Address string `json:"address"`
FoursquareID string `json:"foursquare_id"` // optional
FoursquareID string `json:"foursquare_id,omitempty"` // optional
}
// PollOption contains information about one answer option in a poll.
@ -493,11 +493,11 @@ type Poll struct {
IsAnonymous bool `json:"is_anonymous"`
Type string `json:"type"`
AllowsMultipleAnswers bool `json:"allows_multiple_answers"`
CorrectOptionID int `json:"correct_option_id"` // optional
Explanation string `json:"explanation"` // optional
ExplanationEntities []MessageEntity `json:"explanation_entities"` // optional
OpenPeriod int `json:"open_period"` // optional
CloseDate int `json:"close_date"` // optional
CorrectOptionID int `json:"correct_option_id,omitempty"` // optional
Explanation string `json:"explanation,omitempty"` // optional
ExplanationEntities []MessageEntity `json:"explanation_entities,omitempty"` // optional
OpenPeriod int `json:"open_period,omitempty"` // optional
CloseDate int `json:"close_date,omitempty"` // optional
}
// Dice represents a single dice value.
@ -516,8 +516,8 @@ type UserProfilePhotos struct {
type File struct {
FileID string `json:"file_id"`
FileUniqueID string `json:"file_unique_id"`
FileSize int `json:"file_size"` // optional
FilePath string `json:"file_path"` // optional
FileSize int `json:"file_size,omitempty"` // optional
FilePath string `json:"file_path,omitempty"` // optional
}
// Link returns a full path to the download URL for a File.
@ -530,9 +530,9 @@ func (f *File) Link(token string) string {
// ReplyKeyboardMarkup allows the Bot to set a custom keyboard.
type ReplyKeyboardMarkup struct {
Keyboard [][]KeyboardButton `json:"keyboard"`
ResizeKeyboard bool `json:"resize_keyboard"` // optional
OneTimeKeyboard bool `json:"one_time_keyboard"` // optional
Selective bool `json:"selective"` // optional
ResizeKeyboard bool `json:"resize_keyboard,omitempty"` // optional
OneTimeKeyboard bool `json:"one_time_keyboard,omitempty"` // optional
Selective bool `json:"selective,omitempty"` // optional
}
// KeyboardButton is a button within a custom keyboard.
@ -552,7 +552,7 @@ type KeyboardButtonPollType struct {
// ReplyKeyboardHide allows the Bot to hide a custom keyboard.
type ReplyKeyboardHide struct {
HideKeyboard bool `json:"hide_keyboard"`
Selective bool `json:"selective"` // optional
Selective bool `json:"selective,omitempty"` // optional
}
// ReplyKeyboardRemove allows the Bot to hide a custom keyboard.
@ -597,11 +597,11 @@ type LoginURL struct {
type CallbackQuery struct {
ID string `json:"id"`
From *User `json:"from"`
Message *Message `json:"message"` // optional
InlineMessageID string `json:"inline_message_id"` // optional
Message *Message `json:"message,omitempty"` // optional
InlineMessageID string `json:"inline_message_id,omitempty"` // optional
ChatInstance string `json:"chat_instance"`
Data string `json:"data"` // optional
GameShortName string `json:"game_short_name"` // optional
Data string `json:"data,omitempty"` // optional
GameShortName string `json:"game_short_name,omitempty"` // optional
}
// ForceReply allows the Bot to have users directly reply to it without
@ -615,7 +615,7 @@ type ForceReply struct {
type ChatMember struct {
User *User `json:"user"`
Status string `json:"status"`
CustomTitle string `json:"custom_title"` // optional
CustomTitle string `json:"custom_title,omitempty"` // optional
UntilDate int64 `json:"until_date,omitempty"` // optional
CanBeEdited bool `json:"can_be_edited,omitempty"` // optional
CanPostMessages bool `json:"can_post_messages,omitempty"` // optional
@ -626,7 +626,7 @@ type ChatMember struct {
CanChangeInfo bool `json:"can_change_info,omitempty"` // optional
CanInviteUsers bool `json:"can_invite_users,omitempty"` // optional
CanPinMessages bool `json:"can_pin_messages,omitempty"` // optional
IsChatMember bool `json:"is_member"` // optional
IsChatMember bool `json:"is_member,omitempty"` // optional
CanSendMessages bool `json:"can_send_messages,omitempty"` // optional
CanSendMediaMessages bool `json:"can_send_media_messages,omitempty"` // optional
CanSendPolls bool `json:"can_send_polls,omitempty"` // optional
@ -684,8 +684,8 @@ type WebhookInfo struct {
URL string `json:"url"`
HasCustomCertificate bool `json:"has_custom_certificate"`
PendingUpdateCount int `json:"pending_update_count"`
LastErrorDate int `json:"last_error_date"` // optional
LastErrorMessage string `json:"last_error_message"` // optional
LastErrorDate int `json:"last_error_date,omitempty"` // optional
LastErrorMessage string `json:"last_error_message,omitempty"` // optional
}
// IsSet returns true if a webhook is currently set.
@ -697,7 +697,7 @@ func (info WebhookInfo) IsSet() bool {
type InlineQuery struct {
ID string `json:"id"`
From *User `json:"from"`
Location *Location `json:"location"` // optional
Location *Location `json:"location,omitempty"` // optional
Query string `json:"query"`
Offset string `json:"offset"`
}