Update to TDLib 1.8.16

This commit is contained in:
c0re100 2023-08-16 02:28:13 +08:00
parent 7a1c7f37a2
commit 0b8a2f54dd
No known key found for this signature in database
GPG key ID: 7C3B3004FE745AAF
4 changed files with 2089 additions and 109 deletions

View file

@ -3218,7 +3218,7 @@ type SendInlineQueryResultMessageRequest struct {
Options *MessageSendOptions `json:"options"` Options *MessageSendOptions `json:"options"`
// Identifier of the inline query // Identifier of the inline query
QueryId JsonInt64 `json:"query_id"` QueryId JsonInt64 `json:"query_id"`
// Identifier of the inline result // Identifier of the inline query result
ResultId string `json:"result_id"` ResultId string `json:"result_id"`
// Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption("animation_search_bot_username"), getOption("photo_search_bot_username"), and getOption("venue_search_bot_username") // Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption("animation_search_bot_username"), getOption("photo_search_bot_username"), and getOption("venue_search_bot_username")
HideViaBot bool `json:"hide_via_bot"` HideViaBot bool `json:"hide_via_bot"`
@ -5110,7 +5110,7 @@ type GetInlineQueryResultsRequest struct {
UserLocation *Location `json:"user_location"` UserLocation *Location `json:"user_location"`
// Text of the query // Text of the query
Query string `json:"query"` Query string `json:"query"`
// Offset of the first entry to return // Offset of the first entry to return; use empty string to get the first chunk of results
Offset string `json:"offset"` Offset string `json:"offset"`
} }
@ -8416,14 +8416,53 @@ func (client *Client) GetStory(req *GetStoryRequest) (*Story, error) {
return UnmarshalStory(result.Data) return UnmarshalStory(result.Data)
} }
// Checks whether the current user can send a story
func (client *Client) CanSendStory() (CanSendStoryResult, error) {
result, err := client.Send(Request{
meta: meta{
Type: "canSendStory",
},
Data: map[string]interface{}{},
})
if err != nil {
return nil, err
}
if result.Type == "error" {
return nil, buildResponseError(result.Data)
}
switch result.Type {
case TypeCanSendStoryResultOk:
return UnmarshalCanSendStoryResultOk(result.Data)
case TypeCanSendStoryResultPremiumNeeded:
return UnmarshalCanSendStoryResultPremiumNeeded(result.Data)
case TypeCanSendStoryResultActiveStoryLimitExceeded:
return UnmarshalCanSendStoryResultActiveStoryLimitExceeded(result.Data)
case TypeCanSendStoryResultWeeklyLimitExceeded:
return UnmarshalCanSendStoryResultWeeklyLimitExceeded(result.Data)
case TypeCanSendStoryResultMonthlyLimitExceeded:
return UnmarshalCanSendStoryResultMonthlyLimitExceeded(result.Data)
default:
return nil, errors.New("invalid type")
}
}
type SendStoryRequest struct { type SendStoryRequest struct {
// Content of the story // Content of the story
Content InputStoryContent `json:"content"` Content InputStoryContent `json:"content"`
// Clickable rectangle areas to be shown on the story media; pass null if none
Areas *InputStoryAreas `json:"areas"`
// Story caption; pass null to use an empty caption; 0-getOption("story_caption_length_max") characters // Story caption; pass null to use an empty caption; 0-getOption("story_caption_length_max") characters
Caption *FormattedText `json:"caption"` Caption *FormattedText `json:"caption"`
// The privacy settings for the story // The privacy settings for the story
PrivacySettings StoryPrivacySettings `json:"privacy_settings"` PrivacySettings StoryPrivacySettings `json:"privacy_settings"`
// Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, 2 * 86400, 3 * 86400, or 7 * 86400 for Telegram Premium users, and 86400 otherwise // Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise
ActivePeriod int32 `json:"active_period"` ActivePeriod int32 `json:"active_period"`
// Pass true to keep the story accessible after expiration // Pass true to keep the story accessible after expiration
IsPinned bool `json:"is_pinned"` IsPinned bool `json:"is_pinned"`
@ -8431,7 +8470,7 @@ type SendStoryRequest struct {
ProtectContent bool `json:"protect_content"` ProtectContent bool `json:"protect_content"`
} }
// Sends a new story. Returns a temporary story with identifier 0 // Sends a new story. Returns a temporary story
func (client *Client) SendStory(req *SendStoryRequest) (*Story, error) { func (client *Client) SendStory(req *SendStoryRequest) (*Story, error) {
result, err := client.Send(Request{ result, err := client.Send(Request{
meta: meta{ meta: meta{
@ -8439,6 +8478,7 @@ func (client *Client) SendStory(req *SendStoryRequest) (*Story, error) {
}, },
Data: map[string]interface{}{ Data: map[string]interface{}{
"content": req.Content, "content": req.Content,
"areas": req.Areas,
"caption": req.Caption, "caption": req.Caption,
"privacy_settings": req.PrivacySettings, "privacy_settings": req.PrivacySettings,
"active_period": req.ActivePeriod, "active_period": req.ActivePeriod,
@ -8462,6 +8502,8 @@ type EditStoryRequest struct {
StoryId int32 `json:"story_id"` StoryId int32 `json:"story_id"`
// New content of the story; pass null to keep the current content // New content of the story; pass null to keep the current content
Content InputStoryContent `json:"content"` Content InputStoryContent `json:"content"`
// New clickable rectangle areas to be shown on the story media; pass null to keep the current areas. Areas can't be edited if story content isn't changed
Areas *InputStoryAreas `json:"areas"`
// New story caption; pass null to keep the current caption // New story caption; pass null to keep the current caption
Caption *FormattedText `json:"caption"` Caption *FormattedText `json:"caption"`
} }
@ -8475,6 +8517,7 @@ func (client *Client) EditStory(req *EditStoryRequest) (*Ok, error) {
Data: map[string]interface{}{ Data: map[string]interface{}{
"story_id": req.StoryId, "story_id": req.StoryId,
"content": req.Content, "content": req.Content,
"areas": req.Areas,
"caption": req.Caption, "caption": req.Caption,
}, },
}) })
@ -8792,24 +8835,94 @@ func (client *Client) CloseStory(req *CloseStoryRequest) (*Ok, error) {
return UnmarshalOk(result.Data) return UnmarshalOk(result.Data)
} }
type GetStoryAvailableReactionsRequest struct {
// Number of reaction per row, 5-25
RowSize int32 `json:"row_size"`
}
// Returns reactions, which can be chosen for a story
func (client *Client) GetStoryAvailableReactions(req *GetStoryAvailableReactionsRequest) (*AvailableReactions, error) {
result, err := client.Send(Request{
meta: meta{
Type: "getStoryAvailableReactions",
},
Data: map[string]interface{}{
"row_size": req.RowSize,
},
})
if err != nil {
return nil, err
}
if result.Type == "error" {
return nil, buildResponseError(result.Data)
}
return UnmarshalAvailableReactions(result.Data)
}
type SetStoryReactionRequest struct {
// The identifier of the sender of the story
StorySenderChatId int64 `json:"story_sender_chat_id"`
// The identifier of the story
StoryId int32 `json:"story_id"`
// Type of the reaction to set; pass null to remove the reaction. `reactionTypeCustomEmoji` reactions can be used only by Telegram Premium users
ReactionType ReactionType `json:"reaction_type"`
// Pass true if the reaction needs to be added to recent reactions
UpdateRecentReactions bool `json:"update_recent_reactions"`
}
// Changes chosen reaction on a story
func (client *Client) SetStoryReaction(req *SetStoryReactionRequest) (*Ok, error) {
result, err := client.Send(Request{
meta: meta{
Type: "setStoryReaction",
},
Data: map[string]interface{}{
"story_sender_chat_id": req.StorySenderChatId,
"story_id": req.StoryId,
"reaction_type": req.ReactionType,
"update_recent_reactions": req.UpdateRecentReactions,
},
})
if err != nil {
return nil, err
}
if result.Type == "error" {
return nil, buildResponseError(result.Data)
}
return UnmarshalOk(result.Data)
}
type GetStoryViewersRequest struct { type GetStoryViewersRequest struct {
// Story identifier // Story identifier
StoryId int32 `json:"story_id"` StoryId int32 `json:"story_id"`
// A viewer from which to return next viewers; pass null to get results from the beginning // Query to search for in names and usernames of the viewers; may be empty to get all relevant viewers
OffsetViewer *MessageViewer `json:"offset_viewer"` Query string `json:"query"`
// The maximum number of story viewers to return For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit // Pass true to get only contacts; pass false to get all relevant viewers
OnlyContacts bool `json:"only_contacts"`
// Pass true to get viewers with reaction first; pass false to get viewers sorted just by view_date
PreferWithReaction bool `json:"prefer_with_reaction"`
// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results
Offset string `json:"offset"`
// The maximum number of story viewers to return
Limit int32 `json:"limit"` Limit int32 `json:"limit"`
} }
// Returns viewers of a recent outgoing story. The method can be called if story.can_get_viewers == true. The views are returned in a reverse chronological order (i.e., in order of decreasing view_date) For optimal performance, the number of returned stories is chosen by TDLib // Returns viewers of a story. The method can be called if story.can_get_viewers == true
func (client *Client) GetStoryViewers(req *GetStoryViewersRequest) (*MessageViewers, error) { func (client *Client) GetStoryViewers(req *GetStoryViewersRequest) (*StoryViewers, error) {
result, err := client.Send(Request{ result, err := client.Send(Request{
meta: meta{ meta: meta{
Type: "getStoryViewers", Type: "getStoryViewers",
}, },
Data: map[string]interface{}{ Data: map[string]interface{}{
"story_id": req.StoryId, "story_id": req.StoryId,
"offset_viewer": req.OffsetViewer, "query": req.Query,
"only_contacts": req.OnlyContacts,
"prefer_with_reaction": req.PreferWithReaction,
"offset": req.Offset,
"limit": req.Limit, "limit": req.Limit,
}, },
}) })
@ -8821,7 +8934,7 @@ func (client *Client) GetStoryViewers(req *GetStoryViewersRequest) (*MessageView
return nil, buildResponseError(result.Data) return nil, buildResponseError(result.Data)
} }
return UnmarshalMessageViewers(result.Data) return UnmarshalStoryViewers(result.Data)
} }
type ReportStoryRequest struct { type ReportStoryRequest struct {
@ -8859,6 +8972,25 @@ func (client *Client) ReportStory(req *ReportStoryRequest) (*Ok, error) {
return UnmarshalOk(result.Data) return UnmarshalOk(result.Data)
} }
// Activates stealth mode for stories, which hides all views of stories from the current user in the last "story_stealth_mode_past_period" seconds and for the next "story_stealth_mode_future_period" seconds; for Telegram Premium users only
func (client *Client) ActivateStoryStealthMode() (*Ok, error) {
result, err := client.Send(Request{
meta: meta{
Type: "activateStoryStealthMode",
},
Data: map[string]interface{}{},
})
if err != nil {
return nil, err
}
if result.Type == "error" {
return nil, buildResponseError(result.Data)
}
return UnmarshalOk(result.Data)
}
type GetAttachmentMenuBotRequest struct { type GetAttachmentMenuBotRequest struct {
// Bot's user identifier // Bot's user identifier
BotUserId int64 `json:"bot_user_id"` BotUserId int64 `json:"bot_user_id"`
@ -11198,22 +11330,22 @@ func (client *Client) GetGroupCallStreamSegment(req *GetGroupCallStreamSegmentRe
return UnmarshalFilePart(result.Data) return UnmarshalFilePart(result.Data)
} }
type ToggleMessageSenderIsBlockedRequest struct { type SetMessageSenderBlockListRequest struct {
// Identifier of a message sender to block/unblock // Identifier of a message sender to block/unblock
SenderId MessageSender `json:"sender_id"` SenderId MessageSender `json:"sender_id"`
// New value of is_blocked // New block list for the message sender; pass null to unblock the message sender
IsBlocked bool `json:"is_blocked"` BlockList BlockList `json:"block_list"`
} }
// Changes the block state of a message sender. Currently, only users and supergroup chats can be blocked // Changes the block list of a message sender. Currently, only users and supergroup chats can be blocked
func (client *Client) ToggleMessageSenderIsBlocked(req *ToggleMessageSenderIsBlockedRequest) (*Ok, error) { func (client *Client) SetMessageSenderBlockList(req *SetMessageSenderBlockListRequest) (*Ok, error) {
result, err := client.Send(Request{ result, err := client.Send(Request{
meta: meta{ meta: meta{
Type: "toggleMessageSenderIsBlocked", Type: "setMessageSenderBlockList",
}, },
Data: map[string]interface{}{ Data: map[string]interface{}{
"sender_id": req.SenderId, "sender_id": req.SenderId,
"is_blocked": req.IsBlocked, "block_list": req.BlockList,
}, },
}) })
if err != nil { if err != nil {
@ -11263,6 +11395,8 @@ func (client *Client) BlockMessageSenderFromReplies(req *BlockMessageSenderFromR
} }
type GetBlockedMessageSendersRequest struct { type GetBlockedMessageSendersRequest struct {
// Block list from which to return users
BlockList BlockList `json:"block_list"`
// Number of users and chats to skip in the result; must be non-negative // Number of users and chats to skip in the result; must be non-negative
Offset int32 `json:"offset"` Offset int32 `json:"offset"`
// The maximum number of users and chats to return; up to 100 // The maximum number of users and chats to return; up to 100
@ -11276,6 +11410,7 @@ func (client *Client) GetBlockedMessageSenders(req *GetBlockedMessageSendersRequ
Type: "getBlockedMessageSenders", Type: "getBlockedMessageSenders",
}, },
Data: map[string]interface{}{ Data: map[string]interface{}{
"block_list": req.BlockList,
"offset": req.Offset, "offset": req.Offset,
"limit": req.Limit, "limit": req.Limit,
}, },
@ -13166,7 +13301,7 @@ func (client *Client) GetMenuButton(req *GetMenuButtonRequest) (*BotMenuButton,
} }
type SetDefaultGroupAdministratorRightsRequest struct { type SetDefaultGroupAdministratorRightsRequest struct {
// Default administrator rights for adding the bot to basic group and supergroup chats; may be null // Default administrator rights for adding the bot to basic group and supergroup chats; pass null to remove default rights
DefaultGroupAdministratorRights *ChatAdministratorRights `json:"default_group_administrator_rights"` DefaultGroupAdministratorRights *ChatAdministratorRights `json:"default_group_administrator_rights"`
} }
@ -13192,7 +13327,7 @@ func (client *Client) SetDefaultGroupAdministratorRights(req *SetDefaultGroupAdm
} }
type SetDefaultChannelAdministratorRightsRequest struct { type SetDefaultChannelAdministratorRightsRequest struct {
// Default administrator rights for adding the bot to channels; may be null // Default administrator rights for adding the bot to channels; pass null to remove default rights
DefaultChannelAdministratorRights *ChatAdministratorRights `json:"default_channel_administrator_rights"` DefaultChannelAdministratorRights *ChatAdministratorRights `json:"default_channel_administrator_rights"`
} }
@ -18410,8 +18545,8 @@ func (client *Client) TestUseUpdate() (Update, error) {
case TypeUpdateChatIsMarkedAsUnread: case TypeUpdateChatIsMarkedAsUnread:
return UnmarshalUpdateChatIsMarkedAsUnread(result.Data) return UnmarshalUpdateChatIsMarkedAsUnread(result.Data)
case TypeUpdateChatIsBlocked: case TypeUpdateChatBlockList:
return UnmarshalUpdateChatIsBlocked(result.Data) return UnmarshalUpdateChatBlockList(result.Data)
case TypeUpdateChatHasScheduledMessages: case TypeUpdateChatHasScheduledMessages:
return UnmarshalUpdateChatHasScheduledMessages(result.Data) return UnmarshalUpdateChatHasScheduledMessages(result.Data)
@ -18521,12 +18656,21 @@ func (client *Client) TestUseUpdate() (Update, error) {
case TypeUpdateStoryDeleted: case TypeUpdateStoryDeleted:
return UnmarshalUpdateStoryDeleted(result.Data) return UnmarshalUpdateStoryDeleted(result.Data)
case TypeUpdateStorySendSucceeded:
return UnmarshalUpdateStorySendSucceeded(result.Data)
case TypeUpdateStorySendFailed:
return UnmarshalUpdateStorySendFailed(result.Data)
case TypeUpdateChatActiveStories: case TypeUpdateChatActiveStories:
return UnmarshalUpdateChatActiveStories(result.Data) return UnmarshalUpdateChatActiveStories(result.Data)
case TypeUpdateStoryListChatCount: case TypeUpdateStoryListChatCount:
return UnmarshalUpdateStoryListChatCount(result.Data) return UnmarshalUpdateStoryListChatCount(result.Data)
case TypeUpdateStoryStealthMode:
return UnmarshalUpdateStoryStealthMode(result.Data)
case TypeUpdateOption: case TypeUpdateOption:
return UnmarshalUpdateOption(result.Data) return UnmarshalUpdateOption(result.Data)

File diff suppressed because it is too large Load diff

View file

@ -3633,6 +3633,15 @@ func UnmarshalPremiumLimitType(data json.RawMessage) (PremiumLimitType, error) {
case TypePremiumLimitTypeActiveStoryCount: case TypePremiumLimitTypeActiveStoryCount:
return UnmarshalPremiumLimitTypeActiveStoryCount(data) return UnmarshalPremiumLimitTypeActiveStoryCount(data)
case TypePremiumLimitTypeWeeklySentStoryCount:
return UnmarshalPremiumLimitTypeWeeklySentStoryCount(data)
case TypePremiumLimitTypeMonthlySentStoryCount:
return UnmarshalPremiumLimitTypeMonthlySentStoryCount(data)
case TypePremiumLimitTypeStoryCaptionLength:
return UnmarshalPremiumLimitTypeStoryCaptionLength(data)
default: default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type) return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
} }
@ -3706,6 +3715,9 @@ func UnmarshalPremiumFeature(data json.RawMessage) (PremiumFeature, error) {
case TypePremiumFeatureRealTimeChatTranslation: case TypePremiumFeatureRealTimeChatTranslation:
return UnmarshalPremiumFeatureRealTimeChatTranslation(data) return UnmarshalPremiumFeatureRealTimeChatTranslation(data)
case TypePremiumFeatureUpgradedStories:
return UnmarshalPremiumFeatureUpgradedStories(data)
default: default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type) return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
} }
@ -3725,6 +3737,52 @@ func UnmarshalListOfPremiumFeature(dataList []json.RawMessage) ([]PremiumFeature
return list, nil return list, nil
} }
func UnmarshalPremiumStoryFeature(data json.RawMessage) (PremiumStoryFeature, error) {
var meta meta
err := json.Unmarshal(data, &meta)
if err != nil {
return nil, err
}
switch meta.Type {
case TypePremiumStoryFeaturePriorityOrder:
return UnmarshalPremiumStoryFeaturePriorityOrder(data)
case TypePremiumStoryFeatureStealthMode:
return UnmarshalPremiumStoryFeatureStealthMode(data)
case TypePremiumStoryFeaturePermanentViewsHistory:
return UnmarshalPremiumStoryFeaturePermanentViewsHistory(data)
case TypePremiumStoryFeatureCustomExpirationDuration:
return UnmarshalPremiumStoryFeatureCustomExpirationDuration(data)
case TypePremiumStoryFeatureSaveStories:
return UnmarshalPremiumStoryFeatureSaveStories(data)
case TypePremiumStoryFeatureLinksAndFormatting:
return UnmarshalPremiumStoryFeatureLinksAndFormatting(data)
default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
}
}
func UnmarshalListOfPremiumStoryFeature(dataList []json.RawMessage) ([]PremiumStoryFeature, error) {
list := []PremiumStoryFeature{}
for _, data := range dataList {
entity, err := UnmarshalPremiumStoryFeature(data)
if err != nil {
return nil, err
}
list = append(list, entity)
}
return list, nil
}
func UnmarshalPremiumSource(data json.RawMessage) (PremiumSource, error) { func UnmarshalPremiumSource(data json.RawMessage) (PremiumSource, error) {
var meta meta var meta meta
@ -3740,6 +3798,9 @@ func UnmarshalPremiumSource(data json.RawMessage) (PremiumSource, error) {
case TypePremiumSourceFeature: case TypePremiumSourceFeature:
return UnmarshalPremiumSourceFeature(data) return UnmarshalPremiumSourceFeature(data)
case TypePremiumSourceStoryFeature:
return UnmarshalPremiumSourceStoryFeature(data)
case TypePremiumSourceLink: case TypePremiumSourceLink:
return UnmarshalPremiumSourceLink(data) return UnmarshalPremiumSourceLink(data)
@ -3974,6 +4035,49 @@ func UnmarshalListOfInputBackground(dataList []json.RawMessage) ([]InputBackgrou
return list, nil return list, nil
} }
func UnmarshalCanSendStoryResult(data json.RawMessage) (CanSendStoryResult, error) {
var meta meta
err := json.Unmarshal(data, &meta)
if err != nil {
return nil, err
}
switch meta.Type {
case TypeCanSendStoryResultOk:
return UnmarshalCanSendStoryResultOk(data)
case TypeCanSendStoryResultPremiumNeeded:
return UnmarshalCanSendStoryResultPremiumNeeded(data)
case TypeCanSendStoryResultActiveStoryLimitExceeded:
return UnmarshalCanSendStoryResultActiveStoryLimitExceeded(data)
case TypeCanSendStoryResultWeeklyLimitExceeded:
return UnmarshalCanSendStoryResultWeeklyLimitExceeded(data)
case TypeCanSendStoryResultMonthlyLimitExceeded:
return UnmarshalCanSendStoryResultMonthlyLimitExceeded(data)
default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
}
}
func UnmarshalListOfCanSendStoryResult(dataList []json.RawMessage) ([]CanSendStoryResult, error) {
list := []CanSendStoryResult{}
for _, data := range dataList {
entity, err := UnmarshalCanSendStoryResult(data)
if err != nil {
return nil, err
}
list = append(list, entity)
}
return list, nil
}
func UnmarshalCanTransferOwnershipResult(data json.RawMessage) (CanTransferOwnershipResult, error) { func UnmarshalCanTransferOwnershipResult(data json.RawMessage) (CanTransferOwnershipResult, error) {
var meta meta var meta meta
@ -4930,6 +5034,77 @@ func UnmarshalListOfInternalLinkType(dataList []json.RawMessage) ([]InternalLink
return list, nil return list, nil
} }
func UnmarshalStoryAreaType(data json.RawMessage) (StoryAreaType, error) {
var meta meta
err := json.Unmarshal(data, &meta)
if err != nil {
return nil, err
}
switch meta.Type {
case TypeStoryAreaTypeLocation:
return UnmarshalStoryAreaTypeLocation(data)
case TypeStoryAreaTypeVenue:
return UnmarshalStoryAreaTypeVenue(data)
default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
}
}
func UnmarshalListOfStoryAreaType(dataList []json.RawMessage) ([]StoryAreaType, error) {
list := []StoryAreaType{}
for _, data := range dataList {
entity, err := UnmarshalStoryAreaType(data)
if err != nil {
return nil, err
}
list = append(list, entity)
}
return list, nil
}
func UnmarshalInputStoryAreaType(data json.RawMessage) (InputStoryAreaType, error) {
var meta meta
err := json.Unmarshal(data, &meta)
if err != nil {
return nil, err
}
switch meta.Type {
case TypeInputStoryAreaTypeLocation:
return UnmarshalInputStoryAreaTypeLocation(data)
case TypeInputStoryAreaTypeFoundVenue:
return UnmarshalInputStoryAreaTypeFoundVenue(data)
case TypeInputStoryAreaTypePreviousVenue:
return UnmarshalInputStoryAreaTypePreviousVenue(data)
default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
}
}
func UnmarshalListOfInputStoryAreaType(dataList []json.RawMessage) ([]InputStoryAreaType, error) {
list := []InputStoryAreaType{}
for _, data := range dataList {
entity, err := UnmarshalInputStoryAreaType(data)
if err != nil {
return nil, err
}
list = append(list, entity)
}
return list, nil
}
func UnmarshalStoryContent(data json.RawMessage) (StoryContent, error) { func UnmarshalStoryContent(data json.RawMessage) (StoryContent, error) {
var meta meta var meta meta
@ -5035,6 +5210,40 @@ func UnmarshalListOfStoryList(dataList []json.RawMessage) ([]StoryList, error) {
return list, nil return list, nil
} }
func UnmarshalBlockList(data json.RawMessage) (BlockList, error) {
var meta meta
err := json.Unmarshal(data, &meta)
if err != nil {
return nil, err
}
switch meta.Type {
case TypeBlockListMain:
return UnmarshalBlockListMain(data)
case TypeBlockListStories:
return UnmarshalBlockListStories(data)
default:
return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type)
}
}
func UnmarshalListOfBlockList(dataList []json.RawMessage) ([]BlockList, error) {
list := []BlockList{}
for _, data := range dataList {
entity, err := UnmarshalBlockList(data)
if err != nil {
return nil, err
}
list = append(list, entity)
}
return list, nil
}
func UnmarshalFileType(data json.RawMessage) (FileType, error) { func UnmarshalFileType(data json.RawMessage) (FileType, error) {
var meta meta var meta meta
@ -5772,8 +5981,8 @@ func UnmarshalUpdate(data json.RawMessage) (Update, error) {
case TypeUpdateChatIsMarkedAsUnread: case TypeUpdateChatIsMarkedAsUnread:
return UnmarshalUpdateChatIsMarkedAsUnread(data) return UnmarshalUpdateChatIsMarkedAsUnread(data)
case TypeUpdateChatIsBlocked: case TypeUpdateChatBlockList:
return UnmarshalUpdateChatIsBlocked(data) return UnmarshalUpdateChatBlockList(data)
case TypeUpdateChatHasScheduledMessages: case TypeUpdateChatHasScheduledMessages:
return UnmarshalUpdateChatHasScheduledMessages(data) return UnmarshalUpdateChatHasScheduledMessages(data)
@ -5883,12 +6092,21 @@ func UnmarshalUpdate(data json.RawMessage) (Update, error) {
case TypeUpdateStoryDeleted: case TypeUpdateStoryDeleted:
return UnmarshalUpdateStoryDeleted(data) return UnmarshalUpdateStoryDeleted(data)
case TypeUpdateStorySendSucceeded:
return UnmarshalUpdateStorySendSucceeded(data)
case TypeUpdateStorySendFailed:
return UnmarshalUpdateStorySendFailed(data)
case TypeUpdateChatActiveStories: case TypeUpdateChatActiveStories:
return UnmarshalUpdateChatActiveStories(data) return UnmarshalUpdateChatActiveStories(data)
case TypeUpdateStoryListChatCount: case TypeUpdateStoryListChatCount:
return UnmarshalUpdateStoryListChatCount(data) return UnmarshalUpdateStoryListChatCount(data)
case TypeUpdateStoryStealthMode:
return UnmarshalUpdateStoryStealthMode(data)
case TypeUpdateOption: case TypeUpdateOption:
return UnmarshalUpdateOption(data) return UnmarshalUpdateOption(data)
@ -12149,6 +12367,30 @@ func UnmarshalPremiumLimitTypeActiveStoryCount(data json.RawMessage) (*PremiumLi
return &resp, err return &resp, err
} }
func UnmarshalPremiumLimitTypeWeeklySentStoryCount(data json.RawMessage) (*PremiumLimitTypeWeeklySentStoryCount, error) {
var resp PremiumLimitTypeWeeklySentStoryCount
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumLimitTypeMonthlySentStoryCount(data json.RawMessage) (*PremiumLimitTypeMonthlySentStoryCount, error) {
var resp PremiumLimitTypeMonthlySentStoryCount
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumLimitTypeStoryCaptionLength(data json.RawMessage) (*PremiumLimitTypeStoryCaptionLength, error) {
var resp PremiumLimitTypeStoryCaptionLength
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumFeatureIncreasedLimits(data json.RawMessage) (*PremiumFeatureIncreasedLimits, error) { func UnmarshalPremiumFeatureIncreasedLimits(data json.RawMessage) (*PremiumFeatureIncreasedLimits, error) {
var resp PremiumFeatureIncreasedLimits var resp PremiumFeatureIncreasedLimits
@ -12269,6 +12511,62 @@ func UnmarshalPremiumFeatureRealTimeChatTranslation(data json.RawMessage) (*Prem
return &resp, err return &resp, err
} }
func UnmarshalPremiumFeatureUpgradedStories(data json.RawMessage) (*PremiumFeatureUpgradedStories, error) {
var resp PremiumFeatureUpgradedStories
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumStoryFeaturePriorityOrder(data json.RawMessage) (*PremiumStoryFeaturePriorityOrder, error) {
var resp PremiumStoryFeaturePriorityOrder
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumStoryFeatureStealthMode(data json.RawMessage) (*PremiumStoryFeatureStealthMode, error) {
var resp PremiumStoryFeatureStealthMode
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumStoryFeaturePermanentViewsHistory(data json.RawMessage) (*PremiumStoryFeaturePermanentViewsHistory, error) {
var resp PremiumStoryFeaturePermanentViewsHistory
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumStoryFeatureCustomExpirationDuration(data json.RawMessage) (*PremiumStoryFeatureCustomExpirationDuration, error) {
var resp PremiumStoryFeatureCustomExpirationDuration
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumStoryFeatureSaveStories(data json.RawMessage) (*PremiumStoryFeatureSaveStories, error) {
var resp PremiumStoryFeatureSaveStories
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumStoryFeatureLinksAndFormatting(data json.RawMessage) (*PremiumStoryFeatureLinksAndFormatting, error) {
var resp PremiumStoryFeatureLinksAndFormatting
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumLimit(data json.RawMessage) (*PremiumLimit, error) { func UnmarshalPremiumLimit(data json.RawMessage) (*PremiumLimit, error) {
var resp PremiumLimit var resp PremiumLimit
@ -12301,6 +12599,14 @@ func UnmarshalPremiumSourceFeature(data json.RawMessage) (*PremiumSourceFeature,
return &resp, err return &resp, err
} }
func UnmarshalPremiumSourceStoryFeature(data json.RawMessage) (*PremiumSourceStoryFeature, error) {
var resp PremiumSourceStoryFeature
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalPremiumSourceLink(data json.RawMessage) (*PremiumSourceLink, error) { func UnmarshalPremiumSourceLink(data json.RawMessage) (*PremiumSourceLink, error) {
var resp PremiumSourceLink var resp PremiumSourceLink
@ -12549,6 +12855,46 @@ func UnmarshalHashtags(data json.RawMessage) (*Hashtags, error) {
return &resp, err return &resp, err
} }
func UnmarshalCanSendStoryResultOk(data json.RawMessage) (*CanSendStoryResultOk, error) {
var resp CanSendStoryResultOk
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalCanSendStoryResultPremiumNeeded(data json.RawMessage) (*CanSendStoryResultPremiumNeeded, error) {
var resp CanSendStoryResultPremiumNeeded
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalCanSendStoryResultActiveStoryLimitExceeded(data json.RawMessage) (*CanSendStoryResultActiveStoryLimitExceeded, error) {
var resp CanSendStoryResultActiveStoryLimitExceeded
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalCanSendStoryResultWeeklyLimitExceeded(data json.RawMessage) (*CanSendStoryResultWeeklyLimitExceeded, error) {
var resp CanSendStoryResultWeeklyLimitExceeded
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalCanSendStoryResultMonthlyLimitExceeded(data json.RawMessage) (*CanSendStoryResultMonthlyLimitExceeded, error) {
var resp CanSendStoryResultMonthlyLimitExceeded
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalCanTransferOwnershipResultOk(data json.RawMessage) (*CanTransferOwnershipResultOk, error) { func UnmarshalCanTransferOwnershipResultOk(data json.RawMessage) (*CanTransferOwnershipResultOk, error) {
var resp CanTransferOwnershipResultOk var resp CanTransferOwnershipResultOk
@ -13941,6 +14287,94 @@ func UnmarshalMessageLinkInfo(data json.RawMessage) (*MessageLinkInfo, error) {
return &resp, err return &resp, err
} }
func UnmarshalStoryViewer(data json.RawMessage) (*StoryViewer, error) {
var resp StoryViewer
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalStoryViewers(data json.RawMessage) (*StoryViewers, error) {
var resp StoryViewers
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalStoryAreaPosition(data json.RawMessage) (*StoryAreaPosition, error) {
var resp StoryAreaPosition
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalStoryAreaTypeLocation(data json.RawMessage) (*StoryAreaTypeLocation, error) {
var resp StoryAreaTypeLocation
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalStoryAreaTypeVenue(data json.RawMessage) (*StoryAreaTypeVenue, error) {
var resp StoryAreaTypeVenue
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalStoryArea(data json.RawMessage) (*StoryArea, error) {
var resp StoryArea
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalInputStoryAreaTypeLocation(data json.RawMessage) (*InputStoryAreaTypeLocation, error) {
var resp InputStoryAreaTypeLocation
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalInputStoryAreaTypeFoundVenue(data json.RawMessage) (*InputStoryAreaTypeFoundVenue, error) {
var resp InputStoryAreaTypeFoundVenue
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalInputStoryAreaTypePreviousVenue(data json.RawMessage) (*InputStoryAreaTypePreviousVenue, error) {
var resp InputStoryAreaTypePreviousVenue
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalInputStoryArea(data json.RawMessage) (*InputStoryArea, error) {
var resp InputStoryArea
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalInputStoryAreas(data json.RawMessage) (*InputStoryAreas, error) {
var resp InputStoryAreas
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalStoryVideo(data json.RawMessage) (*StoryVideo, error) { func UnmarshalStoryVideo(data json.RawMessage) (*StoryVideo, error) {
var resp StoryVideo var resp StoryVideo
@ -14045,6 +14479,22 @@ func UnmarshalChatActiveStories(data json.RawMessage) (*ChatActiveStories, error
return &resp, err return &resp, err
} }
func UnmarshalBlockListMain(data json.RawMessage) (*BlockListMain, error) {
var resp BlockListMain
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalBlockListStories(data json.RawMessage) (*BlockListStories, error) {
var resp BlockListStories
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalFilePart(data json.RawMessage) (*FilePart, error) { func UnmarshalFilePart(data json.RawMessage) (*FilePart, error) {
var resp FilePart var resp FilePart
@ -15181,8 +15631,8 @@ func UnmarshalUpdateChatIsMarkedAsUnread(data json.RawMessage) (*UpdateChatIsMar
return &resp, err return &resp, err
} }
func UnmarshalUpdateChatIsBlocked(data json.RawMessage) (*UpdateChatIsBlocked, error) { func UnmarshalUpdateChatBlockList(data json.RawMessage) (*UpdateChatBlockList, error) {
var resp UpdateChatIsBlocked var resp UpdateChatBlockList
err := json.Unmarshal(data, &resp) err := json.Unmarshal(data, &resp)
@ -15477,6 +15927,22 @@ func UnmarshalUpdateStoryDeleted(data json.RawMessage) (*UpdateStoryDeleted, err
return &resp, err return &resp, err
} }
func UnmarshalUpdateStorySendSucceeded(data json.RawMessage) (*UpdateStorySendSucceeded, error) {
var resp UpdateStorySendSucceeded
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalUpdateStorySendFailed(data json.RawMessage) (*UpdateStorySendFailed, error) {
var resp UpdateStorySendFailed
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalUpdateChatActiveStories(data json.RawMessage) (*UpdateChatActiveStories, error) { func UnmarshalUpdateChatActiveStories(data json.RawMessage) (*UpdateChatActiveStories, error) {
var resp UpdateChatActiveStories var resp UpdateChatActiveStories
@ -15493,6 +15959,14 @@ func UnmarshalUpdateStoryListChatCount(data json.RawMessage) (*UpdateStoryListCh
return &resp, err return &resp, err
} }
func UnmarshalUpdateStoryStealthMode(data json.RawMessage) (*UpdateStoryStealthMode, error) {
var resp UpdateStoryStealthMode
err := json.Unmarshal(data, &resp)
return &resp, err
}
func UnmarshalUpdateOption(data json.RawMessage) (*UpdateOption, error) { func UnmarshalUpdateOption(data json.RawMessage) (*UpdateOption, error) {
var resp UpdateOption var resp UpdateOption
@ -18188,6 +18662,15 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypePremiumLimitTypeActiveStoryCount: case TypePremiumLimitTypeActiveStoryCount:
return UnmarshalPremiumLimitTypeActiveStoryCount(data) return UnmarshalPremiumLimitTypeActiveStoryCount(data)
case TypePremiumLimitTypeWeeklySentStoryCount:
return UnmarshalPremiumLimitTypeWeeklySentStoryCount(data)
case TypePremiumLimitTypeMonthlySentStoryCount:
return UnmarshalPremiumLimitTypeMonthlySentStoryCount(data)
case TypePremiumLimitTypeStoryCaptionLength:
return UnmarshalPremiumLimitTypeStoryCaptionLength(data)
case TypePremiumFeatureIncreasedLimits: case TypePremiumFeatureIncreasedLimits:
return UnmarshalPremiumFeatureIncreasedLimits(data) return UnmarshalPremiumFeatureIncreasedLimits(data)
@ -18233,6 +18716,27 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypePremiumFeatureRealTimeChatTranslation: case TypePremiumFeatureRealTimeChatTranslation:
return UnmarshalPremiumFeatureRealTimeChatTranslation(data) return UnmarshalPremiumFeatureRealTimeChatTranslation(data)
case TypePremiumFeatureUpgradedStories:
return UnmarshalPremiumFeatureUpgradedStories(data)
case TypePremiumStoryFeaturePriorityOrder:
return UnmarshalPremiumStoryFeaturePriorityOrder(data)
case TypePremiumStoryFeatureStealthMode:
return UnmarshalPremiumStoryFeatureStealthMode(data)
case TypePremiumStoryFeaturePermanentViewsHistory:
return UnmarshalPremiumStoryFeaturePermanentViewsHistory(data)
case TypePremiumStoryFeatureCustomExpirationDuration:
return UnmarshalPremiumStoryFeatureCustomExpirationDuration(data)
case TypePremiumStoryFeatureSaveStories:
return UnmarshalPremiumStoryFeatureSaveStories(data)
case TypePremiumStoryFeatureLinksAndFormatting:
return UnmarshalPremiumStoryFeatureLinksAndFormatting(data)
case TypePremiumLimit: case TypePremiumLimit:
return UnmarshalPremiumLimit(data) return UnmarshalPremiumLimit(data)
@ -18245,6 +18749,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypePremiumSourceFeature: case TypePremiumSourceFeature:
return UnmarshalPremiumSourceFeature(data) return UnmarshalPremiumSourceFeature(data)
case TypePremiumSourceStoryFeature:
return UnmarshalPremiumSourceStoryFeature(data)
case TypePremiumSourceLink: case TypePremiumSourceLink:
return UnmarshalPremiumSourceLink(data) return UnmarshalPremiumSourceLink(data)
@ -18338,6 +18845,21 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypeHashtags: case TypeHashtags:
return UnmarshalHashtags(data) return UnmarshalHashtags(data)
case TypeCanSendStoryResultOk:
return UnmarshalCanSendStoryResultOk(data)
case TypeCanSendStoryResultPremiumNeeded:
return UnmarshalCanSendStoryResultPremiumNeeded(data)
case TypeCanSendStoryResultActiveStoryLimitExceeded:
return UnmarshalCanSendStoryResultActiveStoryLimitExceeded(data)
case TypeCanSendStoryResultWeeklyLimitExceeded:
return UnmarshalCanSendStoryResultWeeklyLimitExceeded(data)
case TypeCanSendStoryResultMonthlyLimitExceeded:
return UnmarshalCanSendStoryResultMonthlyLimitExceeded(data)
case TypeCanTransferOwnershipResultOk: case TypeCanTransferOwnershipResultOk:
return UnmarshalCanTransferOwnershipResultOk(data) return UnmarshalCanTransferOwnershipResultOk(data)
@ -18860,6 +19382,39 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypeMessageLinkInfo: case TypeMessageLinkInfo:
return UnmarshalMessageLinkInfo(data) return UnmarshalMessageLinkInfo(data)
case TypeStoryViewer:
return UnmarshalStoryViewer(data)
case TypeStoryViewers:
return UnmarshalStoryViewers(data)
case TypeStoryAreaPosition:
return UnmarshalStoryAreaPosition(data)
case TypeStoryAreaTypeLocation:
return UnmarshalStoryAreaTypeLocation(data)
case TypeStoryAreaTypeVenue:
return UnmarshalStoryAreaTypeVenue(data)
case TypeStoryArea:
return UnmarshalStoryArea(data)
case TypeInputStoryAreaTypeLocation:
return UnmarshalInputStoryAreaTypeLocation(data)
case TypeInputStoryAreaTypeFoundVenue:
return UnmarshalInputStoryAreaTypeFoundVenue(data)
case TypeInputStoryAreaTypePreviousVenue:
return UnmarshalInputStoryAreaTypePreviousVenue(data)
case TypeInputStoryArea:
return UnmarshalInputStoryArea(data)
case TypeInputStoryAreas:
return UnmarshalInputStoryAreas(data)
case TypeStoryVideo: case TypeStoryVideo:
return UnmarshalStoryVideo(data) return UnmarshalStoryVideo(data)
@ -18899,6 +19454,12 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypeChatActiveStories: case TypeChatActiveStories:
return UnmarshalChatActiveStories(data) return UnmarshalChatActiveStories(data)
case TypeBlockListMain:
return UnmarshalBlockListMain(data)
case TypeBlockListStories:
return UnmarshalBlockListStories(data)
case TypeFilePart: case TypeFilePart:
return UnmarshalFilePart(data) return UnmarshalFilePart(data)
@ -19325,8 +19886,8 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypeUpdateChatIsMarkedAsUnread: case TypeUpdateChatIsMarkedAsUnread:
return UnmarshalUpdateChatIsMarkedAsUnread(data) return UnmarshalUpdateChatIsMarkedAsUnread(data)
case TypeUpdateChatIsBlocked: case TypeUpdateChatBlockList:
return UnmarshalUpdateChatIsBlocked(data) return UnmarshalUpdateChatBlockList(data)
case TypeUpdateChatHasScheduledMessages: case TypeUpdateChatHasScheduledMessages:
return UnmarshalUpdateChatHasScheduledMessages(data) return UnmarshalUpdateChatHasScheduledMessages(data)
@ -19436,12 +19997,21 @@ func UnmarshalType(data json.RawMessage) (Type, error) {
case TypeUpdateStoryDeleted: case TypeUpdateStoryDeleted:
return UnmarshalUpdateStoryDeleted(data) return UnmarshalUpdateStoryDeleted(data)
case TypeUpdateStorySendSucceeded:
return UnmarshalUpdateStorySendSucceeded(data)
case TypeUpdateStorySendFailed:
return UnmarshalUpdateStorySendFailed(data)
case TypeUpdateChatActiveStories: case TypeUpdateChatActiveStories:
return UnmarshalUpdateChatActiveStories(data) return UnmarshalUpdateChatActiveStories(data)
case TypeUpdateStoryListChatCount: case TypeUpdateStoryListChatCount:
return UnmarshalUpdateStoryListChatCount(data) return UnmarshalUpdateStoryListChatCount(data)
case TypeUpdateStoryStealthMode:
return UnmarshalUpdateStoryStealthMode(data)
case TypeUpdateOption: case TypeUpdateOption:
return UnmarshalUpdateOption(data) return UnmarshalUpdateOption(data)

View file

@ -251,7 +251,7 @@ minithumbnail width:int32 height:int32 data:bytes = Minithumbnail;
//@description The thumbnail is in JPEG format //@description The thumbnail is in JPEG format
thumbnailFormatJpeg = ThumbnailFormat; thumbnailFormatJpeg = ThumbnailFormat;
//@description The thumbnail is in static GIF format. It will be used only for some bot inline results //@description The thumbnail is in static GIF format. It will be used only for some bot inline query results
thumbnailFormatGif = ThumbnailFormat; thumbnailFormatGif = ThumbnailFormat;
//@description The thumbnail is in MPEG4 format. It will be used only for some animations and videos //@description The thumbnail is in MPEG4 format. It will be used only for some animations and videos
@ -751,7 +751,7 @@ botInfo short_description:string description:string photo:photo animation:animat
//-If non-null and personal_photo is null, then it is the same photo as in user.profile_photo and chat.photo //-If non-null and personal_photo is null, then it is the same photo as in user.profile_photo and chat.photo
//@public_photo User profile photo visible if the main photo is hidden by privacy settings; may be null. If null and user.profile_photo is null, then the photo is empty; otherwise, it is unknown. //@public_photo User profile photo visible if the main photo is hidden by privacy settings; may be null. If null and user.profile_photo is null, then the photo is empty; otherwise, it is unknown.
//-If non-null and both photo and personal_photo are null, then it is the same photo as in user.profile_photo and chat.photo. This photo isn't returned in the list of user photos //-If non-null and both photo and personal_photo are null, then it is the same photo as in user.profile_photo and chat.photo. This photo isn't returned in the list of user photos
//@is_blocked True, if the user is blocked by the current user //@block_list Block list to which the user is added; may be null if none
//@can_be_called True, if the user can be called //@can_be_called True, if the user can be called
//@supports_video_calls True, if a video call can be created with the user //@supports_video_calls True, if a video call can be created with the user
//@has_private_calls True, if the user can't be called due to their privacy settings //@has_private_calls True, if the user can't be called due to their privacy settings
@ -762,8 +762,8 @@ botInfo short_description:string description:string photo:photo animation:animat
//@bio A short user bio; may be null for bots //@bio A short user bio; may be null for bots
//@premium_gift_options The list of available options for gifting Telegram Premium to the user //@premium_gift_options The list of available options for gifting Telegram Premium to the user
//@group_in_common_count Number of group chats where both the other user and the current user are a member; 0 for the current user //@group_in_common_count Number of group chats where both the other user and the current user are a member; 0 for the current user
//@bot_info For bots, information about the bot; may be null //@bot_info For bots, information about the bot; may be null if the user isn't a bot
userFullInfo personal_photo:chatPhoto photo:chatPhoto public_photo:chatPhoto is_blocked:Bool can_be_called:Bool supports_video_calls:Bool has_private_calls:Bool has_private_forwards:Bool has_restricted_voice_and_video_note_messages:Bool has_pinned_stories:Bool need_phone_number_privacy_exception:Bool bio:formattedText premium_gift_options:vector<premiumPaymentOption> group_in_common_count:int32 bot_info:botInfo = UserFullInfo; userFullInfo personal_photo:chatPhoto photo:chatPhoto public_photo:chatPhoto block_list:BlockList can_be_called:Bool supports_video_calls:Bool has_private_calls:Bool has_private_forwards:Bool has_restricted_voice_and_video_note_messages:Bool has_pinned_stories:Bool need_phone_number_privacy_exception:Bool bio:formattedText premium_gift_options:vector<premiumPaymentOption> group_in_common_count:int32 bot_info:botInfo = UserFullInfo;
//@description Represents a list of users @total_count Approximate total number of users found @user_ids A list of user identifiers //@description Represents a list of users @total_count Approximate total number of users found @user_ids A list of user identifiers
users total_count:int32 user_ids:vector<int53> = Users; users total_count:int32 user_ids:vector<int53> = Users;
@ -997,7 +997,7 @@ supergroup id:int53 access_hash:int64 usernames:usernames date:int32 status:Chat
//-so this option affects only private non-forum supergroups without a linked chat. The value of this field is only available to chat administrators //-so this option affects only private non-forum supergroups without a linked chat. The value of this field is only available to chat administrators
//@has_aggressive_anti_spam_enabled True, if aggressive anti-spam checks are enabled in the supergroup. The value of this field is only available to chat administrators //@has_aggressive_anti_spam_enabled True, if aggressive anti-spam checks are enabled in the supergroup. The value of this field is only available to chat administrators
//@sticker_set_id Identifier of the supergroup sticker set; 0 if none //@sticker_set_id Identifier of the supergroup sticker set; 0 if none
//@location Location to which the supergroup is connected; may be null //@location Location to which the supergroup is connected; may be null if none
//@invite_link Primary invite link for the chat; may be null. For chat administrators with can_invite_users right only //@invite_link Primary invite link for the chat; may be null. For chat administrators with can_invite_users right only
//@bot_commands List of commands of bots in the group //@bot_commands List of commands of bots in the group
//@upgraded_from_basic_group_id Identifier of the basic group from which supergroup was upgraded; 0 if none //@upgraded_from_basic_group_id Identifier of the basic group from which supergroup was upgraded; 0 if none
@ -1154,8 +1154,8 @@ messageReplyToStory story_sender_chat_id:int53 story_id:int32 = MessageReplyTo;
//@id Message identifier; unique for the chat to which the message belongs //@id Message identifier; unique for the chat to which the message belongs
//@sender_id Identifier of the sender of the message //@sender_id Identifier of the sender of the message
//@chat_id Chat identifier //@chat_id Chat identifier
//@sending_state The sending state of the message; may be null //@sending_state The sending state of the message; may be null if the message isn't being sent and didn't fail to be sent
//@scheduling_state The scheduling state of the message; may be null //@scheduling_state The scheduling state of the message; may be null if the message isn't scheduled
//@is_outgoing True, if the message is outgoing //@is_outgoing True, if the message is outgoing
//@is_pinned True, if the message is pinned //@is_pinned True, if the message is pinned
//@can_be_edited True, if the message can be edited. For live location and poll messages this fields shows whether editMessageLiveLocation or stopPoll can be used with this message by the application //@can_be_edited True, if the message can be edited. For live location and poll messages this fields shows whether editMessageLiveLocation or stopPoll can be used with this message by the application
@ -1175,8 +1175,8 @@ messageReplyToStory story_sender_chat_id:int53 story_id:int32 = MessageReplyTo;
//@contains_unread_mention True, if the message contains an unread mention for the current user //@contains_unread_mention True, if the message contains an unread mention for the current user
//@date Point in time (Unix timestamp) when the message was sent //@date Point in time (Unix timestamp) when the message was sent
//@edit_date Point in time (Unix timestamp) when the message was last edited //@edit_date Point in time (Unix timestamp) when the message was last edited
//@forward_info Information about the initial message sender; may be null //@forward_info Information about the initial message sender; may be null if none or unknown
//@interaction_info Information about interactions with the message; may be null //@interaction_info Information about interactions with the message; may be null if none
//@unread_reactions Information about unread reactions added to the message //@unread_reactions Information about unread reactions added to the message
//@reply_to Information about the message or the story this message is replying to; may be null if none //@reply_to Information about the message or the story this message is replying to; may be null if none
//@message_thread_id If non-zero, the identifier of the message thread the message belongs to; unique within the chat to which the message belongs //@message_thread_id If non-zero, the identifier of the message thread the message belongs to; unique within the chat to which the message belongs
@ -1188,7 +1188,7 @@ messageReplyToStory story_sender_chat_id:int53 story_id:int32 = MessageReplyTo;
//@media_album_id Unique identifier of an album this message belongs to. Only audios, documents, photos and videos can be grouped together in albums //@media_album_id Unique identifier of an album this message belongs to. Only audios, documents, photos and videos can be grouped together in albums
//@restriction_reason If non-empty, contains a human-readable description of the reason why access to this message must be restricted //@restriction_reason If non-empty, contains a human-readable description of the reason why access to this message must be restricted
//@content Content of the message //@content Content of the message
//@reply_markup Reply markup for the message; may be null //@reply_markup Reply markup for the message; may be null if none
message id:int53 sender_id:MessageSender chat_id:int53 sending_state:MessageSendingState scheduling_state:MessageSchedulingState is_outgoing:Bool is_pinned:Bool can_be_edited:Bool can_be_forwarded:Bool can_be_saved:Bool can_be_deleted_only_for_self:Bool can_be_deleted_for_all_users:Bool can_get_added_reactions:Bool can_get_statistics:Bool can_get_message_thread:Bool can_get_viewers:Bool can_get_media_timestamp_links:Bool can_report_reactions:Bool has_timestamped_media:Bool is_channel_post:Bool is_topic_message:Bool contains_unread_mention:Bool date:int32 edit_date:int32 forward_info:messageForwardInfo interaction_info:messageInteractionInfo unread_reactions:vector<unreadReaction> reply_to:MessageReplyTo message_thread_id:int53 self_destruct_time:int32 self_destruct_in:double auto_delete_in:double via_bot_user_id:int53 author_signature:string media_album_id:int64 restriction_reason:string content:MessageContent reply_markup:ReplyMarkup = Message; message id:int53 sender_id:MessageSender chat_id:int53 sending_state:MessageSendingState scheduling_state:MessageSchedulingState is_outgoing:Bool is_pinned:Bool can_be_edited:Bool can_be_forwarded:Bool can_be_saved:Bool can_be_deleted_only_for_self:Bool can_be_deleted_for_all_users:Bool can_get_added_reactions:Bool can_get_statistics:Bool can_get_message_thread:Bool can_get_viewers:Bool can_get_media_timestamp_links:Bool can_report_reactions:Bool has_timestamped_media:Bool is_channel_post:Bool is_topic_message:Bool contains_unread_mention:Bool date:int32 edit_date:int32 forward_info:messageForwardInfo interaction_info:messageInteractionInfo unread_reactions:vector<unreadReaction> reply_to:MessageReplyTo message_thread_id:int53 self_destruct_time:int32 self_destruct_in:double auto_delete_in:double via_bot_user_id:int53 author_signature:string media_album_id:int64 restriction_reason:string content:MessageContent reply_markup:ReplyMarkup = Message;
//@description Contains a list of messages @total_count Approximate total number of messages found @messages List of messages; messages may be null //@description Contains a list of messages @total_count Approximate total number of messages found @messages List of messages; messages may be null
@ -1477,13 +1477,13 @@ videoChat group_call_id:int32 has_participants:Bool default_participant_id:Messa
//@title Chat title //@title Chat title
//@photo Chat photo; may be null //@photo Chat photo; may be null
//@permissions Actions that non-administrator chat members are allowed to take in the chat //@permissions Actions that non-administrator chat members are allowed to take in the chat
//@last_message Last message in the chat; may be null //@last_message Last message in the chat; may be null if none or unknown
//@positions Positions of the chat in chat lists //@positions Positions of the chat in chat lists
//@message_sender_id Identifier of a user or chat that is selected to send messages in the chat; may be null if the user can't change message sender //@message_sender_id Identifier of a user or chat that is selected to send messages in the chat; may be null if the user can't change message sender
//@block_list Block list to which the chat is added; may be null if none
//@has_protected_content True, if chat content can't be saved locally, forwarded, or copied //@has_protected_content True, if chat content can't be saved locally, forwarded, or copied
//@is_translatable True, if translation of all messages in the chat must be suggested to the user //@is_translatable True, if translation of all messages in the chat must be suggested to the user
//@is_marked_as_unread True, if the chat is marked as unread //@is_marked_as_unread True, if the chat is marked as unread
//@is_blocked True, if the chat is blocked by the current user and private messages from the chat can't be received
//@has_scheduled_messages True, if the chat has scheduled messages //@has_scheduled_messages True, if the chat has scheduled messages
//@can_be_deleted_only_for_self True, if the chat messages can be deleted only for the current user while other users will continue to see the messages //@can_be_deleted_only_for_self True, if the chat messages can be deleted only for the current user while other users will continue to see the messages
//@can_be_deleted_for_all_users True, if the chat messages can be deleted for all users //@can_be_deleted_for_all_users True, if the chat messages can be deleted for all users
@ -1499,13 +1499,13 @@ videoChat group_call_id:int32 has_participants:Bool default_participant_id:Messa
//@message_auto_delete_time Current message auto-delete or self-destruct timer setting for the chat, in seconds; 0 if disabled. Self-destruct timer in secret chats starts after the message or its content is viewed. Auto-delete timer in other chats starts from the send date //@message_auto_delete_time Current message auto-delete or self-destruct timer setting for the chat, in seconds; 0 if disabled. Self-destruct timer in secret chats starts after the message or its content is viewed. Auto-delete timer in other chats starts from the send date
//@background Background set for the chat; may be null if none //@background Background set for the chat; may be null if none
//@theme_name If non-empty, name of a theme, set for the chat //@theme_name If non-empty, name of a theme, set for the chat
//@action_bar Information about actions which must be possible to do through the chat action bar; may be null //@action_bar Information about actions which must be possible to do through the chat action bar; may be null if none
//@video_chat Information about video chat of the chat //@video_chat Information about video chat of the chat
//@pending_join_requests Information about pending join requests; may be null //@pending_join_requests Information about pending join requests; may be null if none
//@reply_markup_message_id Identifier of the message from which reply markup needs to be used; 0 if there is no default custom reply markup in the chat //@reply_markup_message_id Identifier of the message from which reply markup needs to be used; 0 if there is no default custom reply markup in the chat
//@draft_message A draft of a message in the chat; may be null //@draft_message A draft of a message in the chat; may be null if none
//@client_data Application-specific data associated with the chat. (For example, the chat scroll position or local chat notification settings can be stored here.) Persistent if the message database is used //@client_data Application-specific data associated with the chat. (For example, the chat scroll position or local chat notification settings can be stored here.) Persistent if the message database is used
chat id:int53 type:ChatType title:string photo:chatPhotoInfo permissions:chatPermissions last_message:message positions:vector<chatPosition> message_sender_id:MessageSender has_protected_content:Bool is_translatable:Bool is_marked_as_unread:Bool is_blocked:Bool has_scheduled_messages:Bool can_be_deleted_only_for_self:Bool can_be_deleted_for_all_users:Bool can_be_reported:Bool default_disable_notification:Bool unread_count:int32 last_read_inbox_message_id:int53 last_read_outbox_message_id:int53 unread_mention_count:int32 unread_reaction_count:int32 notification_settings:chatNotificationSettings available_reactions:ChatAvailableReactions message_auto_delete_time:int32 background:chatBackground theme_name:string action_bar:ChatActionBar video_chat:videoChat pending_join_requests:chatJoinRequestsInfo reply_markup_message_id:int53 draft_message:draftMessage client_data:string = Chat; chat id:int53 type:ChatType title:string photo:chatPhotoInfo permissions:chatPermissions last_message:message positions:vector<chatPosition> message_sender_id:MessageSender block_list:BlockList has_protected_content:Bool is_translatable:Bool is_marked_as_unread:Bool has_scheduled_messages:Bool can_be_deleted_only_for_self:Bool can_be_deleted_for_all_users:Bool can_be_reported:Bool default_disable_notification:Bool unread_count:int32 last_read_inbox_message_id:int53 last_read_outbox_message_id:int53 unread_mention_count:int32 unread_reaction_count:int32 notification_settings:chatNotificationSettings available_reactions:ChatAvailableReactions message_auto_delete_time:int32 background:chatBackground theme_name:string action_bar:ChatActionBar video_chat:videoChat pending_join_requests:chatJoinRequestsInfo reply_markup_message_id:int53 draft_message:draftMessage client_data:string = Chat;
//@description Represents a list of chats @total_count Approximate total number of chats found @chat_ids List of chat identifiers //@description Represents a list of chats @total_count Approximate total number of chats found @chat_ids List of chat identifiers
chats total_count:int32 chat_ids:vector<int53> = Chats; chats total_count:int32 chat_ids:vector<int53> = Chats;
@ -1539,7 +1539,7 @@ chatActionBarReportUnrelatedLocation = ChatActionBar;
//@description The chat is a recently created group chat to which new members can be invited //@description The chat is a recently created group chat to which new members can be invited
chatActionBarInviteMembers = ChatActionBar; chatActionBarInviteMembers = ChatActionBar;
//@description The chat is a private or secret chat, which can be reported using the method reportChat, or the other user can be blocked using the method toggleMessageSenderIsBlocked, //@description The chat is a private or secret chat, which can be reported using the method reportChat, or the other user can be blocked using the method setMessageSenderBlockList,
//-or the other user can be added to the contact list using the method addContact. If the chat is a private chat with a user with an emoji status, then a notice about emoji status usage must be shown //-or the other user can be added to the contact list using the method addContact. If the chat is a private chat with a user with an emoji status, then a notice about emoji status usage must be shown
//@can_unarchive If true, the chat was automatically archived and can be moved back to the main chat list using addChatToList simultaneously with setting chat notification settings to default using setChatNotificationSettings //@can_unarchive If true, the chat was automatically archived and can be moved back to the main chat list using addChatToList simultaneously with setting chat notification settings to default using setChatNotificationSettings
//@distance If non-negative, the current user was found by the peer through searchChatsNearby and this is the distance between the users //@distance If non-negative, the current user was found by the peer through searchChatsNearby and this is the distance between the users
@ -1689,7 +1689,7 @@ webAppInfo launch_id:int64 url:string = WebAppInfo;
//@reply_info Information about the message thread; may be null for forum topic threads //@reply_info Information about the message thread; may be null for forum topic threads
//@unread_message_count Approximate number of unread messages in the message thread //@unread_message_count Approximate number of unread messages in the message thread
//@messages The messages from which the thread starts. The messages are returned in a reverse chronological order (i.e., in order of decreasing message_id) //@messages The messages from which the thread starts. The messages are returned in a reverse chronological order (i.e., in order of decreasing message_id)
//@draft_message A draft of a message in the message thread; may be null //@draft_message A draft of a message in the message thread; may be null if none
messageThreadInfo chat_id:int53 message_thread_id:int53 reply_info:messageReplyInfo unread_message_count:int32 messages:vector<message> draft_message:draftMessage = MessageThreadInfo; messageThreadInfo chat_id:int53 message_thread_id:int53 reply_info:messageReplyInfo unread_message_count:int32 messages:vector<message> draft_message:draftMessage = MessageThreadInfo;
@ -1718,7 +1718,7 @@ forumTopicInfo message_thread_id:int53 name:string icon:forumTopicIcon creation_
//@unread_mention_count Number of unread messages with a mention/reply in the topic //@unread_mention_count Number of unread messages with a mention/reply in the topic
//@unread_reaction_count Number of messages with unread reactions in the topic //@unread_reaction_count Number of messages with unread reactions in the topic
//@notification_settings Notification settings for the topic //@notification_settings Notification settings for the topic
//@draft_message A draft of a message in the topic; may be null //@draft_message A draft of a message in the topic; may be null if none
forumTopic info:forumTopicInfo last_message:message is_pinned:Bool unread_count:int32 last_read_inbox_message_id:int53 last_read_outbox_message_id:int53 unread_mention_count:int32 unread_reaction_count:int32 notification_settings:chatNotificationSettings draft_message:draftMessage = ForumTopic; forumTopic info:forumTopicInfo last_message:message is_pinned:Bool unread_count:int32 last_read_inbox_message_id:int53 last_read_outbox_message_id:int53 unread_mention_count:int32 unread_reaction_count:int32 notification_settings:chatNotificationSettings draft_message:draftMessage = ForumTopic;
//@description Describes a list of forum topics //@description Describes a list of forum topics
@ -3991,6 +3991,15 @@ premiumLimitTypeShareableChatFolderCount = PremiumLimitType;
//@description The maximum number of active stories //@description The maximum number of active stories
premiumLimitTypeActiveStoryCount = PremiumLimitType; premiumLimitTypeActiveStoryCount = PremiumLimitType;
//@description The maximum number of stories sent per week
premiumLimitTypeWeeklySentStoryCount = PremiumLimitType;
//@description The maximum number of stories sent per month
premiumLimitTypeMonthlySentStoryCount = PremiumLimitType;
//@description The maximum length of captions of sent stories
premiumLimitTypeStoryCaptionLength = PremiumLimitType;
//@class PremiumFeature @description Describes a feature available to Premium users //@class PremiumFeature @description Describes a feature available to Premium users
@ -4024,7 +4033,7 @@ premiumFeatureAdvancedChatManagement = PremiumFeature;
//@description A badge in the user's profile //@description A badge in the user's profile
premiumFeatureProfileBadge = PremiumFeature; premiumFeatureProfileBadge = PremiumFeature;
//@description A emoji status shown along with the user's name //@description An emoji status shown along with the user's name
premiumFeatureEmojiStatus = PremiumFeature; premiumFeatureEmojiStatus = PremiumFeature;
//@description Profile photo animation on message and chat screens //@description Profile photo animation on message and chat screens
@ -4039,6 +4048,30 @@ premiumFeatureAppIcons = PremiumFeature;
//@description Allowed to translate chat messages real-time //@description Allowed to translate chat messages real-time
premiumFeatureRealTimeChatTranslation = PremiumFeature; premiumFeatureRealTimeChatTranslation = PremiumFeature;
//@description Allowed to use many additional features for stories
premiumFeatureUpgradedStories = PremiumFeature;
//@class PremiumStoryFeature @description Describes a story feature available to Premium users
//@description User stories are displayed before stories of non-premium contacts
premiumStoryFeaturePriorityOrder = PremiumStoryFeature;
//@description The ability to hide the fact that the user viewed other's stories
premiumStoryFeatureStealthMode = PremiumStoryFeature;
//@description The ability to check who opened the current user's stories after they expire
premiumStoryFeaturePermanentViewsHistory = PremiumStoryFeature;
//@description The ability to set custom expiration duration for stories
premiumStoryFeatureCustomExpirationDuration = PremiumStoryFeature;
//@description The ability to save other's unprotected stories
premiumStoryFeatureSaveStories = PremiumStoryFeature;
//@description The ability to use links and formatting in story caption
premiumStoryFeatureLinksAndFormatting = PremiumStoryFeature;
//@description Contains information about a limit, increased for Premium users @type The type of the limit @default_value Default value of the limit @premium_value Value of the limit for Premium users //@description Contains information about a limit, increased for Premium users @type The type of the limit @default_value Default value of the limit @premium_value Value of the limit for Premium users
premiumLimit type:PremiumLimitType default_value:int32 premium_value:int32 = PremiumLimit; premiumLimit type:PremiumLimitType default_value:int32 premium_value:int32 = PremiumLimit;
@ -4058,6 +4091,9 @@ premiumSourceLimitExceeded limit_type:PremiumLimitType = PremiumSource;
//@description A user tried to use a Premium feature @feature The used feature //@description A user tried to use a Premium feature @feature The used feature
premiumSourceFeature feature:PremiumFeature = PremiumSource; premiumSourceFeature feature:PremiumFeature = PremiumSource;
//@description A user tried to use a Premium story feature @feature The used feature
premiumSourceStoryFeature feature:PremiumStoryFeature = PremiumSource;
//@description A user opened an internal link of the type internalLinkTypePremiumFeatures @referrer The referrer from the link //@description A user opened an internal link of the type internalLinkTypePremiumFeatures @referrer The referrer from the link
premiumSourceLink referrer:string = PremiumSource; premiumSourceLink referrer:string = PremiumSource;
@ -4196,6 +4232,24 @@ chatTheme name:string light_settings:themeSettings dark_settings:themeSettings =
hashtags hashtags:vector<string> = Hashtags; hashtags hashtags:vector<string> = Hashtags;
//@class CanSendStoryResult @description Represents result of checking whether the current user can send a story
//@description A story can be sent
canSendStoryResultOk = CanSendStoryResult;
//@description The user must subscribe to Telegram Premium to be able to post stories
canSendStoryResultPremiumNeeded = CanSendStoryResult;
//@description The limit for the number of active stories exceeded. The user can buy Telegram Premium, delete an active story, or wait for the oldest story to expire
canSendStoryResultActiveStoryLimitExceeded = CanSendStoryResult;
//@description The weekly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time @retry_after Time left before the user can send the next story
canSendStoryResultWeeklyLimitExceeded retry_after:int32 = CanSendStoryResult;
//@description The monthly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time @retry_after Time left before the user can send the next story
canSendStoryResultMonthlyLimitExceeded retry_after:int32 = CanSendStoryResult;
//@class CanTransferOwnershipResult @description Represents result of checking whether the current session can be used to transfer a chat ownership to another user //@class CanTransferOwnershipResult @description Represents result of checking whether the current session can be used to transfer a chat ownership to another user
//@description The session can be used //@description The session can be used
@ -4497,16 +4551,16 @@ jsonValueObject members:vector<jsonObjectMember> = JsonValue;
//@class StoryPrivacySettings @description Describes privacy settings of a story //@class StoryPrivacySettings @description Describes privacy settings of a story
//@description The story can be viewed by everyone //@description The story can be viewed by everyone @except_user_ids Identifiers of the users that can't see the story; always unknown and empty for non-owned stories
storyPrivacySettingsEveryone = StoryPrivacySettings; storyPrivacySettingsEveryone except_user_ids:vector<int53> = StoryPrivacySettings;
//@description The story can be viewed by all contacts except chosen users @except_user_ids User identifiers of the contacts that can't see the story; always empty for non-owned stories //@description The story can be viewed by all contacts except chosen users @except_user_ids User identifiers of the contacts that can't see the story; always unknown and empty for non-owned stories
storyPrivacySettingsContacts except_user_ids:vector<int53> = StoryPrivacySettings; storyPrivacySettingsContacts except_user_ids:vector<int53> = StoryPrivacySettings;
//@description The story can be viewed by all close friends //@description The story can be viewed by all close friends
storyPrivacySettingsCloseFriends = StoryPrivacySettings; storyPrivacySettingsCloseFriends = StoryPrivacySettings;
//@description The story can be viewed by certain specified users @user_ids Identifiers of the users; always empty for non-owned stories //@description The story can be viewed by certain specified users @user_ids Identifiers of the users; always unknown and empty for non-owned stories
storyPrivacySettingsSelectedContacts user_ids:vector<int53> = StoryPrivacySettings; storyPrivacySettingsSelectedContacts user_ids:vector<int53> = StoryPrivacySettings;
@ -4907,6 +4961,65 @@ messageLink link:string is_public:Bool = MessageLink;
messageLinkInfo is_public:Bool chat_id:int53 message_thread_id:int53 message:message media_timestamp:int32 for_album:Bool = MessageLinkInfo; messageLinkInfo is_public:Bool chat_id:int53 message_thread_id:int53 message:message media_timestamp:int32 for_album:Bool = MessageLinkInfo;
//@description Represents a viewer of a story
//@user_id User identifier of the viewer
//@view_date Approximate point in time (Unix timestamp) when the story was viewed
//@block_list Block list to which the user is added; may be null if none
//@chosen_reaction_type Type of the reaction that was chosen by the user; may be null if none
storyViewer user_id:int53 view_date:int32 block_list:BlockList chosen_reaction_type:ReactionType = StoryViewer;
//@description Represents a list of story viewers
//@total_count Approximate total number of story viewers found
//@viewers List of story viewers
//@next_offset The offset for the next request. If empty, there are no more results
storyViewers total_count:int32 viewers:vector<storyViewer> next_offset:string = StoryViewers;
//@description Describes position of a clickable rectangle area on a story media
//@x_percentage The abscissa of the rectangle's center, as a percentage of the media width
//@y_percentage The ordinate of the rectangle's center, as a percentage of the media height
//@width_percentage The width of the rectangle, as a percentage of the media width
//@height_percentage The ordinate of the rectangle's center, as a percentage of the media height
//@rotation_angle Clockwise rotation angle of the rectangle, in degrees; 0-360
storyAreaPosition x_percentage:double y_percentage:double width_percentage:double height_percentage:double rotation_angle:double = StoryAreaPosition;
//@class StoryAreaType @description Describes type of a clickable rectangle area on a story media
//@description An area pointing to a location @location The location
storyAreaTypeLocation location:location = StoryAreaType;
//@description An area pointing to a venue @venue Information about the venue
storyAreaTypeVenue venue:venue = StoryAreaType;
//@description Describes a clickable rectangle area on a story media @position Position of the area @type Type of the area
storyArea position:storyAreaPosition type:StoryAreaType = StoryArea;
//@class InputStoryAreaType @description Describes type of a clickable rectangle area on a story media to be added
//@description An area pointing to a location @location The location
inputStoryAreaTypeLocation location:location = InputStoryAreaType;
//@description An area pointing to a venue found by the bot getOption("venue_search_bot_username")
//@query_id Identifier of the inline query, used to found the venue
//@result_id Identifier of the inline query result
inputStoryAreaTypeFoundVenue query_id:int64 result_id:string = InputStoryAreaType;
//@description An area pointing to a venue already added to the story
//@venue_provider Provider of the venue
//@venue_id Identifier of the venue in the provider database
inputStoryAreaTypePreviousVenue venue_provider:string venue_id:string = InputStoryAreaType;
//@description Describes a clickable rectangle area on a story media to be added @position Position of the area @type Type of the area
inputStoryArea position:storyAreaPosition type:InputStoryAreaType = InputStoryArea;
//@description Contains a list of story areas to be added @areas List of 0-10 input story areas
inputStoryAreas areas:vector<inputStoryArea> = InputStoryAreas;
//@description Describes a video file sent in a story //@description Describes a video file sent in a story
//@duration Duration of the video, in seconds //@duration Duration of the video, in seconds
//@width Video width //@width Video width
@ -4958,13 +5071,15 @@ storyListArchive = StoryList;
//@description Contains information about interactions with a story //@description Contains information about interactions with a story
//@view_count Number of times the story was viewed //@view_count Number of times the story was viewed
//@reaction_count Number of reactions added to the story
//@recent_viewer_user_ids Identifiers of at most 3 recent viewers of the story //@recent_viewer_user_ids Identifiers of at most 3 recent viewers of the story
storyInteractionInfo view_count:int32 recent_viewer_user_ids:vector<int53> = StoryInteractionInfo; storyInteractionInfo view_count:int32 reaction_count:int32 recent_viewer_user_ids:vector<int53> = StoryInteractionInfo;
//@description Represents a story //@description Represents a story
//@id Unique story identifier among stories of the given sender //@id Unique story identifier among stories of the given sender
//@sender_chat_id Identifier of the chat that posted the story //@sender_chat_id Identifier of the chat that posted the story
//@date Point in time (Unix timestamp) when the story was published //@date Point in time (Unix timestamp) when the story was published
//@is_being_sent True, if the story is being sent by the current user
//@is_being_edited True, if the story is being edited by the current user //@is_being_edited True, if the story is being edited by the current user
//@is_edited True, if the story was edited //@is_edited True, if the story was edited
//@is_pinned True, if the story is saved in the sender's profile and will be available there after expiration //@is_pinned True, if the story is saved in the sender's profile and will be available there after expiration
@ -4974,10 +5089,12 @@ storyInteractionInfo view_count:int32 recent_viewer_user_ids:vector<int53> = Sto
//@can_get_viewers True, if users viewed the story can be received through getStoryViewers //@can_get_viewers True, if users viewed the story can be received through getStoryViewers
//@has_expired_viewers True, if users viewed the story can't be received, because the story has expired more than getOption("story_viewers_expiration_delay") seconds ago //@has_expired_viewers True, if users viewed the story can't be received, because the story has expired more than getOption("story_viewers_expiration_delay") seconds ago
//@interaction_info Information about interactions with the story; may be null if the story isn't owned or there were no interactions //@interaction_info Information about interactions with the story; may be null if the story isn't owned or there were no interactions
//@chosen_reaction_type Type of the chosen reaction; may be null if none
//@privacy_settings Privacy rules affecting story visibility; may be approximate for non-owned stories //@privacy_settings Privacy rules affecting story visibility; may be approximate for non-owned stories
//@content Content of the story //@content Content of the story
//@areas Clickable areas to be shown on the story content
//@caption Caption of the story //@caption Caption of the story
story id:int32 sender_chat_id:int53 date:int32 is_being_edited:Bool is_edited:Bool is_pinned:Bool is_visible_only_for_self:Bool can_be_forwarded:Bool can_be_replied:Bool can_get_viewers:Bool has_expired_viewers:Bool interaction_info:storyInteractionInfo privacy_settings:StoryPrivacySettings content:StoryContent caption:formattedText = Story; story id:int32 sender_chat_id:int53 date:int32 is_being_sent:Bool is_being_edited:Bool is_edited:Bool is_pinned:Bool is_visible_only_for_self:Bool can_be_forwarded:Bool can_be_replied:Bool can_get_viewers:Bool has_expired_viewers:Bool interaction_info:storyInteractionInfo chosen_reaction_type:ReactionType privacy_settings:StoryPrivacySettings content:StoryContent areas:vector<storyArea> caption:formattedText = Story;
//@description Represents a list of stories @total_count Approximate total number of stories found @stories The list of stories //@description Represents a list of stories @total_count Approximate total number of stories found @stories The list of stories
stories total_count:int32 stories:vector<story> = Stories; stories total_count:int32 stories:vector<story> = Stories;
@ -4997,6 +5114,15 @@ storyInfo story_id:int32 date:int32 is_for_close_friends:Bool = StoryInfo;
chatActiveStories chat_id:int53 list:StoryList order:int53 max_read_story_id:int32 stories:vector<storyInfo> = ChatActiveStories; chatActiveStories chat_id:int53 list:StoryList order:int53 max_read_story_id:int32 stories:vector<storyInfo> = ChatActiveStories;
//@class BlockList @description Describes a type of a block list
//@description The main block list that disallows writing messages to the current user, receiving their status and photo, viewing of stories, and some other actions
blockListMain = BlockList;
//@description The block list that disallows viewing of stories of the current user
blockListStories = BlockList;
//@description Contains a part of a file @data File bytes //@description Contains a part of a file @data File bytes
filePart data:bytes = FilePart; filePart data:bytes = FilePart;
@ -5608,8 +5734,8 @@ updateChatIsTranslatable chat_id:int53 is_translatable:Bool = Update;
//@description A chat was marked as unread or was read @chat_id Chat identifier @is_marked_as_unread New value of is_marked_as_unread //@description A chat was marked as unread or was read @chat_id Chat identifier @is_marked_as_unread New value of is_marked_as_unread
updateChatIsMarkedAsUnread chat_id:int53 is_marked_as_unread:Bool = Update; updateChatIsMarkedAsUnread chat_id:int53 is_marked_as_unread:Bool = Update;
//@description A chat was blocked or unblocked @chat_id Chat identifier @is_blocked New value of is_blocked //@description A chat was blocked or unblocked @chat_id Chat identifier @block_list Block list to which the chat is added; may be null if none
updateChatIsBlocked chat_id:int53 is_blocked:Bool = Update; updateChatBlockList chat_id:int53 block_list:BlockList = Update;
//@description A chat's has_scheduled_messages field has changed @chat_id Chat identifier @has_scheduled_messages New value of has_scheduled_messages //@description A chat's has_scheduled_messages field has changed @chat_id Chat identifier @has_scheduled_messages New value of has_scheduled_messages
updateChatHasScheduledMessages chat_id:int53 has_scheduled_messages:Bool = Update; updateChatHasScheduledMessages chat_id:int53 has_scheduled_messages:Bool = Update;
@ -5764,6 +5890,16 @@ updateStory story:story = Update;
//@description A story became inaccessible @story_sender_chat_id Identifier of the chat that posted the story @story_id Story identifier //@description A story became inaccessible @story_sender_chat_id Identifier of the chat that posted the story @story_id Story identifier
updateStoryDeleted story_sender_chat_id:int53 story_id:int32 = Update; updateStoryDeleted story_sender_chat_id:int53 story_id:int32 = Update;
//@description A story has been successfully sent @story The sent story @old_story_id The previous temporary story identifier
updateStorySendSucceeded story:story old_story_id:int32 = Update;
//@description A story failed to send. If the story sending is canceled, then updateStoryDeleted will be received instead of this update
//@story The failed to send story
//@error The cause of the failure; may be null if unknown
//@error_code An error code
//@error_message Error message
updateStorySendFailed story:story error:CanSendStoryResult error_code:int32 error_message:string = Update;
//@description The list of active stories posted by a specific chat has changed //@description The list of active stories posted by a specific chat has changed
//@active_stories The new list of active stories //@active_stories The new list of active stories
updateChatActiveStories active_stories:chatActiveStories = Update; updateChatActiveStories active_stories:chatActiveStories = Update;
@ -5771,6 +5907,11 @@ updateChatActiveStories active_stories:chatActiveStories = Update;
//@description Number of chats in a story list has changed @story_list The story list @chat_count Approximate total number of chats with active stories in the list //@description Number of chats in a story list has changed @story_list The story list @chat_count Approximate total number of chats with active stories in the list
updateStoryListChatCount story_list:StoryList chat_count:int32 = Update; updateStoryListChatCount story_list:StoryList chat_count:int32 = Update;
//@description Story stealth mode settings have changed
//@active_until_date Point in time (Unix timestamp) until stealth mode is active; 0 if it is disabled
//@cooldown_until_date Point in time (Unix timestamp) when stealth mode can be enabled again; 0 if there is no active cooldown
updateStoryStealthMode active_until_date:int32 cooldown_until_date:int32 = Update;
//@description An option changed its value @name The option name @value The new option value //@description An option changed its value @name The option name @value The new option value
updateOption name:string value:OptionValue = Update; updateOption name:string value:OptionValue = Update;
@ -6505,7 +6646,7 @@ sendBotStartMessage bot_user_id:int53 chat_id:int53 parameter:string = Message;
//@reply_to Identifier of the replied message or story; pass null if none //@reply_to Identifier of the replied message or story; pass null if none
//@options Options to be used to send the message; pass null to use default options //@options Options to be used to send the message; pass null to use default options
//@query_id Identifier of the inline query //@query_id Identifier of the inline query
//@result_id Identifier of the inline result //@result_id Identifier of the inline query result
//@hide_via_bot Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption("animation_search_bot_username"), getOption("photo_search_bot_username"), and getOption("venue_search_bot_username") //@hide_via_bot Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption("animation_search_bot_username"), getOption("photo_search_bot_username"), and getOption("venue_search_bot_username")
sendInlineQueryResultMessage chat_id:int53 message_thread_id:int53 reply_to:MessageReplyTo options:messageSendOptions query_id:int64 result_id:string hide_via_bot:Bool = Message; sendInlineQueryResultMessage chat_id:int53 message_thread_id:int53 reply_to:MessageReplyTo options:messageSendOptions query_id:int64 result_id:string hide_via_bot:Bool = Message;
@ -6831,7 +6972,7 @@ shareChatWithBot chat_id:int53 message_id:int53 button_id:int32 shared_chat_id:i
//@chat_id Identifier of the chat where the query was sent //@chat_id Identifier of the chat where the query was sent
//@user_location Location of the user; pass null if unknown or the bot doesn't need user's location //@user_location Location of the user; pass null if unknown or the bot doesn't need user's location
//@query Text of the query //@query Text of the query
//@offset Offset of the first entry to return //@offset Offset of the first entry to return; use empty string to get the first chunk of results
getInlineQueryResults bot_user_id:int53 chat_id:int53 user_location:location query:string offset:string = InlineQueryResults; getInlineQueryResults bot_user_id:int53 chat_id:int53 user_location:location query:string offset:string = InlineQueryResults;
//@description Sets the result of an inline query; for bots only //@description Sets the result of an inline query; for bots only
@ -7309,20 +7450,25 @@ readChatList chat_list:ChatList = Ok;
//@only_local Pass true to get only locally available information without sending network requests //@only_local Pass true to get only locally available information without sending network requests
getStory story_sender_chat_id:int53 story_id:int32 only_local:Bool = Story; getStory story_sender_chat_id:int53 story_id:int32 only_local:Bool = Story;
//@description Sends a new story. Returns a temporary story with identifier 0 //@description Checks whether the current user can send a story
canSendStory = CanSendStoryResult;
//@description Sends a new story. Returns a temporary story
//@content Content of the story //@content Content of the story
//@areas Clickable rectangle areas to be shown on the story media; pass null if none
//@caption Story caption; pass null to use an empty caption; 0-getOption("story_caption_length_max") characters //@caption Story caption; pass null to use an empty caption; 0-getOption("story_caption_length_max") characters
//@privacy_settings The privacy settings for the story //@privacy_settings The privacy settings for the story
//@active_period Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, 2 * 86400, 3 * 86400, or 7 * 86400 for Telegram Premium users, and 86400 otherwise //@active_period Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise
//@is_pinned Pass true to keep the story accessible after expiration //@is_pinned Pass true to keep the story accessible after expiration
//@protect_content Pass true if the content of the story must be protected from forwarding and screenshotting //@protect_content Pass true if the content of the story must be protected from forwarding and screenshotting
sendStory content:InputStoryContent caption:formattedText privacy_settings:StoryPrivacySettings active_period:int32 is_pinned:Bool protect_content:Bool = Story; sendStory content:InputStoryContent areas:inputStoryAreas caption:formattedText privacy_settings:StoryPrivacySettings active_period:int32 is_pinned:Bool protect_content:Bool = Story;
//@description Changes content and caption of a previously sent story //@description Changes content and caption of a previously sent story
//@story_id Identifier of the story to edit //@story_id Identifier of the story to edit
//@content New content of the story; pass null to keep the current content //@content New content of the story; pass null to keep the current content
//@areas New clickable rectangle areas to be shown on the story media; pass null to keep the current areas. Areas can't be edited if story content isn't changed
//@caption New story caption; pass null to keep the current caption //@caption New story caption; pass null to keep the current caption
editStory story_id:int32 content:InputStoryContent caption:formattedText = Ok; editStory story_id:int32 content:InputStoryContent areas:inputStoryAreas caption:formattedText = Ok;
//@description Changes privacy settings of a previously sent story @story_id Identifier of the story @privacy_settings The new privacy settigs for the story //@description Changes privacy settings of a previously sent story @story_id Identifier of the story @privacy_settings The new privacy settigs for the story
setStoryPrivacySettings story_id:int32 privacy_settings:StoryPrivacySettings = Ok; setStoryPrivacySettings story_id:int32 privacy_settings:StoryPrivacySettings = Ok;
@ -7372,13 +7518,24 @@ openStory story_sender_chat_id:int53 story_id:int32 = Ok;
//@story_id The identifier of the story //@story_id The identifier of the story
closeStory story_sender_chat_id:int53 story_id:int32 = Ok; closeStory story_sender_chat_id:int53 story_id:int32 = Ok;
//@description Returns viewers of a recent outgoing story. The method can be called if story.can_get_viewers == true. The views are returned in a reverse chronological order (i.e., in order of decreasing view_date) //@description Returns reactions, which can be chosen for a story @row_size Number of reaction per row, 5-25
//-For optimal performance, the number of returned stories is chosen by TDLib getStoryAvailableReactions row_size:int32 = AvailableReactions;
//@description Changes chosen reaction on a story
//@story_sender_chat_id The identifier of the sender of the story
//@story_id The identifier of the story
//@reaction_type Type of the reaction to set; pass null to remove the reaction. `reactionTypeCustomEmoji` reactions can be used only by Telegram Premium users
//@update_recent_reactions Pass true if the reaction needs to be added to recent reactions
setStoryReaction story_sender_chat_id:int53 story_id:int32 reaction_type:ReactionType update_recent_reactions:Bool = Ok;
//@description Returns viewers of a story. The method can be called if story.can_get_viewers == true
//@story_id Story identifier //@story_id Story identifier
//@offset_viewer A viewer from which to return next viewers; pass null to get results from the beginning //@query Query to search for in names and usernames of the viewers; may be empty to get all relevant viewers
//@only_contacts Pass true to get only contacts; pass false to get all relevant viewers
//@prefer_with_reaction Pass true to get viewers with reaction first; pass false to get viewers sorted just by view_date
//@offset Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results
//@limit The maximum number of story viewers to return //@limit The maximum number of story viewers to return
//-For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit getStoryViewers story_id:int32 query:string only_contacts:Bool prefer_with_reaction:Bool offset:string limit:int32 = StoryViewers;
getStoryViewers story_id:int32 offset_viewer:messageViewer limit:int32 = MessageViewers;
//@description Reports a story to the Telegram moderators //@description Reports a story to the Telegram moderators
//@story_sender_chat_id The identifier of the sender of the story to report //@story_sender_chat_id The identifier of the sender of the story to report
@ -7387,6 +7544,10 @@ getStoryViewers story_id:int32 offset_viewer:messageViewer limit:int32 = Message
//@text Additional report details; 0-1024 characters //@text Additional report details; 0-1024 characters
reportStory story_sender_chat_id:int53 story_id:int32 reason:ReportReason text:string = Ok; reportStory story_sender_chat_id:int53 story_id:int32 reason:ReportReason text:string = Ok;
//@description Activates stealth mode for stories, which hides all views of stories from the current user in the last "story_stealth_mode_past_period" seconds
//-and for the next "story_stealth_mode_future_period" seconds; for Telegram Premium users only
activateStoryStealthMode = Ok;
//@description Returns information about a bot that can be added to attachment menu @bot_user_id Bot's user identifier //@description Returns information about a bot that can be added to attachment menu @bot_user_id Bot's user identifier
getAttachmentMenuBot bot_user_id:int53 = AttachmentMenuBot; getAttachmentMenuBot bot_user_id:int53 = AttachmentMenuBot;
@ -7761,8 +7922,10 @@ getGroupCallStreams group_call_id:int32 = GroupCallStreams;
getGroupCallStreamSegment group_call_id:int32 time_offset:int53 scale:int32 channel_id:int32 video_quality:GroupCallVideoQuality = FilePart; getGroupCallStreamSegment group_call_id:int32 time_offset:int53 scale:int32 channel_id:int32 video_quality:GroupCallVideoQuality = FilePart;
//@description Changes the block state of a message sender. Currently, only users and supergroup chats can be blocked @sender_id Identifier of a message sender to block/unblock @is_blocked New value of is_blocked //@description Changes the block list of a message sender. Currently, only users and supergroup chats can be blocked
toggleMessageSenderIsBlocked sender_id:MessageSender is_blocked:Bool = Ok; //@sender_id Identifier of a message sender to block/unblock
//@block_list New block list for the message sender; pass null to unblock the message sender
setMessageSenderBlockList sender_id:MessageSender block_list:BlockList = Ok;
//@description Blocks an original sender of a message in the Replies chat //@description Blocks an original sender of a message in the Replies chat
//@message_id The identifier of an incoming message in the Replies chat //@message_id The identifier of an incoming message in the Replies chat
@ -7771,8 +7934,11 @@ toggleMessageSenderIsBlocked sender_id:MessageSender is_blocked:Bool = Ok;
//@report_spam Pass true to report the sender to the Telegram moderators //@report_spam Pass true to report the sender to the Telegram moderators
blockMessageSenderFromReplies message_id:int53 delete_message:Bool delete_all_messages:Bool report_spam:Bool = Ok; blockMessageSenderFromReplies message_id:int53 delete_message:Bool delete_all_messages:Bool report_spam:Bool = Ok;
//@description Returns users and chats that were blocked by the current user @offset Number of users and chats to skip in the result; must be non-negative @limit The maximum number of users and chats to return; up to 100 //@description Returns users and chats that were blocked by the current user
getBlockedMessageSenders offset:int32 limit:int32 = MessageSenders; //@block_list Block list from which to return users
//@offset Number of users and chats to skip in the result; must be non-negative
//@limit The maximum number of users and chats to return; up to 100
getBlockedMessageSenders block_list:BlockList offset:int32 limit:int32 = MessageSenders;
//@description Adds a user to the contact list or edits an existing contact by their user identifier //@description Adds a user to the contact list or edits an existing contact by their user identifier
@ -8040,10 +8206,10 @@ setMenuButton user_id:int53 menu_button:botMenuButton = Ok;
//@description Returns menu button set by the bot for the given user; for bots only @user_id Identifier of the user or 0 to get the default menu button //@description Returns menu button set by the bot for the given user; for bots only @user_id Identifier of the user or 0 to get the default menu button
getMenuButton user_id:int53 = BotMenuButton; getMenuButton user_id:int53 = BotMenuButton;
//@description Sets default administrator rights for adding the bot to basic group and supergroup chats; for bots only @default_group_administrator_rights Default administrator rights for adding the bot to basic group and supergroup chats; may be null //@description Sets default administrator rights for adding the bot to basic group and supergroup chats; for bots only @default_group_administrator_rights Default administrator rights for adding the bot to basic group and supergroup chats; pass null to remove default rights
setDefaultGroupAdministratorRights default_group_administrator_rights:chatAdministratorRights = Ok; setDefaultGroupAdministratorRights default_group_administrator_rights:chatAdministratorRights = Ok;
//@description Sets default administrator rights for adding the bot to channel chats; for bots only @default_channel_administrator_rights Default administrator rights for adding the bot to channels; may be null //@description Sets default administrator rights for adding the bot to channel chats; for bots only @default_channel_administrator_rights Default administrator rights for adding the bot to channels; pass null to remove default rights
setDefaultChannelAdministratorRights default_channel_administrator_rights:chatAdministratorRights = Ok; setDefaultChannelAdministratorRights default_channel_administrator_rights:chatAdministratorRights = Ok;