diff --git a/client/function.go b/client/function.go index dac31ca..22911d2 100755 --- a/client/function.go +++ b/client/function.go @@ -528,7 +528,7 @@ func (client *Client) ConfirmQrCodeAuthentication(req *ConfirmQrCodeAuthenticati return UnmarshalSession(result.Data) } -// Returns all updates needed to restore current TDLib state, i.e. all actual UpdateAuthorizationState/UpdateUser/UpdateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization +// Returns all updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization func (client *Client) GetCurrentState() (*Updates, error) { result, err := client.Send(Request{ meta: meta{ @@ -1268,7 +1268,7 @@ type GetRepliedMessageRequest struct { MessageId int64 `json:"message_id"` } -// Returns information about a message that is replied by a given message. Also returns the pinned message, the game message, and the invoice message for messages of the types messagePinMessage, messageGameScore, and messagePaymentSuccessful respectively +// Returns information about a message that is replied by a given message. Also returns the pinned message, the game message, the invoice message, and the topic creation message for messages of the types messagePinMessage, messageGameScore, messagePaymentSuccessful, and topic messages without replied message respectively func (client *Client) GetRepliedMessage(req *GetRepliedMessageRequest) (*Message, error) { result, err := client.Send(Request{ meta: meta{ @@ -1875,8 +1875,11 @@ func (client *Client) CheckChatUsername(req *CheckChatUsernameRequest) (CheckCha case TypeCheckChatUsernameResultUsernameOccupied: return UnmarshalCheckChatUsernameResultUsernameOccupied(result.Data) - case TypeCheckChatUsernameResultPublicChatsTooMuch: - return UnmarshalCheckChatUsernameResultPublicChatsTooMuch(result.Data) + case TypeCheckChatUsernameResultUsernamePurchasable: + return UnmarshalCheckChatUsernameResultUsernamePurchasable(result.Data) + + case TypeCheckChatUsernameResultPublicChatsTooMany: + return UnmarshalCheckChatUsernameResultPublicChatsTooMany(result.Data) case TypeCheckChatUsernameResultPublicGroupsUnavailable: return UnmarshalCheckChatUsernameResultPublicGroupsUnavailable(result.Data) @@ -3091,7 +3094,7 @@ type SendInlineQueryResultMessageRequest struct { QueryId JsonInt64 `json:"query_id"` // Identifier of the inline result 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"` } @@ -3476,7 +3479,7 @@ type EditMessageCaptionRequest struct { MessageId int64 `json:"message_id"` // The new message reply markup; pass null if none; for bots only ReplyMarkup ReplyMarkup `json:"reply_markup"` - // New message content caption; 0-GetOption("message_caption_length_max") characters; pass null to remove caption + // New message content caption; 0-getOption("message_caption_length_max") characters; pass null to remove caption Caption *FormattedText `json:"caption"` } @@ -3643,7 +3646,7 @@ type EditInlineMessageCaptionRequest struct { InlineMessageId string `json:"inline_message_id"` // The new message reply markup; pass null if none ReplyMarkup ReplyMarkup `json:"reply_markup"` - // New message content caption; pass null to remove caption; 0-GetOption("message_caption_length_max") characters + // New message content caption; pass null to remove caption; 0-getOption("message_caption_length_max") characters Caption *FormattedText `json:"caption"` } @@ -3787,9 +3790,11 @@ type EditForumTopicRequest struct { ChatId int64 `json:"chat_id"` // Message thread identifier of the forum topic MessageThreadId int64 `json:"message_thread_id"` - // New name of the topic; 1-128 characters + // New name of the topic; 0-128 characters. If empty, the previous topic name is kept Name string `json:"name"` - // Identifier of the new custom emoji for topic icon. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons + // Pass true to edit the icon of the topic. Icon of the General topic can't be edited + EditIconCustomEmoji bool `json:"edit_icon_custom_emoji"` + // Identifier of the new custom emoji for topic icon; pass 0 to remove the custom emoji. Ignored if edit_icon_custom_emoji is false. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons IconCustomEmojiId JsonInt64 `json:"icon_custom_emoji_id"` } @@ -3803,6 +3808,7 @@ func (client *Client) EditForumTopic(req *EditForumTopicRequest) (*Ok, error) { "chat_id": req.ChatId, "message_thread_id": req.MessageThreadId, "name": req.Name, + "edit_icon_custom_emoji": req.EditIconCustomEmoji, "icon_custom_emoji_id": req.IconCustomEmojiId, }, }) @@ -3817,6 +3823,137 @@ func (client *Client) EditForumTopic(req *EditForumTopicRequest) (*Ok, error) { return UnmarshalOk(result.Data) } +type GetForumTopicRequest struct { + // Identifier of the chat + ChatId int64 `json:"chat_id"` + // Message thread identifier of the forum topic + MessageThreadId int64 `json:"message_thread_id"` +} + +// Returns information about a forum topic +func (client *Client) GetForumTopic(req *GetForumTopicRequest) (*ForumTopic, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "getForumTopic", + }, + Data: map[string]interface{}{ + "chat_id": req.ChatId, + "message_thread_id": req.MessageThreadId, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalForumTopic(result.Data) +} + +type GetForumTopicLinkRequest struct { + // Identifier of the chat + ChatId int64 `json:"chat_id"` + // Message thread identifier of the forum topic + MessageThreadId int64 `json:"message_thread_id"` +} + +// Returns an HTTPS link to a topic in a forum chat. This is an offline request +func (client *Client) GetForumTopicLink(req *GetForumTopicLinkRequest) (*HttpUrl, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "getForumTopicLink", + }, + Data: map[string]interface{}{ + "chat_id": req.ChatId, + "message_thread_id": req.MessageThreadId, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalHttpUrl(result.Data) +} + +type GetForumTopicsRequest struct { + // Identifier of the forum chat + ChatId int64 `json:"chat_id"` + // Query to search for in the forum topic's name + Query string `json:"query"` + // The date starting from which the results need to be fetched. Use 0 or any date in the future to get results from the last topic + OffsetDate int32 `json:"offset_date"` + // The message identifier of the last message in the last found topic, or 0 for the first request + OffsetMessageId int64 `json:"offset_message_id"` + // The message thread identifier of the last found topic, or 0 for the first request + OffsetMessageThreadId int64 `json:"offset_message_thread_id"` + // The maximum number of forum topics to be returned; up to 100. For optimal performance, the number of returned forum topics is chosen by TDLib and can be smaller than the specified limit + Limit int32 `json:"limit"` +} + +// Returns found forum topics in a forum chat. This is a temporary method for getting information about topic list from the server +func (client *Client) GetForumTopics(req *GetForumTopicsRequest) (*ForumTopics, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "getForumTopics", + }, + Data: map[string]interface{}{ + "chat_id": req.ChatId, + "query": req.Query, + "offset_date": req.OffsetDate, + "offset_message_id": req.OffsetMessageId, + "offset_message_thread_id": req.OffsetMessageThreadId, + "limit": req.Limit, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalForumTopics(result.Data) +} + +type SetForumTopicNotificationSettingsRequest struct { + // Chat identifier + ChatId int64 `json:"chat_id"` + // Message thread identifier of the forum topic + MessageThreadId int64 `json:"message_thread_id"` + // New notification settings for the forum topic. If the topic is muted for more than 366 days, it is considered to be muted forever + NotificationSettings *ChatNotificationSettings `json:"notification_settings"` +} + +// Changes the notification settings of a forum topic +func (client *Client) SetForumTopicNotificationSettings(req *SetForumTopicNotificationSettingsRequest) (*Ok, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "setForumTopicNotificationSettings", + }, + Data: map[string]interface{}{ + "chat_id": req.ChatId, + "message_thread_id": req.MessageThreadId, + "notification_settings": req.NotificationSettings, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalOk(result.Data) +} + type ToggleForumTopicIsClosedRequest struct { // Identifier of the chat ChatId int64 `json:"chat_id"` @@ -3849,6 +3986,35 @@ func (client *Client) ToggleForumTopicIsClosed(req *ToggleForumTopicIsClosedRequ return UnmarshalOk(result.Data) } +type ToggleGeneralForumTopicIsHiddenRequest struct { + // Identifier of the chat + ChatId int64 `json:"chat_id"` + // Pass true to hide and close the General topic; pass false to unhide it + IsHidden bool `json:"is_hidden"` +} + +// Toggles whether a General topic is hidden in a forum supergroup chat; requires can_manage_topics administrator rights in the supergroup +func (client *Client) ToggleGeneralForumTopicIsHidden(req *ToggleGeneralForumTopicIsHiddenRequest) (*Ok, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "toggleGeneralForumTopicIsHidden", + }, + Data: map[string]interface{}{ + "chat_id": req.ChatId, + "is_hidden": req.IsHidden, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalOk(result.Data) +} + type DeleteForumTopicRequest struct { // Identifier of the chat ChatId int64 `json:"chat_id"` @@ -5224,7 +5390,7 @@ type DeleteChatReplyMarkupRequest struct { MessageId int64 `json:"message_id"` } -// Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a ForceReply reply markup has been used. UpdateChatReplyMarkup will be sent if the reply markup is changed +// Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a replyMarkupForceReply reply markup has been used. An updateChatReplyMarkup update will be sent if the reply markup is changed func (client *Client) DeleteChatReplyMarkup(req *DeleteChatReplyMarkupRequest) (*Ok, error) { result, err := client.Send(Request{ meta: meta{ @@ -5543,6 +5709,9 @@ func (client *Client) GetInternalLinkType(req *GetInternalLinkTypeRequest) (Inte case TypeInternalLinkTypeUserPhoneNumber: return UnmarshalInternalLinkTypeUserPhoneNumber(result.Data) + case TypeInternalLinkTypeUserToken: + return UnmarshalInternalLinkTypeUserToken(result.Data) + case TypeInternalLinkTypeVideoChat: return UnmarshalInternalLinkTypeVideoChat(result.Data) @@ -5843,6 +6012,8 @@ type CreateNewBasicGroupChatRequest struct { UserIds []int64 `json:"user_ids"` // Title of the new basic group; 1-128 characters Title string `json:"title"` + // Message TTL value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically + MessageTtl int32 `json:"message_ttl"` } // Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns the newly created chat @@ -5854,6 +6025,7 @@ func (client *Client) CreateNewBasicGroupChat(req *CreateNewBasicGroupChatReques Data: map[string]interface{}{ "user_ids": req.UserIds, "title": req.Title, + "message_ttl": req.MessageTtl, }, }) if err != nil { @@ -5876,6 +6048,8 @@ type CreateNewSupergroupChatRequest struct { Description string `json:"description"` // Chat location if a location-based supergroup is being created; pass null to create an ordinary supergroup chat Location *ChatLocation `json:"location"` + // Message TTL value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically + MessageTtl int32 `json:"message_ttl"` // Pass true to create a supergroup for importing messages using importMessage ForImport bool `json:"for_import"` } @@ -5891,6 +6065,7 @@ func (client *Client) CreateNewSupergroupChat(req *CreateNewSupergroupChatReques "is_channel": req.IsChannel, "description": req.Description, "location": req.Location, + "message_ttl": req.MessageTtl, "for_import": req.ForImport, }, }) @@ -6043,7 +6218,7 @@ type CreateChatFilterRequest struct { Filter *ChatFilter `json:"filter"` } -// Creates new chat filter. Returns information about the created chat filter. There can be up to GetOption("chat_filter_count_max") chat filters, but the limit can be increased with Telegram Premium +// Creates new chat filter. Returns information about the created chat filter. There can be up to getOption("chat_filter_count_max") chat filters, but the limit can be increased with Telegram Premium func (client *Client) CreateChatFilter(req *CreateChatFilterRequest) (*ChatFilterInfo, error) { result, err := client.Send(Request{ meta: meta{ @@ -6259,11 +6434,11 @@ func (client *Client) SetChatPhoto(req *SetChatPhotoRequest) (*Ok, error) { type SetChatMessageTtlRequest struct { // Chat identifier ChatId int64 `json:"chat_id"` - // New TTL value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400 + // New TTL value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically Ttl int32 `json:"ttl"` } -// Changes the message TTL in a chat. Requires can_delete_messages administrator right in basic groups, supergroups and channels Message TTL can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram). +// Changes the message TTL in a chat. Requires change_info administrator right in basic groups, supergroups and channels Message TTL can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram). func (client *Client) SetChatMessageTtl(req *SetChatMessageTtlRequest) (*Ok, error) { result, err := client.Send(Request{ meta: meta{ @@ -7355,7 +7530,7 @@ type ToggleChatIsPinnedRequest struct { IsPinned bool `json:"is_pinned"` } -// Changes the pinned state of a chat. There can be up to GetOption("pinned_chat_count_max")/GetOption("pinned_archived_chat_count_max") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium +// Changes the pinned state of a chat. There can be up to getOption("pinned_chat_count_max")/getOption("pinned_archived_chat_count_max") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium func (client *Client) ToggleChatIsPinned(req *ToggleChatIsPinnedRequest) (*Ok, error) { result, err := client.Send(Request{ meta: meta{ @@ -9157,7 +9332,7 @@ func (client *Client) StartGroupCallScreenSharing(req *StartGroupCallScreenShari type ToggleGroupCallScreenSharingIsPausedRequest struct { // Group call identifier GroupCallId int32 `json:"group_call_id"` - // True if screen sharing is paused + // True, if screen sharing is paused IsPaused bool `json:"is_paused"` } @@ -11115,7 +11290,7 @@ func (client *Client) SetName(req *SetNameRequest) (*Ok, error) { } type SetBioRequest struct { - // The new value of the user bio; 0-GetOption("bio_length_max") characters without line feeds + // The new value of the user bio; 0-getOption("bio_length_max") characters without line feeds Bio string `json:"bio"` } @@ -11255,7 +11430,7 @@ type SetLocationRequest struct { Location *Location `json:"location"` } -// Changes the location of the current user. Needs to be called if GetOption("is_location_visible") is true and location changes for more than 1 kilometer +// Changes the location of the current user. Needs to be called if getOption("is_location_visible") is true and location changes for more than 1 kilometer func (client *Client) SetLocation(req *SetLocationRequest) (*Ok, error) { result, err := client.Send(Request{ meta: meta{ @@ -11350,6 +11525,51 @@ func (client *Client) CheckChangePhoneNumberCode(req *CheckChangePhoneNumberCode return UnmarshalOk(result.Data) } +// Returns an HTTPS link, which can be used to get information about the current user +func (client *Client) GetUserLink() (*UserLink, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "getUserLink", + }, + Data: map[string]interface{}{}, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalUserLink(result.Data) +} + +type SearchUserByTokenRequest struct { + // Token to search for + Token string `json:"token"` +} + +// Searches a user by a token from the user's link +func (client *Client) SearchUserByToken(req *SearchUserByTokenRequest) (*User, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "searchUserByToken", + }, + Data: map[string]interface{}{ + "token": req.Token, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalUser(result.Data) +} + type SetCommandsRequest struct { // The scope to which the commands are relevant; pass null to change commands in the default bot command scope Scope BotCommandScope `json:"scope"` @@ -12020,10 +12240,39 @@ func (client *Client) ToggleSupergroupIsAllHistoryAvailable(req *ToggleSupergrou return UnmarshalOk(result.Data) } +type ToggleSupergroupIsAggressiveAntiSpamEnabledRequest struct { + // The identifier of the supergroup, which isn't a broadcast group + SupergroupId int64 `json:"supergroup_id"` + // The new value of is_aggressive_anti_spam_enabled + IsAggressiveAntiSpamEnabled bool `json:"is_aggressive_anti_spam_enabled"` +} + +// Toggles whether aggressive anti-spam checks are enabled in the supergroup; requires can_delete_messages administrator right. Can be called only if the supergroup has at least getOption("aggressive_anti_spam_supergroup_member_count_min") members +func (client *Client) ToggleSupergroupIsAggressiveAntiSpamEnabled(req *ToggleSupergroupIsAggressiveAntiSpamEnabledRequest) (*Ok, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "toggleSupergroupIsAggressiveAntiSpamEnabled", + }, + Data: map[string]interface{}{ + "supergroup_id": req.SupergroupId, + "is_aggressive_anti_spam_enabled": req.IsAggressiveAntiSpamEnabled, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalOk(result.Data) +} + type ToggleSupergroupIsForumRequest struct { // Identifier of the supergroup SupergroupId int64 `json:"supergroup_id"` - // New value of is_forum. A supergroup can be converted to a forum, only if it has at least GetOption("forum_member_count_min") members + // New value of is_forum. A supergroup can be converted to a forum, only if it has at least getOption("forum_member_count_min") members IsForum bool `json:"is_forum"` } @@ -12104,6 +12353,35 @@ func (client *Client) ReportSupergroupSpam(req *ReportSupergroupSpamRequest) (*O return UnmarshalOk(result.Data) } +type ReportSupergroupAntiSpamFalsePositiveRequest struct { + // Supergroup identifier + SupergroupId int64 `json:"supergroup_id"` + // Identifier of the erroneously deleted message + MessageId int64 `json:"message_id"` +} + +// Reports a false deletion of a message by aggressive anti-spam checks; requires administrator rights in the supergroup. Can be called only for messages from chatEventMessageDeleted with can_report_anti_spam_false_positive == true +func (client *Client) ReportSupergroupAntiSpamFalsePositive(req *ReportSupergroupAntiSpamFalsePositiveRequest) (*Ok, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "reportSupergroupAntiSpamFalsePositive", + }, + Data: map[string]interface{}{ + "supergroup_id": req.SupergroupId, + "message_id": req.MessageId, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalOk(result.Data) +} + type GetSupergroupMembersRequest struct { // Identifier of the supergroup or channel SupergroupId int64 `json:"supergroup_id"` @@ -12309,7 +12587,7 @@ func (client *Client) SendPaymentForm(req *SendPaymentFormRequest) (*PaymentResu } type GetPaymentReceiptRequest struct { - // Chat identifier of the PaymentSuccessful message + // Chat identifier of the messagePaymentSuccessful message ChatId int64 `json:"chat_id"` // Message identifier MessageId int64 `json:"message_id"` @@ -13156,6 +13434,51 @@ func (client *Client) DeleteAccount(req *DeleteAccountRequest) (*Ok, error) { return UnmarshalOk(result.Data) } +type SetDefaultMessageTtlRequest struct { + // New message TTL; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically + Ttl *MessageTtl `json:"ttl"` +} + +// Changes the default message Time To Live setting (self-destruct timer) for new chats +func (client *Client) SetDefaultMessageTtl(req *SetDefaultMessageTtlRequest) (*Ok, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "setDefaultMessageTtl", + }, + Data: map[string]interface{}{ + "ttl": req.Ttl, + }, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalOk(result.Data) +} + +// Returns default message Time To Live setting (self-destruct timer) for new chats +func (client *Client) GetDefaultMessageTtl() (*MessageTtl, error) { + result, err := client.Send(Request{ + meta: meta{ + Type: "getDefaultMessageTtl", + }, + Data: map[string]interface{}{}, + }) + if err != nil { + return nil, err + } + + if result.Type == "error" { + return nil, buildResponseError(result.Data) + } + + return UnmarshalMessageTtl(result.Data) +} + type RemoveChatActionBarRequest struct { // Chat identifier ChatId int64 `json:"chat_id"` diff --git a/client/type.go b/client/type.go index d512da5..e7de646 100755 --- a/client/type.go +++ b/client/type.go @@ -221,6 +221,7 @@ const ( ClassForumTopicIcon = "ForumTopicIcon" ClassForumTopicInfo = "ForumTopicInfo" ClassForumTopic = "ForumTopic" + ClassForumTopics = "ForumTopics" ClassPageBlockCaption = "PageBlockCaption" ClassPageBlockListItem = "PageBlockListItem" ClassPageBlockTableCell = "PageBlockTableCell" @@ -294,6 +295,7 @@ const ( ClassAttachmentMenuBot = "AttachmentMenuBot" ClassSentWebAppMessage = "SentWebAppMessage" ClassHttpUrl = "HttpUrl" + ClassUserLink = "UserLink" ClassInlineQueryResults = "InlineQueryResults" ClassCallbackQueryAnswer = "CallbackQueryAnswer" ClassCustomRequestResult = "CustomRequestResult" @@ -323,6 +325,7 @@ const ( ClassJsonObjectMember = "JsonObjectMember" ClassUserPrivacySettingRules = "UserPrivacySettingRules" ClassAccountTtl = "AccountTtl" + ClassMessageTtl = "MessageTtl" ClassSession = "Session" ClassSessions = "Sessions" ClassConnectedWebsite = "ConnectedWebsite" @@ -377,6 +380,7 @@ const ( TypeAuthenticationCodeTypeCall = "authenticationCodeTypeCall" TypeAuthenticationCodeTypeFlashCall = "authenticationCodeTypeFlashCall" TypeAuthenticationCodeTypeMissedCall = "authenticationCodeTypeMissedCall" + TypeAuthenticationCodeTypeFragment = "authenticationCodeTypeFragment" TypeAuthenticationCodeInfo = "authenticationCodeInfo" TypeEmailAddressAuthenticationCodeInfo = "emailAddressAuthenticationCodeInfo" TypeEmailAddressAuthenticationCode = "emailAddressAuthenticationCode" @@ -611,6 +615,7 @@ const ( TypeForumTopicIcon = "forumTopicIcon" TypeForumTopicInfo = "forumTopicInfo" TypeForumTopic = "forumTopic" + TypeForumTopics = "forumTopics" TypeRichTextPlain = "richTextPlain" TypeRichTextBold = "richTextBold" TypeRichTextItalic = "richTextItalic" @@ -814,6 +819,7 @@ const ( TypeMessageForumTopicCreated = "messageForumTopicCreated" TypeMessageForumTopicEdited = "messageForumTopicEdited" TypeMessageForumTopicIsClosedToggled = "messageForumTopicIsClosedToggled" + TypeMessageForumTopicIsHiddenToggled = "messageForumTopicIsHiddenToggled" TypeMessageCustomServiceAction = "messageCustomServiceAction" TypeMessageGameScore = "messageGameScore" TypeMessagePaymentSuccessful = "messagePaymentSuccessful" @@ -968,6 +974,7 @@ const ( TypeAttachmentMenuBot = "attachmentMenuBot" TypeSentWebAppMessage = "sentWebAppMessage" TypeHttpUrl = "httpUrl" + TypeUserLink = "userLink" TypeInputInlineQueryResultAnimation = "inputInlineQueryResultAnimation" TypeInputInlineQueryResultArticle = "inputInlineQueryResultArticle" TypeInputInlineQueryResultAudio = "inputInlineQueryResultAudio" @@ -1027,6 +1034,7 @@ const ( TypeChatEventHasProtectedContentToggled = "chatEventHasProtectedContentToggled" TypeChatEventInvitesToggled = "chatEventInvitesToggled" TypeChatEventIsAllHistoryAvailableToggled = "chatEventIsAllHistoryAvailableToggled" + TypeChatEventIsAggressiveAntiSpamEnabledToggled = "chatEventIsAggressiveAntiSpamEnabledToggled" TypeChatEventSignMessagesToggled = "chatEventSignMessagesToggled" TypeChatEventInviteLinkEdited = "chatEventInviteLinkEdited" TypeChatEventInviteLinkRevoked = "chatEventInviteLinkRevoked" @@ -1040,6 +1048,7 @@ const ( TypeChatEventForumTopicCreated = "chatEventForumTopicCreated" TypeChatEventForumTopicEdited = "chatEventForumTopicEdited" TypeChatEventForumTopicToggleIsClosed = "chatEventForumTopicToggleIsClosed" + TypeChatEventForumTopicToggleIsHidden = "chatEventForumTopicToggleIsHidden" TypeChatEventForumTopicDeleted = "chatEventForumTopicDeleted" TypeChatEventForumTopicPinned = "chatEventForumTopicPinned" TypeChatEvent = "chatEvent" @@ -1118,7 +1127,8 @@ const ( TypeCheckChatUsernameResultOk = "checkChatUsernameResultOk" TypeCheckChatUsernameResultUsernameInvalid = "checkChatUsernameResultUsernameInvalid" TypeCheckChatUsernameResultUsernameOccupied = "checkChatUsernameResultUsernameOccupied" - TypeCheckChatUsernameResultPublicChatsTooMuch = "checkChatUsernameResultPublicChatsTooMuch" + TypeCheckChatUsernameResultUsernamePurchasable = "checkChatUsernameResultUsernamePurchasable" + TypeCheckChatUsernameResultPublicChatsTooMany = "checkChatUsernameResultPublicChatsTooMany" TypeCheckChatUsernameResultPublicGroupsUnavailable = "checkChatUsernameResultPublicGroupsUnavailable" TypeCheckStickerSetNameResultOk = "checkStickerSetNameResultOk" TypeCheckStickerSetNameResultNameInvalid = "checkStickerSetNameResultNameInvalid" @@ -1200,6 +1210,7 @@ const ( TypeUserPrivacySettingAllowFindingByPhoneNumber = "userPrivacySettingAllowFindingByPhoneNumber" TypeUserPrivacySettingAllowPrivateVoiceAndVideoNoteMessages = "userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages" TypeAccountTtl = "accountTtl" + TypeMessageTtl = "messageTtl" TypeSessionTypeAndroid = "sessionTypeAndroid" TypeSessionTypeApple = "sessionTypeApple" TypeSessionTypeBrave = "sessionTypeBrave" @@ -1266,6 +1277,7 @@ const ( TypeInternalLinkTypeUnknownDeepLink = "internalLinkTypeUnknownDeepLink" TypeInternalLinkTypeUnsupportedProxy = "internalLinkTypeUnsupportedProxy" TypeInternalLinkTypeUserPhoneNumber = "internalLinkTypeUserPhoneNumber" + TypeInternalLinkTypeUserToken = "internalLinkTypeUserToken" TypeInternalLinkTypeVideoChat = "internalLinkTypeVideoChat" TypeMessageLink = "messageLink" TypeMessageLinkInfo = "messageLinkInfo" @@ -1947,7 +1959,7 @@ type SuggestedAction interface { SuggestedActionType() string } -// Describes the way the text needs to be parsed for TextEntities +// Describes the way the text needs to be parsed for text entities type TextParseMode interface { TextParseModeType() string } @@ -2170,6 +2182,35 @@ func (*AuthenticationCodeTypeMissedCall) AuthenticationCodeTypeType() string { return TypeAuthenticationCodeTypeMissedCall } +// An authentication code is delivered to https://fragment.com. The user must be logged in there via a wallet owning the phone number's NFT +type AuthenticationCodeTypeFragment struct { + meta + // URL to open to receive the code + Url string `json:"url"` + // Length of the code + Length int32 `json:"length"` +} + +func (entity *AuthenticationCodeTypeFragment) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub AuthenticationCodeTypeFragment + + return json.Marshal((*stub)(entity)) +} + +func (*AuthenticationCodeTypeFragment) GetClass() string { + return ClassAuthenticationCodeType +} + +func (*AuthenticationCodeTypeFragment) GetType() string { + return TypeAuthenticationCodeTypeFragment +} + +func (*AuthenticationCodeTypeFragment) AuthenticationCodeTypeType() string { + return TypeAuthenticationCodeTypeFragment +} + // Information about the authentication code that was sent type AuthenticationCodeInfo struct { meta @@ -5034,7 +5075,7 @@ func (premiumPaymentOption *PremiumPaymentOption) UnmarshalJSON(data []byte) err // Describes a custom emoji to be shown instead of the Telegram Premium badge type EmojiStatus struct { meta - // Identifier of the custom emoji in stickerFormatTgs format. If the custom emoji belongs to the sticker set GetOption("themed_emoji_statuses_sticker_set_id"), then it's color must be changed to the color of the Telegram Premium badge + // Identifier of the custom emoji in stickerFormatTgs format. If the custom emoji belongs to the sticker set getOption("themed_emoji_statuses_sticker_set_id"), then it's color must be changed to the color of the Telegram Premium badge CustomEmojiId JsonInt64 `json:"custom_emoji_id"` } @@ -5135,13 +5176,15 @@ type User struct { IsPremium bool `json:"is_premium"` // True, if the user is Telegram support account IsSupport bool `json:"is_support"` + // True, if the user's phone number was bought on Fragment and isn't tied to a SIM card + HasAnonymousPhoneNumber bool `json:"has_anonymous_phone_number"` // If non-empty, it contains a human-readable description of the reason why access to this user must be restricted RestrictionReason string `json:"restriction_reason"` // True, if many users reported this user as a scam IsScam bool `json:"is_scam"` // True, if many users reported this user as a fake account IsFake bool `json:"is_fake"` - // If false, the user is inaccessible, and the only information known about the user is inside this class. Identifier of the user can't be passed to any method except GetUser + // If false, the user is inaccessible, and the only information known about the user is inside this class. Identifier of the user can't be passed to any method HaveAccess bool `json:"have_access"` // Type of the user Type UserType `json:"type"` @@ -5183,6 +5226,7 @@ func (user *User) UnmarshalJSON(data []byte) error { IsVerified bool `json:"is_verified"` IsPremium bool `json:"is_premium"` IsSupport bool `json:"is_support"` + HasAnonymousPhoneNumber bool `json:"has_anonymous_phone_number"` RestrictionReason string `json:"restriction_reason"` IsScam bool `json:"is_scam"` IsFake bool `json:"is_fake"` @@ -5210,6 +5254,7 @@ func (user *User) UnmarshalJSON(data []byte) error { user.IsVerified = tmp.IsVerified user.IsPremium = tmp.IsPremium user.IsSupport = tmp.IsSupport + user.HasAnonymousPhoneNumber = tmp.HasAnonymousPhoneNumber user.RestrictionReason = tmp.RestrictionReason user.IsScam = tmp.IsScam user.IsFake = tmp.IsFake @@ -5560,7 +5605,7 @@ type ChatMember struct { MemberId MessageSender `json:"member_id"` // Identifier of a user that invited/promoted/banned this member in the chat; 0 if unknown InviterUserId int64 `json:"inviter_user_id"` - // Point in time (Unix timestamp) when the user joined the chat + // Point in time (Unix timestamp) when the user joined/was promoted/was banned in the chat JoinedChatDate int32 `json:"joined_chat_date"` // Status of the member in the chat Status ChatMemberStatus `json:"status"` @@ -6584,6 +6629,8 @@ type SupergroupFullInfo struct { CanGetStatistics bool `json:"can_get_statistics"` // True, if new chat members will have access to old messages. In public, discussion, of forum groups and all channels, old messages are always available, so this option affects only private non-forum supergroups without a linked chat. The value of this field is only available for chat administrators IsAllHistoryAvailable bool `json:"is_all_history_available"` + // True, if aggressive anti-spam checks are enabled in the supergroup. The value of this field is only available for chat administrators + IsAggressiveAntiSpamEnabled bool `json:"is_aggressive_anti_spam_enabled"` // Identifier of the supergroup sticker set; 0 if none StickerSetId JsonInt64 `json:"sticker_set_id"` // Location to which the supergroup is connected; may be null @@ -8015,26 +8062,26 @@ func (*NotificationSettingsScopeChannelChats) NotificationSettingsScopeType() st return TypeNotificationSettingsScopeChannelChats } -// Contains information about notification settings for a chat +// Contains information about notification settings for a chat or a froum topic type ChatNotificationSettings struct { meta - // If true, mute_for is ignored and the value for the relevant type of chat is used instead + // If true, mute_for is ignored and the value for the relevant type of chat or the forum chat is used instead UseDefaultMuteFor bool `json:"use_default_mute_for"` // Time left before notifications will be unmuted, in seconds MuteFor int32 `json:"mute_for"` - // If true, the value for the relevant type of chat is used instead of sound_id + // If true, the value for the relevant type of chat or the forum chat is used instead of sound_id UseDefaultSound bool `json:"use_default_sound"` // Identifier of the notification sound to be played; 0 if sound is disabled SoundId JsonInt64 `json:"sound_id"` - // If true, show_preview is ignored and the value for the relevant type of chat is used instead + // If true, show_preview is ignored and the value for the relevant type of chat or the forum chat is used instead UseDefaultShowPreview bool `json:"use_default_show_preview"` // True, if message content must be displayed in notifications ShowPreview bool `json:"show_preview"` - // If true, disable_pinned_message_notifications is ignored and the value for the relevant type of chat is used instead + // If true, disable_pinned_message_notifications is ignored and the value for the relevant type of chat or the forum chat is used instead UseDefaultDisablePinnedMessageNotifications bool `json:"use_default_disable_pinned_message_notifications"` // If true, notifications for incoming pinned messages will be created as for an ordinary unread message DisablePinnedMessageNotifications bool `json:"disable_pinned_message_notifications"` - // If true, disable_mention_notifications is ignored and the value for the relevant type of chat is used instead + // If true, disable_mention_notifications is ignored and the value for the relevant type of chat or the forum chat is used instead UseDefaultDisableMentionNotifications bool `json:"use_default_disable_mention_notifications"` // If true, notifications for messages with mentions will be created as for an ordinary unread message DisableMentionNotifications bool `json:"disable_mention_notifications"` @@ -8254,11 +8301,11 @@ type ChatFilter struct { Title string `json:"title"` // The chosen icon name for short filter representation. If non-empty, must be one of "All", "Unread", "Unmuted", "Bots", "Channels", "Groups", "Private", "Custom", "Setup", "Cat", "Crown", "Favorite", "Flower", "Game", "Home", "Love", "Mask", "Party", "Sport", "Study", "Trade", "Travel", "Work", "Airplane", "Book", "Light", "Like", "Money", "Note", "Palette". If empty, use getChatFilterDefaultIconName to get default icon name for the filter IconName string `json:"icon_name"` - // The chat identifiers of pinned chats in the filtered chat list. There can be up to GetOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium + // The chat identifiers of pinned chats in the filtered chat list. There can be up to getOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium PinnedChatIds []int64 `json:"pinned_chat_ids"` - // The chat identifiers of always included chats in the filtered chat list. There can be up to GetOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium + // The chat identifiers of always included chats in the filtered chat list. There can be up to getOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium IncludedChatIds []int64 `json:"included_chat_ids"` - // The chat identifiers of always excluded chats in the filtered chat list. There can be up to GetOption("chat_filter_chosen_chat_count_max") always excluded non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium + // The chat identifiers of always excluded chats in the filtered chat list. There can be up to getOption("chat_filter_chosen_chat_count_max") always excluded non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium ExcludedChatIds []int64 `json:"excluded_chat_ids"` // True, if muted chats need to be excluded ExcludeMuted bool `json:"exclude_muted"` @@ -9651,7 +9698,7 @@ func (inlineKeyboardButton *InlineKeyboardButton) UnmarshalJSON(data []byte) err return nil } -// Instructs application to remove the keyboard once this message has been received. This kind of keyboard can't be received in an incoming message; instead, UpdateChatReplyMarkup with message_id == 0 will be sent +// Instructs application to remove the keyboard once this message has been received. This kind of keyboard can't be received in an incoming message; instead, updateChatReplyMarkup with message_id == 0 will be sent type ReplyMarkupRemoveKeyboard struct { meta // True, if the keyboard is removed only for the mentioned users or the target user of a reply @@ -9927,10 +9974,14 @@ type ForumTopicInfo struct { CreationDate int32 `json:"creation_date"` // Identifier of the creator of the topic CreatorId MessageSender `json:"creator_id"` + // True, if the topic is the General topic list + IsGeneral bool `json:"is_general"` // True, if the topic was created by the current user IsOutgoing bool `json:"is_outgoing"` // True, if the topic is closed IsClosed bool `json:"is_closed"` + // True, if the topic is hidden above the topic list and closed; for General topic only + IsHidden bool `json:"is_hidden"` } func (entity *ForumTopicInfo) MarshalJSON() ([]byte, error) { @@ -9956,8 +10007,10 @@ func (forumTopicInfo *ForumTopicInfo) UnmarshalJSON(data []byte) error { Icon *ForumTopicIcon `json:"icon"` CreationDate int32 `json:"creation_date"` CreatorId json.RawMessage `json:"creator_id"` + IsGeneral bool `json:"is_general"` IsOutgoing bool `json:"is_outgoing"` IsClosed bool `json:"is_closed"` + IsHidden bool `json:"is_hidden"` } err := json.Unmarshal(data, &tmp) @@ -9969,8 +10022,10 @@ func (forumTopicInfo *ForumTopicInfo) UnmarshalJSON(data []byte) error { forumTopicInfo.Name = tmp.Name forumTopicInfo.Icon = tmp.Icon forumTopicInfo.CreationDate = tmp.CreationDate + forumTopicInfo.IsGeneral = tmp.IsGeneral forumTopicInfo.IsOutgoing = tmp.IsOutgoing forumTopicInfo.IsClosed = tmp.IsClosed + forumTopicInfo.IsHidden = tmp.IsHidden fieldCreatorId, _ := UnmarshalMessageSender(tmp.CreatorId) forumTopicInfo.CreatorId = fieldCreatorId @@ -9983,7 +10038,7 @@ type ForumTopic struct { meta // Basic information about the topic Info *ForumTopicInfo `json:"info"` - // Last message in the topic; may be null + // Last message in the topic; may be null if unknown LastMessage *Message `json:"last_message"` // True, if the topic is pinned in the topic list IsPinned bool `json:"is_pinned"` @@ -10019,6 +10074,37 @@ func (*ForumTopic) GetType() string { return TypeForumTopic } +// Describes a list of forum topics +type ForumTopics struct { + meta + // Approximate total number of forum topics found + TotalCount int32 `json:"total_count"` + // List of forum topics + Topics []*ForumTopic `json:"topics"` + // Offset date for the next getForumTopics request + NextOffsetDate int32 `json:"next_offset_date"` + // Offset message identifier for the next getForumTopics request + NextOffsetMessageId int64 `json:"next_offset_message_id"` + // Offset message thread identifier for the next getForumTopics request + NextOffsetMessageThreadId int64 `json:"next_offset_message_thread_id"` +} + +func (entity *ForumTopics) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub ForumTopics + + return json.Marshal((*stub)(entity)) +} + +func (*ForumTopics) GetClass() string { + return ClassForumTopics +} + +func (*ForumTopics) GetType() string { + return TypeForumTopics +} + // A plain text type RichTextPlain struct { meta @@ -16657,6 +16743,8 @@ type MessageChatSetTtl struct { meta // New message TTL Ttl int32 `json:"ttl"` + // If not 0, a user identifier, which default setting was automatically applied + FromUserId int64 `json:"from_user_id"` } func (entity *MessageChatSetTtl) MarshalJSON() ([]byte, error) { @@ -16742,7 +16830,7 @@ func (*MessageForumTopicEdited) MessageContentType() string { // A forum topic has been closed or opened type MessageForumTopicIsClosedToggled struct { meta - // True if the topic was closed or reopened + // True, if the topic was closed, otherwise the topic was reopened IsClosed bool `json:"is_closed"` } @@ -16766,6 +16854,33 @@ func (*MessageForumTopicIsClosedToggled) MessageContentType() string { return TypeMessageForumTopicIsClosedToggled } +// A General forum topic has been hidden or unhidden +type MessageForumTopicIsHiddenToggled struct { + meta + // True, if the topic was hidden, otherwise the topic was unhidden + IsHidden bool `json:"is_hidden"` +} + +func (entity *MessageForumTopicIsHiddenToggled) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub MessageForumTopicIsHiddenToggled + + return json.Marshal((*stub)(entity)) +} + +func (*MessageForumTopicIsHiddenToggled) GetClass() string { + return ClassMessageContent +} + +func (*MessageForumTopicIsHiddenToggled) GetType() string { + return TypeMessageForumTopicIsHiddenToggled +} + +func (*MessageForumTopicIsHiddenToggled) MessageContentType() string { + return TypeMessageForumTopicIsHiddenToggled +} + // A non-standard action has happened in the chat type MessageCustomServiceAction struct { meta @@ -17894,7 +18009,7 @@ func (*MessageCopyOptions) GetType() string { // A text message type InputMessageText struct { meta - // Formatted text to be sent; 1-GetOption("message_text_length_max") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, Code, Pre, PreCode, TextUrl and MentionName entities are allowed to be specified manually + // Formatted text to be sent; 1-getOption("message_text_length_max") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, Code, Pre, PreCode, TextUrl and MentionName entities are allowed to be specified manually Text *FormattedText `json:"text"` // True, if rich web page previews for URLs in the message text must be disabled DisableWebPagePreview bool `json:"disable_web_page_preview"` @@ -17937,7 +18052,7 @@ type InputMessageAnimation struct { Width int32 `json:"width"` // Height of the animation; may be replaced by the server Height int32 `json:"height"` - // Animation caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters + // Animation caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters Caption *FormattedText `json:"caption"` } @@ -18003,7 +18118,7 @@ type InputMessageAudio struct { Title string `json:"title"` // Performer of the audio; 0-64 characters, may be replaced by the server Performer string `json:"performer"` - // Audio caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters + // Audio caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters Caption *FormattedText `json:"caption"` } @@ -18063,7 +18178,7 @@ type InputMessageDocument struct { Thumbnail *InputThumbnail `json:"thumbnail"` // If true, automatic file type detection will be disabled and the document will always be sent as file. Always true for files sent to secret chats DisableContentTypeDetection bool `json:"disable_content_type_detection"` - // Document caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters + // Document caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters Caption *FormattedText `json:"caption"` } @@ -18123,7 +18238,7 @@ type InputMessagePhoto struct { Width int32 `json:"width"` // Photo height Height int32 `json:"height"` - // Photo caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters + // Photo caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters Caption *FormattedText `json:"caption"` // Photo TTL (Time To Live), in seconds (0-60). A non-zero TTL can be specified only in private chats Ttl int32 `json:"ttl"` @@ -18255,7 +18370,7 @@ type InputMessageVideo struct { Height int32 `json:"height"` // True, if the video is supposed to be streamed SupportsStreaming bool `json:"supports_streaming"` - // Video caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters + // Video caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters Caption *FormattedText `json:"caption"` // Video TTL (Time To Live), in seconds (0-60). A non-zero TTL can be specified only in private chats Ttl int32 `json:"ttl"` @@ -18379,7 +18494,7 @@ type InputMessageVoiceNote struct { Duration int32 `json:"duration"` // Waveform representation of the voice note in 5-bit format Waveform []byte `json:"waveform"` - // Voice note caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters + // Voice note caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters Caption *FormattedText `json:"caption"` } @@ -20812,7 +20927,7 @@ type GroupCallParticipantVideoInfo struct { SourceGroups []*GroupCallVideoSourceGroup `json:"source_groups"` // Video channel endpoint identifier EndpointId string `json:"endpoint_id"` - // True if the video is paused. This flag needs to be ignored, if new video frames are received + // True, if the video is paused. This flag needs to be ignored, if new video frames are received IsPaused bool `json:"is_paused"` } @@ -21523,7 +21638,7 @@ func (*DiceStickersSlotMachine) DiceStickersType() string { return TypeDiceStickersSlotMachine } -// Represents the result of an ImportContacts request +// Represents the result of an importContacts request type ImportedContacts struct { meta // User identifiers of the imported contacts in the same order as they were specified in the request; 0 if the contact is not yet a registered user @@ -21753,6 +21868,31 @@ func (*HttpUrl) GetType() string { return TypeHttpUrl } +// Contains an HTTPS URL, which can be used to get information about a user +type UserLink struct { + meta + // The URL + Url string `json:"url"` + // Left time for which the link is valid, in seconds; 0 if the link is a public username link + ExpiresIn int32 `json:"expires_in"` +} + +func (entity *UserLink) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub UserLink + + return json.Marshal((*stub)(entity)) +} + +func (*UserLink) GetClass() string { + return ClassUserLink +} + +func (*UserLink) GetType() string { + return TypeUserLink +} + // Represents a link to an animated GIF or an animated (i.e., without sound) H.264/MPEG-4 AVC video type InputInlineQueryResultAnimation struct { meta @@ -23296,6 +23436,8 @@ type ChatEventMessageDeleted struct { meta // Deleted message Message *Message `json:"message"` + // True, if the message deletion can be reported via reportSupergroupAntiSpamFalsePositive + CanReportAntiSpamFalsePositive bool `json:"can_report_anti_spam_false_positive"` } func (entity *ChatEventMessageDeleted) MarshalJSON() ([]byte, error) { @@ -24111,6 +24253,33 @@ func (*ChatEventIsAllHistoryAvailableToggled) ChatEventActionType() string { return TypeChatEventIsAllHistoryAvailableToggled } +// The is_aggressive_anti_spam_enabled setting of a supergroup was toggled +type ChatEventIsAggressiveAntiSpamEnabledToggled struct { + meta + // New value of is_aggressive_anti_spam_enabled + IsAggressiveAntiSpamEnabled bool `json:"is_aggressive_anti_spam_enabled"` +} + +func (entity *ChatEventIsAggressiveAntiSpamEnabledToggled) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub ChatEventIsAggressiveAntiSpamEnabledToggled + + return json.Marshal((*stub)(entity)) +} + +func (*ChatEventIsAggressiveAntiSpamEnabledToggled) GetClass() string { + return ClassChatEventAction +} + +func (*ChatEventIsAggressiveAntiSpamEnabledToggled) GetType() string { + return TypeChatEventIsAggressiveAntiSpamEnabledToggled +} + +func (*ChatEventIsAggressiveAntiSpamEnabledToggled) ChatEventActionType() string { + return TypeChatEventIsAggressiveAntiSpamEnabledToggled +} + // The sign_messages setting of a channel was toggled type ChatEventSignMessagesToggled struct { meta @@ -24508,6 +24677,33 @@ func (*ChatEventForumTopicToggleIsClosed) ChatEventActionType() string { return TypeChatEventForumTopicToggleIsClosed } +// The General forum topic was hidden or unhidden +type ChatEventForumTopicToggleIsHidden struct { + meta + // New information about the topic + TopicInfo *ForumTopicInfo `json:"topic_info"` +} + +func (entity *ChatEventForumTopicToggleIsHidden) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub ChatEventForumTopicToggleIsHidden + + return json.Marshal((*stub)(entity)) +} + +func (*ChatEventForumTopicToggleIsHidden) GetClass() string { + return ClassChatEventAction +} + +func (*ChatEventForumTopicToggleIsHidden) GetType() string { + return TypeChatEventForumTopicToggleIsHidden +} + +func (*ChatEventForumTopicToggleIsHidden) ChatEventActionType() string { + return TypeChatEventForumTopicToggleIsHidden +} + // A forum topic was deleted type ChatEventForumTopicDeleted struct { meta @@ -26862,29 +27058,54 @@ func (*CheckChatUsernameResultUsernameOccupied) CheckChatUsernameResultType() st return TypeCheckChatUsernameResultUsernameOccupied } -// The user has too many chats with username, one of them must be made private first -type CheckChatUsernameResultPublicChatsTooMuch struct{ +// The username can be purchased at fragment.com +type CheckChatUsernameResultUsernamePurchasable struct{ meta } -func (entity *CheckChatUsernameResultPublicChatsTooMuch) MarshalJSON() ([]byte, error) { +func (entity *CheckChatUsernameResultUsernamePurchasable) MarshalJSON() ([]byte, error) { entity.meta.Type = entity.GetType() - type stub CheckChatUsernameResultPublicChatsTooMuch + type stub CheckChatUsernameResultUsernamePurchasable return json.Marshal((*stub)(entity)) } -func (*CheckChatUsernameResultPublicChatsTooMuch) GetClass() string { +func (*CheckChatUsernameResultUsernamePurchasable) GetClass() string { return ClassCheckChatUsernameResult } -func (*CheckChatUsernameResultPublicChatsTooMuch) GetType() string { - return TypeCheckChatUsernameResultPublicChatsTooMuch +func (*CheckChatUsernameResultUsernamePurchasable) GetType() string { + return TypeCheckChatUsernameResultUsernamePurchasable } -func (*CheckChatUsernameResultPublicChatsTooMuch) CheckChatUsernameResultType() string { - return TypeCheckChatUsernameResultPublicChatsTooMuch +func (*CheckChatUsernameResultUsernamePurchasable) CheckChatUsernameResultType() string { + return TypeCheckChatUsernameResultUsernamePurchasable +} + +// The user has too many chats with username, one of them must be made private first +type CheckChatUsernameResultPublicChatsTooMany struct{ + meta +} + +func (entity *CheckChatUsernameResultPublicChatsTooMany) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub CheckChatUsernameResultPublicChatsTooMany + + return json.Marshal((*stub)(entity)) +} + +func (*CheckChatUsernameResultPublicChatsTooMany) GetClass() string { + return ClassCheckChatUsernameResult +} + +func (*CheckChatUsernameResultPublicChatsTooMany) GetType() string { + return TypeCheckChatUsernameResultPublicChatsTooMany +} + +func (*CheckChatUsernameResultPublicChatsTooMany) CheckChatUsernameResultType() string { + return TypeCheckChatUsernameResultPublicChatsTooMany } // The user can't be a member of a public supergroup @@ -29206,6 +29427,29 @@ func (*AccountTtl) GetType() string { return TypeAccountTtl } +// Contains default message Time To Live setting (self-destruct timer) for new chats +type MessageTtl struct { + meta + // Message TTL setting, in seconds. If 0, then messages aren't deleted automatically + Ttl int32 `json:"ttl"` +} + +func (entity *MessageTtl) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub MessageTtl + + return json.Marshal((*stub)(entity)) +} + +func (*MessageTtl) GetClass() string { + return ClassMessageTtl +} + +func (*MessageTtl) GetType() string { + return TypeMessageTtl +} + // The session is running on an Android device type SessionTypeAndroid struct{ meta @@ -30613,7 +30857,7 @@ func (*InternalLinkTypeLanguageSettings) InternalLinkTypeType() string { return TypeInternalLinkTypeLanguageSettings } -// The link is a link to a Telegram message. Call getMessageLinkInfo with the given URL to process the link +// The link is a link to a Telegram message or a forum topic. Call getMessageLinkInfo with the given URL to process the link type InternalLinkTypeMessage struct { meta // URL to be passed to getMessageLinkInfo @@ -31097,6 +31341,33 @@ func (*InternalLinkTypeUserPhoneNumber) InternalLinkTypeType() string { return TypeInternalLinkTypeUserPhoneNumber } +// The link is a link to a user by a temporary token. Call searchUserByToken with the given token to process the link +type InternalLinkTypeUserToken struct { + meta + // The token + Token string `json:"token"` +} + +func (entity *InternalLinkTypeUserToken) MarshalJSON() ([]byte, error) { + entity.meta.Type = entity.GetType() + + type stub InternalLinkTypeUserToken + + return json.Marshal((*stub)(entity)) +} + +func (*InternalLinkTypeUserToken) GetClass() string { + return ClassInternalLinkType +} + +func (*InternalLinkTypeUserToken) GetType() string { + return TypeInternalLinkTypeUserToken +} + +func (*InternalLinkTypeUserToken) InternalLinkTypeType() string { + return TypeInternalLinkTypeUserToken +} + // The link is a link to a video chat. Call searchPublicChat with the given chat username, and then joinGroupCall with the given invite hash to process the link type InternalLinkTypeVideoChat struct { meta @@ -31153,14 +31424,14 @@ func (*MessageLink) GetType() string { return TypeMessageLink } -// Contains information about a link to a message in a chat +// Contains information about a link to a message or a forum topic in a chat type MessageLinkInfo struct { meta // True, if the link is a public link for a message in a chat IsPublic bool `json:"is_public"` // If found, identifier of the chat to which the message belongs, 0 otherwise ChatId int64 `json:"chat_id"` - // If found, identifier of the message thread in which to open the message, or which to open in case of a missing message + // If found, identifier of the message thread in which to open the message, or a forum topic to open if the message is missing MessageThreadId int64 `json:"message_thread_id"` // If found, the linked message; may be null Message *Message `json:"message"` @@ -36990,7 +37261,7 @@ func (*UpdateAnimatedEmojiMessageClicked) UpdateType() string { return TypeUpdateAnimatedEmojiMessageClicked } -// The parameters of animation search through GetOption("animation_search_bot_username") bot has changed +// The parameters of animation search through getOption("animation_search_bot_username") bot has changed type UpdateAnimationSearchParameters struct { meta // Name of the animation search provider diff --git a/client/unmarshaler.go b/client/unmarshaler.go index 03b594c..d9c5d0f 100755 --- a/client/unmarshaler.go +++ b/client/unmarshaler.go @@ -31,6 +31,9 @@ func UnmarshalAuthenticationCodeType(data json.RawMessage) (AuthenticationCodeTy case TypeAuthenticationCodeTypeMissedCall: return UnmarshalAuthenticationCodeTypeMissedCall(data) + case TypeAuthenticationCodeTypeFragment: + return UnmarshalAuthenticationCodeTypeFragment(data) + default: return nil, fmt.Errorf("Error unmarshaling. Unknown type: " + meta.Type) } @@ -2096,6 +2099,9 @@ func UnmarshalMessageContent(data json.RawMessage) (MessageContent, error) { case TypeMessageForumTopicIsClosedToggled: return UnmarshalMessageForumTopicIsClosedToggled(data) + case TypeMessageForumTopicIsHiddenToggled: + return UnmarshalMessageForumTopicIsHiddenToggled(data) + case TypeMessageCustomServiceAction: return UnmarshalMessageCustomServiceAction(data) @@ -3094,6 +3100,9 @@ func UnmarshalChatEventAction(data json.RawMessage) (ChatEventAction, error) { case TypeChatEventIsAllHistoryAvailableToggled: return UnmarshalChatEventIsAllHistoryAvailableToggled(data) + case TypeChatEventIsAggressiveAntiSpamEnabledToggled: + return UnmarshalChatEventIsAggressiveAntiSpamEnabledToggled(data) + case TypeChatEventSignMessagesToggled: return UnmarshalChatEventSignMessagesToggled(data) @@ -3133,6 +3142,9 @@ func UnmarshalChatEventAction(data json.RawMessage) (ChatEventAction, error) { case TypeChatEventForumTopicToggleIsClosed: return UnmarshalChatEventForumTopicToggleIsClosed(data) + case TypeChatEventForumTopicToggleIsHidden: + return UnmarshalChatEventForumTopicToggleIsHidden(data) + case TypeChatEventForumTopicDeleted: return UnmarshalChatEventForumTopicDeleted(data) @@ -3624,8 +3636,11 @@ func UnmarshalCheckChatUsernameResult(data json.RawMessage) (CheckChatUsernameRe case TypeCheckChatUsernameResultUsernameOccupied: return UnmarshalCheckChatUsernameResultUsernameOccupied(data) - case TypeCheckChatUsernameResultPublicChatsTooMuch: - return UnmarshalCheckChatUsernameResultPublicChatsTooMuch(data) + case TypeCheckChatUsernameResultUsernamePurchasable: + return UnmarshalCheckChatUsernameResultUsernamePurchasable(data) + + case TypeCheckChatUsernameResultPublicChatsTooMany: + return UnmarshalCheckChatUsernameResultPublicChatsTooMany(data) case TypeCheckChatUsernameResultPublicGroupsUnavailable: return UnmarshalCheckChatUsernameResultPublicGroupsUnavailable(data) @@ -4427,6 +4442,9 @@ func UnmarshalInternalLinkType(data json.RawMessage) (InternalLinkType, error) { case TypeInternalLinkTypeUserPhoneNumber: return UnmarshalInternalLinkTypeUserPhoneNumber(data) + case TypeInternalLinkTypeUserToken: + return UnmarshalInternalLinkTypeUserToken(data) + case TypeInternalLinkTypeVideoChat: return UnmarshalInternalLinkTypeVideoChat(data) @@ -5444,6 +5462,14 @@ func UnmarshalAuthenticationCodeTypeMissedCall(data json.RawMessage) (*Authentic return &resp, err } +func UnmarshalAuthenticationCodeTypeFragment(data json.RawMessage) (*AuthenticationCodeTypeFragment, error) { + var resp AuthenticationCodeTypeFragment + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalAuthenticationCodeInfo(data json.RawMessage) (*AuthenticationCodeInfo, error) { var resp AuthenticationCodeInfo @@ -7316,6 +7342,14 @@ func UnmarshalForumTopic(data json.RawMessage) (*ForumTopic, error) { return &resp, err } +func UnmarshalForumTopics(data json.RawMessage) (*ForumTopics, error) { + var resp ForumTopics + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalRichTextPlain(data json.RawMessage) (*RichTextPlain, error) { var resp RichTextPlain @@ -8940,6 +8974,14 @@ func UnmarshalMessageForumTopicIsClosedToggled(data json.RawMessage) (*MessageFo return &resp, err } +func UnmarshalMessageForumTopicIsHiddenToggled(data json.RawMessage) (*MessageForumTopicIsHiddenToggled, error) { + var resp MessageForumTopicIsHiddenToggled + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalMessageCustomServiceAction(data json.RawMessage) (*MessageCustomServiceAction, error) { var resp MessageCustomServiceAction @@ -10172,6 +10214,14 @@ func UnmarshalHttpUrl(data json.RawMessage) (*HttpUrl, error) { return &resp, err } +func UnmarshalUserLink(data json.RawMessage) (*UserLink, error) { + var resp UserLink + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalInputInlineQueryResultAnimation(data json.RawMessage) (*InputInlineQueryResultAnimation, error) { var resp InputInlineQueryResultAnimation @@ -10644,6 +10694,14 @@ func UnmarshalChatEventIsAllHistoryAvailableToggled(data json.RawMessage) (*Chat return &resp, err } +func UnmarshalChatEventIsAggressiveAntiSpamEnabledToggled(data json.RawMessage) (*ChatEventIsAggressiveAntiSpamEnabledToggled, error) { + var resp ChatEventIsAggressiveAntiSpamEnabledToggled + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalChatEventSignMessagesToggled(data json.RawMessage) (*ChatEventSignMessagesToggled, error) { var resp ChatEventSignMessagesToggled @@ -10748,6 +10806,14 @@ func UnmarshalChatEventForumTopicToggleIsClosed(data json.RawMessage) (*ChatEven return &resp, err } +func UnmarshalChatEventForumTopicToggleIsHidden(data json.RawMessage) (*ChatEventForumTopicToggleIsHidden, error) { + var resp ChatEventForumTopicToggleIsHidden + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalChatEventForumTopicDeleted(data json.RawMessage) (*ChatEventForumTopicDeleted, error) { var resp ChatEventForumTopicDeleted @@ -11372,8 +11438,16 @@ func UnmarshalCheckChatUsernameResultUsernameOccupied(data json.RawMessage) (*Ch return &resp, err } -func UnmarshalCheckChatUsernameResultPublicChatsTooMuch(data json.RawMessage) (*CheckChatUsernameResultPublicChatsTooMuch, error) { - var resp CheckChatUsernameResultPublicChatsTooMuch +func UnmarshalCheckChatUsernameResultUsernamePurchasable(data json.RawMessage) (*CheckChatUsernameResultUsernamePurchasable, error) { + var resp CheckChatUsernameResultUsernamePurchasable + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + +func UnmarshalCheckChatUsernameResultPublicChatsTooMany(data json.RawMessage) (*CheckChatUsernameResultPublicChatsTooMany, error) { + var resp CheckChatUsernameResultPublicChatsTooMany err := json.Unmarshal(data, &resp) @@ -12028,6 +12102,14 @@ func UnmarshalAccountTtl(data json.RawMessage) (*AccountTtl, error) { return &resp, err } +func UnmarshalMessageTtl(data json.RawMessage) (*MessageTtl, error) { + var resp MessageTtl + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalSessionTypeAndroid(data json.RawMessage) (*SessionTypeAndroid, error) { var resp SessionTypeAndroid @@ -12556,6 +12638,14 @@ func UnmarshalInternalLinkTypeUserPhoneNumber(data json.RawMessage) (*InternalLi return &resp, err } +func UnmarshalInternalLinkTypeUserToken(data json.RawMessage) (*InternalLinkTypeUserToken, error) { + var resp InternalLinkTypeUserToken + + err := json.Unmarshal(data, &resp) + + return &resp, err +} + func UnmarshalInternalLinkTypeVideoChat(data json.RawMessage) (*InternalLinkTypeVideoChat, error) { var resp InternalLinkTypeVideoChat @@ -14298,6 +14388,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeAuthenticationCodeTypeMissedCall: return UnmarshalAuthenticationCodeTypeMissedCall(data) + case TypeAuthenticationCodeTypeFragment: + return UnmarshalAuthenticationCodeTypeFragment(data) + case TypeAuthenticationCodeInfo: return UnmarshalAuthenticationCodeInfo(data) @@ -15000,6 +15093,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeForumTopic: return UnmarshalForumTopic(data) + case TypeForumTopics: + return UnmarshalForumTopics(data) + case TypeRichTextPlain: return UnmarshalRichTextPlain(data) @@ -15609,6 +15705,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeMessageForumTopicIsClosedToggled: return UnmarshalMessageForumTopicIsClosedToggled(data) + case TypeMessageForumTopicIsHiddenToggled: + return UnmarshalMessageForumTopicIsHiddenToggled(data) + case TypeMessageCustomServiceAction: return UnmarshalMessageCustomServiceAction(data) @@ -16071,6 +16170,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeHttpUrl: return UnmarshalHttpUrl(data) + case TypeUserLink: + return UnmarshalUserLink(data) + case TypeInputInlineQueryResultAnimation: return UnmarshalInputInlineQueryResultAnimation(data) @@ -16248,6 +16350,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeChatEventIsAllHistoryAvailableToggled: return UnmarshalChatEventIsAllHistoryAvailableToggled(data) + case TypeChatEventIsAggressiveAntiSpamEnabledToggled: + return UnmarshalChatEventIsAggressiveAntiSpamEnabledToggled(data) + case TypeChatEventSignMessagesToggled: return UnmarshalChatEventSignMessagesToggled(data) @@ -16287,6 +16392,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeChatEventForumTopicToggleIsClosed: return UnmarshalChatEventForumTopicToggleIsClosed(data) + case TypeChatEventForumTopicToggleIsHidden: + return UnmarshalChatEventForumTopicToggleIsHidden(data) + case TypeChatEventForumTopicDeleted: return UnmarshalChatEventForumTopicDeleted(data) @@ -16521,8 +16629,11 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeCheckChatUsernameResultUsernameOccupied: return UnmarshalCheckChatUsernameResultUsernameOccupied(data) - case TypeCheckChatUsernameResultPublicChatsTooMuch: - return UnmarshalCheckChatUsernameResultPublicChatsTooMuch(data) + case TypeCheckChatUsernameResultUsernamePurchasable: + return UnmarshalCheckChatUsernameResultUsernamePurchasable(data) + + case TypeCheckChatUsernameResultPublicChatsTooMany: + return UnmarshalCheckChatUsernameResultPublicChatsTooMany(data) case TypeCheckChatUsernameResultPublicGroupsUnavailable: return UnmarshalCheckChatUsernameResultPublicGroupsUnavailable(data) @@ -16767,6 +16878,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeAccountTtl: return UnmarshalAccountTtl(data) + case TypeMessageTtl: + return UnmarshalMessageTtl(data) + case TypeSessionTypeAndroid: return UnmarshalSessionTypeAndroid(data) @@ -16965,6 +17079,9 @@ func UnmarshalType(data json.RawMessage) (Type, error) { case TypeInternalLinkTypeUserPhoneNumber: return UnmarshalInternalLinkTypeUserPhoneNumber(data) + case TypeInternalLinkTypeUserToken: + return UnmarshalInternalLinkTypeUserToken(data) + case TypeInternalLinkTypeVideoChat: return UnmarshalInternalLinkTypeVideoChat(data) diff --git a/data/td_api.tl b/data/td_api.tl index d49b654..07979c8 100644 --- a/data/td_api.tl +++ b/data/td_api.tl @@ -39,6 +39,9 @@ authenticationCodeTypeFlashCall pattern:string = AuthenticationCodeType; //@description An authentication code is delivered by an immediately canceled call to the specified phone number. The last digits of the phone number that calls are the code that must be entered manually by the user @phone_number_prefix Prefix of the phone number from which the call will be made @length Number of digits in the code, excluding the prefix authenticationCodeTypeMissedCall phone_number_prefix:string length:int32 = AuthenticationCodeType; +//@description An authentication code is delivered to https://fragment.com. The user must be logged in there via a wallet owning the phone number's NFT @url URL to open to receive the code @length Length of the code +authenticationCodeTypeFragment url:string length:int32 = AuthenticationCodeType; + //@description Information about the authentication code that was sent @phone_number A phone number that is being authenticated @type The way the code was sent to the user @next_type The way the next code will be sent to the user; may be null @timeout Timeout before the code can be re-sent, in seconds authenticationCodeInfo phone_number:string type:AuthenticationCodeType next_type:AuthenticationCodeType timeout:int32 = AuthenticationCodeInfo; @@ -485,7 +488,7 @@ chatAdministratorRights can_manage_chat:Bool can_change_info:Bool can_post_messa premiumPaymentOption currency:string amount:int53 discount_percentage:int32 month_count:int32 store_product_id:string payment_link:InternalLinkType = PremiumPaymentOption; -//@description Describes a custom emoji to be shown instead of the Telegram Premium badge @custom_emoji_id Identifier of the custom emoji in stickerFormatTgs format. If the custom emoji belongs to the sticker set GetOption("themed_emoji_statuses_sticker_set_id"), then it's color must be changed to the color of the Telegram Premium badge +//@description Describes a custom emoji to be shown instead of the Telegram Premium badge @custom_emoji_id Identifier of the custom emoji in stickerFormatTgs format. If the custom emoji belongs to the sticker set getOption("themed_emoji_statuses_sticker_set_id"), then it's color must be changed to the color of the Telegram Premium badge emojiStatus custom_emoji_id:int64 = EmojiStatus; //@description Contains a list of emoji statuses @emoji_statuses The list of emoji statuses @@ -514,14 +517,15 @@ usernames active_usernames:vector disabled_usernames:vector edit //@is_verified True, if the user is verified //@is_premium True, if the user is a Telegram Premium user //@is_support True, if the user is Telegram support account +//@has_anonymous_phone_number True, if the user's phone number was bought on Fragment and isn't tied to a SIM card //@restriction_reason If non-empty, it contains a human-readable description of the reason why access to this user must be restricted //@is_scam True, if many users reported this user as a scam //@is_fake True, if many users reported this user as a fake account -//@have_access If false, the user is inaccessible, and the only information known about the user is inside this class. Identifier of the user can't be passed to any method except GetUser +//@have_access If false, the user is inaccessible, and the only information known about the user is inside this class. Identifier of the user can't be passed to any method //@type Type of the user //@language_code IETF language tag of the user's language; only available to bots //@added_to_attachment_menu True, if the user added the current bot to attachment menu; only available to bots -user id:int53 access_hash:int64 first_name:string last_name:string usernames:usernames phone_number:string status:UserStatus profile_photo:profilePhoto emoji_status:emojiStatus is_contact:Bool is_mutual_contact:Bool is_verified:Bool is_premium:Bool is_support:Bool restriction_reason:string is_scam:Bool is_fake:Bool have_access:Bool type:UserType language_code:string added_to_attachment_menu:Bool = User; +user id:int53 access_hash:int64 first_name:string last_name:string usernames:usernames phone_number:string status:UserStatus profile_photo:profilePhoto emoji_status:emojiStatus is_contact:Bool is_mutual_contact:Bool is_verified:Bool is_premium:Bool is_support:Bool has_anonymous_phone_number:Bool restriction_reason:string is_scam:Bool is_fake:Bool have_access:Bool type:UserType language_code:string added_to_attachment_menu:Bool = User; //@description Contains information about a bot @@ -595,7 +599,7 @@ chatMemberStatusBanned banned_until_date:int32 = ChatMemberStatus; //@description Describes a user or a chat as a member of another chat //@member_id Identifier of the chat member. Currently, other chats can be only Left or Banned. Only supergroups and channels can have other chats as Left or Banned members and these chats must be supergroups or channels //@inviter_user_id Identifier of a user that invited/promoted/banned this member in the chat; 0 if unknown -//@joined_chat_date Point in time (Unix timestamp) when the user joined the chat +//@joined_chat_date Point in time (Unix timestamp) when the user joined/was promoted/was banned in the chat //@status Status of the member in the chat chatMember member_id:MessageSender inviter_user_id:int53 joined_chat_date:int32 status:ChatMemberStatus = ChatMember; @@ -767,13 +771,14 @@ supergroup id:int53 access_hash:int64 usernames:usernames date:int32 status:Chat //@can_set_location True, if the supergroup location can be changed //@can_get_statistics True, if the supergroup or channel statistics are available //@is_all_history_available True, if new chat members will have access to old messages. In public, discussion, of forum groups and all channels, old messages are always available, so this option affects only private non-forum supergroups without a linked chat. The value of this field is only available for chat administrators +//@is_aggressive_anti_spam_enabled True, if aggressive anti-spam checks are enabled in the supergroup. The value of this field is only available for chat administrators //@sticker_set_id Identifier of the supergroup sticker set; 0 if none //@location Location to which the supergroup is connected; may be null //@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 //@upgraded_from_basic_group_id Identifier of the basic group from which supergroup was upgraded; 0 if none //@upgraded_from_max_message_id Identifier of the last message in the basic group from which supergroup was upgraded; 0 if none -supergroupFullInfo photo:chatPhoto description:string member_count:int32 administrator_count:int32 restricted_count:int32 banned_count:int32 linked_chat_id:int53 slow_mode_delay:int32 slow_mode_delay_expires_in:double can_get_members:Bool can_set_username:Bool can_set_sticker_set:Bool can_set_location:Bool can_get_statistics:Bool is_all_history_available:Bool sticker_set_id:int64 location:chatLocation invite_link:chatInviteLink bot_commands:vector upgraded_from_basic_group_id:int53 upgraded_from_max_message_id:int53 = SupergroupFullInfo; +supergroupFullInfo photo:chatPhoto description:string member_count:int32 administrator_count:int32 restricted_count:int32 banned_count:int32 linked_chat_id:int53 slow_mode_delay:int32 slow_mode_delay_expires_in:double can_get_members:Bool can_set_username:Bool can_set_sticker_set:Bool can_set_location:Bool can_get_statistics:Bool is_all_history_available:Bool is_aggressive_anti_spam_enabled:Bool sticker_set_id:int64 location:chatLocation invite_link:chatInviteLink bot_commands:vector upgraded_from_basic_group_id:int53 upgraded_from_max_message_id:int53 = SupergroupFullInfo; //@class SecretChatState @description Describes the current secret chat state @@ -1007,12 +1012,12 @@ notificationSettingsScopeGroupChats = NotificationSettingsScope; notificationSettingsScopeChannelChats = NotificationSettingsScope; -//@description Contains information about notification settings for a chat -//@use_default_mute_for If true, mute_for is ignored and the value for the relevant type of chat is used instead @mute_for Time left before notifications will be unmuted, in seconds -//@use_default_sound If true, the value for the relevant type of chat is used instead of sound_id @sound_id Identifier of the notification sound to be played; 0 if sound is disabled -//@use_default_show_preview If true, show_preview is ignored and the value for the relevant type of chat is used instead @show_preview True, if message content must be displayed in notifications -//@use_default_disable_pinned_message_notifications If true, disable_pinned_message_notifications is ignored and the value for the relevant type of chat is used instead @disable_pinned_message_notifications If true, notifications for incoming pinned messages will be created as for an ordinary unread message -//@use_default_disable_mention_notifications If true, disable_mention_notifications is ignored and the value for the relevant type of chat is used instead @disable_mention_notifications If true, notifications for messages with mentions will be created as for an ordinary unread message +//@description Contains information about notification settings for a chat or a froum topic +//@use_default_mute_for If true, mute_for is ignored and the value for the relevant type of chat or the forum chat is used instead @mute_for Time left before notifications will be unmuted, in seconds +//@use_default_sound If true, the value for the relevant type of chat or the forum chat is used instead of sound_id @sound_id Identifier of the notification sound to be played; 0 if sound is disabled +//@use_default_show_preview If true, show_preview is ignored and the value for the relevant type of chat or the forum chat is used instead @show_preview True, if message content must be displayed in notifications +//@use_default_disable_pinned_message_notifications If true, disable_pinned_message_notifications is ignored and the value for the relevant type of chat or the forum chat is used instead @disable_pinned_message_notifications If true, notifications for incoming pinned messages will be created as for an ordinary unread message +//@use_default_disable_mention_notifications If true, disable_mention_notifications is ignored and the value for the relevant type of chat or the forum chat is used instead @disable_mention_notifications If true, notifications for messages with mentions will be created as for an ordinary unread message chatNotificationSettings use_default_mute_for:Bool mute_for:int32 use_default_sound:Bool sound_id:int64 use_default_show_preview:Bool show_preview:Bool use_default_disable_pinned_message_notifications:Bool disable_pinned_message_notifications:Bool use_default_disable_mention_notifications:Bool disable_mention_notifications:Bool = ChatNotificationSettings; //@description Contains information about notification settings for several chats @@ -1050,9 +1055,9 @@ chatTypeSecret secret_chat_id:int32 user_id:int53 = ChatType; //@title The title of the filter; 1-12 characters without line feeds //@icon_name The chosen icon name for short filter representation. If non-empty, must be one of "All", "Unread", "Unmuted", "Bots", "Channels", "Groups", "Private", "Custom", "Setup", "Cat", "Crown", "Favorite", "Flower", "Game", "Home", "Love", "Mask", "Party", "Sport", "Study", "Trade", "Travel", "Work", "Airplane", "Book", "Light", "Like", "Money", "Note", "Palette". //-If empty, use getChatFilterDefaultIconName to get default icon name for the filter -//@pinned_chat_ids The chat identifiers of pinned chats in the filtered chat list. There can be up to GetOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium -//@included_chat_ids The chat identifiers of always included chats in the filtered chat list. There can be up to GetOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium -//@excluded_chat_ids The chat identifiers of always excluded chats in the filtered chat list. There can be up to GetOption("chat_filter_chosen_chat_count_max") always excluded non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium +//@pinned_chat_ids The chat identifiers of pinned chats in the filtered chat list. There can be up to getOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium +//@included_chat_ids The chat identifiers of always included chats in the filtered chat list. There can be up to getOption("chat_filter_chosen_chat_count_max") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium +//@excluded_chat_ids The chat identifiers of always excluded chats in the filtered chat list. There can be up to getOption("chat_filter_chosen_chat_count_max") always excluded non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium //@exclude_muted True, if muted chats need to be excluded //@exclude_read True, if read chats need to be excluded //@exclude_archived True, if archived chats need to be excluded @@ -1266,7 +1271,7 @@ inlineKeyboardButton text:string type:InlineKeyboardButtonType = InlineKeyboardB //@class ReplyMarkup @description Contains a description of a custom keyboard and actions that can be done with it to quickly reply to bots -//@description Instructs application to remove the keyboard once this message has been received. This kind of keyboard can't be received in an incoming message; instead, UpdateChatReplyMarkup with message_id == 0 will be sent +//@description Instructs application to remove the keyboard once this message has been received. This kind of keyboard can't be received in an incoming message; instead, updateChatReplyMarkup with message_id == 0 will be sent //@is_personal True, if the keyboard is removed only for the mentioned users or the target user of a reply replyMarkupRemoveKeyboard is_personal:Bool = ReplyMarkup; @@ -1321,13 +1326,15 @@ forumTopicIcon color:int32 custom_emoji_id:int64 = ForumTopicIcon; //@icon Icon of the topic //@creation_date Date the topic was created //@creator_id Identifier of the creator of the topic +//@is_general True, if the topic is the General topic list //@is_outgoing True, if the topic was created by the current user //@is_closed True, if the topic is closed -forumTopicInfo message_thread_id:int53 name:string icon:forumTopicIcon creation_date:int32 creator_id:MessageSender is_outgoing:Bool is_closed:Bool = ForumTopicInfo; +//@is_hidden True, if the topic is hidden above the topic list and closed; for General topic only +forumTopicInfo message_thread_id:int53 name:string icon:forumTopicIcon creation_date:int32 creator_id:MessageSender is_general:Bool is_outgoing:Bool is_closed:Bool is_hidden:Bool = ForumTopicInfo; //@description Describes a forum topic //@info Basic information about the topic -//@last_message Last message in the topic; may be null +//@last_message Last message in the topic; may be null if unknown //@is_pinned True, if the topic is pinned in the topic list //@unread_count Number of unread messages in the topic //@last_read_inbox_message_id Identifier of the last read incoming message @@ -1338,6 +1345,14 @@ forumTopicInfo message_thread_id:int53 name:string icon:forumTopicIcon creation_ //@draft_message A draft of a message in the topic; may be null 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 +//@total_count Approximate total number of forum topics found +//@topics List of forum topics +//@next_offset_date Offset date for the next getForumTopics request +//@next_offset_message_id Offset message identifier for the next getForumTopics request +//@next_offset_message_thread_id Offset message thread identifier for the next getForumTopics request +forumTopics total_count:int32 topics:vector next_offset_date:int32 next_offset_message_id:int53 next_offset_message_thread_id:int53 = ForumTopics; + //@class RichText @description Describes a text object inside an instant-view web page @@ -2097,8 +2112,8 @@ messageScreenshotTaken = MessageContent; //@description A theme in the chat has been changed @theme_name If non-empty, name of a new theme, set for the chat. Otherwise chat theme was reset to the default one messageChatSetTheme theme_name:string = MessageContent; -//@description The TTL (Time To Live) setting for messages in the chat has been changed @ttl New message TTL -messageChatSetTtl ttl:int32 = MessageContent; +//@description The TTL (Time To Live) setting for messages in the chat has been changed @ttl New message TTL @from_user_id If not 0, a user identifier, which default setting was automatically applied +messageChatSetTtl ttl:int32 from_user_id:int53 = MessageContent; //@description A forum topic has been created @name Name of the topic @icon Icon of the topic messageForumTopicCreated name:string icon:forumTopicIcon = MessageContent; @@ -2106,9 +2121,12 @@ messageForumTopicCreated name:string icon:forumTopicIcon = MessageContent; //@description A forum topic has been edited @name If non-empty, the new name of the topic @edit_icon_custom_emoji_id True, if icon's custom_emoji_id is changed @icon_custom_emoji_id New unique identifier of the custom emoji shown on the topic icon; 0 if none. Must be ignored if edit_icon_custom_emoji_id is false messageForumTopicEdited name:string edit_icon_custom_emoji_id:Bool icon_custom_emoji_id:int64 = MessageContent; -//@description A forum topic has been closed or opened @is_closed True if the topic was closed or reopened +//@description A forum topic has been closed or opened @is_closed True, if the topic was closed, otherwise the topic was reopened messageForumTopicIsClosedToggled is_closed:Bool = MessageContent; +//@description A General forum topic has been hidden or unhidden @is_hidden True, if the topic was hidden, otherwise the topic was unhidden +messageForumTopicIsHiddenToggled is_hidden:Bool = MessageContent; + //@description A non-standard action has happened in the chat @text Message text to be shown in the chat messageCustomServiceAction text:string = MessageContent; @@ -2251,22 +2269,22 @@ messageCopyOptions send_copy:Bool replace_caption:Bool new_caption:formattedText //@class InputMessageContent @description The content of a message to send -//@description A text message @text Formatted text to be sent; 1-GetOption("message_text_length_max") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, Code, Pre, PreCode, TextUrl and MentionName entities are allowed to be specified manually +//@description A text message @text Formatted text to be sent; 1-getOption("message_text_length_max") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, Code, Pre, PreCode, TextUrl and MentionName entities are allowed to be specified manually //@disable_web_page_preview True, if rich web page previews for URLs in the message text must be disabled @clear_draft True, if a chat message draft must be deleted inputMessageText text:formattedText disable_web_page_preview:Bool clear_draft:Bool = InputMessageContent; //@description An animation message (GIF-style). @animation Animation file to be sent @thumbnail Animation thumbnail; pass null to skip thumbnail uploading @added_sticker_file_ids File identifiers of the stickers added to the animation, if applicable -//@duration Duration of the animation, in seconds @width Width of the animation; may be replaced by the server @height Height of the animation; may be replaced by the server @caption Animation caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters +//@duration Duration of the animation, in seconds @width Width of the animation; may be replaced by the server @height Height of the animation; may be replaced by the server @caption Animation caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters inputMessageAnimation animation:InputFile thumbnail:inputThumbnail added_sticker_file_ids:vector duration:int32 width:int32 height:int32 caption:formattedText = InputMessageContent; //@description An audio message @audio Audio file to be sent @album_cover_thumbnail Thumbnail of the cover for the album; pass null to skip thumbnail uploading @duration Duration of the audio, in seconds; may be replaced by the server @title Title of the audio; 0-64 characters; may be replaced by the server -//@performer Performer of the audio; 0-64 characters, may be replaced by the server @caption Audio caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters +//@performer Performer of the audio; 0-64 characters, may be replaced by the server @caption Audio caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters inputMessageAudio audio:InputFile album_cover_thumbnail:inputThumbnail duration:int32 title:string performer:string caption:formattedText = InputMessageContent; -//@description A document message (general file) @document Document to be sent @thumbnail Document thumbnail; pass null to skip thumbnail uploading @disable_content_type_detection If true, automatic file type detection will be disabled and the document will always be sent as file. Always true for files sent to secret chats @caption Document caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters +//@description A document message (general file) @document Document to be sent @thumbnail Document thumbnail; pass null to skip thumbnail uploading @disable_content_type_detection If true, automatic file type detection will be disabled and the document will always be sent as file. Always true for files sent to secret chats @caption Document caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters inputMessageDocument document:InputFile thumbnail:inputThumbnail disable_content_type_detection:Bool caption:formattedText = InputMessageContent; -//@description A photo message @photo Photo to send. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20 @thumbnail Photo thumbnail to be sent; pass null to skip thumbnail uploading. The thumbnail is sent to the other party only in secret chats @added_sticker_file_ids File identifiers of the stickers added to the photo, if applicable @width Photo width @height Photo height @caption Photo caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters +//@description A photo message @photo Photo to send. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20 @thumbnail Photo thumbnail to be sent; pass null to skip thumbnail uploading. The thumbnail is sent to the other party only in secret chats @added_sticker_file_ids File identifiers of the stickers added to the photo, if applicable @width Photo width @height Photo height @caption Photo caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters //@ttl Photo TTL (Time To Live), in seconds (0-60). A non-zero TTL can be specified only in private chats inputMessagePhoto photo:InputFile thumbnail:inputThumbnail added_sticker_file_ids:vector width:int32 height:int32 caption:formattedText ttl:int32 = InputMessageContent; @@ -2275,13 +2293,13 @@ inputMessageSticker sticker:InputFile thumbnail:inputThumbnail width:int32 heigh //@description A video message @video Video to be sent @thumbnail Video thumbnail; pass null to skip thumbnail uploading @added_sticker_file_ids File identifiers of the stickers added to the video, if applicable //@duration Duration of the video, in seconds @width Video width @height Video height @supports_streaming True, if the video is supposed to be streamed -//@caption Video caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters @ttl Video TTL (Time To Live), in seconds (0-60). A non-zero TTL can be specified only in private chats +//@caption Video caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters @ttl Video TTL (Time To Live), in seconds (0-60). A non-zero TTL can be specified only in private chats inputMessageVideo video:InputFile thumbnail:inputThumbnail added_sticker_file_ids:vector duration:int32 width:int32 height:int32 supports_streaming:Bool caption:formattedText ttl:int32 = InputMessageContent; //@description A video note message @video_note Video note to be sent @thumbnail Video thumbnail; pass null to skip thumbnail uploading @duration Duration of the video, in seconds @length Video width and height; must be positive and not greater than 640 inputMessageVideoNote video_note:InputFile thumbnail:inputThumbnail duration:int32 length:int32 = InputMessageContent; -//@description A voice note message @voice_note Voice note to be sent @duration Duration of the voice note, in seconds @waveform Waveform representation of the voice note in 5-bit format @caption Voice note caption; pass null to use an empty caption; 0-GetOption("message_caption_length_max") characters +//@description A voice note message @voice_note Voice note to be sent @duration Duration of the voice note, in seconds @waveform Waveform representation of the voice note in 5-bit format @caption Voice note caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters inputMessageVoiceNote voice_note:InputFile duration:int32 waveform:bytes caption:formattedText = InputMessageContent; //@description A message with a location @location Location to be sent @live_period Period for which the location can be updated, in seconds; must be between 60 and 86400 for a live location and 0 otherwise @@ -2597,7 +2615,7 @@ groupCall id:int32 title:string scheduled_start_date:int32 enabled_start_notific groupCallVideoSourceGroup semantics:string source_ids:vector = GroupCallVideoSourceGroup; //@description Contains information about a group call participant's video channel @source_groups List of synchronization source groups of the video @endpoint_id Video channel endpoint identifier -//@is_paused True if the video is paused. This flag needs to be ignored, if new video frames are received +//@is_paused True, if the video is paused. This flag needs to be ignored, if new video frames are received groupCallParticipantVideoInfo source_groups:vector endpoint_id:string is_paused:Bool = GroupCallParticipantVideoInfo; //@description Represents a group call participant @@ -2713,7 +2731,7 @@ diceStickersRegular sticker:sticker = DiceStickers; diceStickersSlotMachine background:sticker lever:sticker left_reel:sticker center_reel:sticker right_reel:sticker = DiceStickers; -//@description Represents the result of an ImportContacts request @user_ids User identifiers of the imported contacts in the same order as they were specified in the request; 0 if the contact is not yet a registered user +//@description Represents the result of an importContacts request @user_ids User identifiers of the imported contacts in the same order as they were specified in the request; 0 if the contact is not yet a registered user //@importer_count The number of users that imported the corresponding contact; 0 for already registered users or if unavailable importedContacts user_ids:vector importer_count:vector = ImportedContacts; @@ -2760,6 +2778,10 @@ sentWebAppMessage inline_message_id:string = SentWebAppMessage; httpUrl url:string = HttpUrl; +//@description Contains an HTTPS URL, which can be used to get information about a user @url The URL @expires_in Left time for which the link is valid, in seconds; 0 if the link is a public username link +userLink url:string expires_in:int32 = UserLink; + + //@class InputInlineQueryResult @description Represents a single result of an inline query; for bots only //@description Represents a link to an animated GIF or an animated (i.e., without sound) H.264/MPEG-4 AVC video @@ -2912,8 +2934,8 @@ gameHighScores scores:vector = GameHighScores; //@description A message was edited @old_message The original message before the edit @new_message The message after it was edited chatEventMessageEdited old_message:message new_message:message = ChatEventAction; -//@description A message was deleted @message Deleted message -chatEventMessageDeleted message:message = ChatEventAction; +//@description A message was deleted @message Deleted message @can_report_anti_spam_false_positive True, if the message deletion can be reported via reportSupergroupAntiSpamFalsePositive +chatEventMessageDeleted message:message can_report_anti_spam_false_positive:Bool = ChatEventAction; //@description A message was pinned @message Pinned message chatEventMessagePinned message:message = ChatEventAction; @@ -2990,6 +3012,9 @@ chatEventInvitesToggled can_invite_users:Bool = ChatEventAction; //@description The is_all_history_available setting of a supergroup was toggled @is_all_history_available New value of is_all_history_available chatEventIsAllHistoryAvailableToggled is_all_history_available:Bool = ChatEventAction; +//@description The is_aggressive_anti_spam_enabled setting of a supergroup was toggled @is_aggressive_anti_spam_enabled New value of is_aggressive_anti_spam_enabled +chatEventIsAggressiveAntiSpamEnabledToggled is_aggressive_anti_spam_enabled:Bool = ChatEventAction; + //@description The sign_messages setting of a channel was toggled @sign_messages New value of sign_messages chatEventSignMessagesToggled sign_messages:Bool = ChatEventAction; @@ -3029,6 +3054,9 @@ chatEventForumTopicEdited old_topic_info:forumTopicInfo new_topic_info:forumTopi //@description A forum topic was closed or reopened @topic_info New information about the topic chatEventForumTopicToggleIsClosed topic_info:forumTopicInfo = ChatEventAction; +//@description The General forum topic was hidden or unhidden @topic_info New information about the topic +chatEventForumTopicToggleIsHidden topic_info:forumTopicInfo = ChatEventAction; + //@description A forum topic was deleted @topic_info Information about the topic chatEventForumTopicDeleted topic_info:forumTopicInfo = ChatEventAction; @@ -3353,8 +3381,11 @@ checkChatUsernameResultUsernameInvalid = CheckChatUsernameResult; //@description The username is occupied checkChatUsernameResultUsernameOccupied = CheckChatUsernameResult; +//@description The username can be purchased at fragment.com +checkChatUsernameResultUsernamePurchasable = CheckChatUsernameResult; + //@description The user has too many chats with username, one of them must be made private first -checkChatUsernameResultPublicChatsTooMuch = CheckChatUsernameResult; +checkChatUsernameResultPublicChatsTooMany = CheckChatUsernameResult; //@description The user can't be a member of a public supergroup checkChatUsernameResultPublicGroupsUnavailable = CheckChatUsernameResult; @@ -3649,6 +3680,10 @@ userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages = UserPrivacySetting; accountTtl days:int32 = AccountTtl; +//@description Contains default message Time To Live setting (self-destruct timer) for new chats @ttl Message TTL setting, in seconds. If 0, then messages aren't deleted automatically +messageTtl ttl:int32 = MessageTtl; + + //@class SessionType @description Represents the type of a session //@description The session is running on an Android device @@ -3850,7 +3885,7 @@ internalLinkTypeLanguagePack language_pack_id:string = InternalLinkType; //@description The link is a link to the language settings section of the app internalLinkTypeLanguageSettings = InternalLinkType; -//@description The link is a link to a Telegram message. Call getMessageLinkInfo with the given URL to process the link @url URL to be passed to getMessageLinkInfo +//@description The link is a link to a Telegram message or a forum topic. Call getMessageLinkInfo with the given URL to process the link @url URL to be passed to getMessageLinkInfo internalLinkTypeMessage url:string = InternalLinkType; //@description The link contains a message draft text. A share screen needs to be shown to the user, then the chosen chat must be opened and the text is added to the input field @@ -3907,6 +3942,9 @@ internalLinkTypeUnsupportedProxy = InternalLinkType; //@description The link is a link to a user by its phone number. Call searchUserByPhoneNumber with the given phone number to process the link @phone_number Phone number of the user internalLinkTypeUserPhoneNumber phone_number:string = InternalLinkType; +//@description The link is a link to a user by a temporary token. Call searchUserByToken with the given token to process the link @token The token +internalLinkTypeUserToken token:string = InternalLinkType; + //@description The link is a link to a video chat. Call searchPublicChat with the given chat username, and then joinGroupCall with the given invite hash to process the link //@chat_username Username of the chat with the video chat @invite_hash If non-empty, invite hash to be used to join the video chat without being muted by administrators //@is_live_stream True, if the video chat is expected to be a live stream in a channel or a broadcast group @@ -3916,10 +3954,10 @@ internalLinkTypeVideoChat chat_username:string invite_hash:string is_live_stream //@description Contains an HTTPS link to a message in a supergroup or channel @link Message link @is_public True, if the link will work for non-members of the chat messageLink link:string is_public:Bool = MessageLink; -//@description Contains information about a link to a message in a chat +//@description Contains information about a link to a message or a forum topic in a chat //@is_public True, if the link is a public link for a message in a chat //@chat_id If found, identifier of the chat to which the message belongs, 0 otherwise -//@message_thread_id If found, identifier of the message thread in which to open the message, or which to open in case of a missing message +//@message_thread_id If found, identifier of the message thread in which to open the message, or a forum topic to open if the message is missing //@message If found, the linked message; may be null //@media_timestamp Timestamp from which the video/audio/video note/voice note playing must start, in seconds; 0 if not specified. The media can be in the message content or in its web page preview //@for_album True, if the whole media album to which the message belongs is linked @@ -4158,7 +4196,7 @@ fileDownloadedPrefixSize size:int53 = FileDownloadedPrefixSize; deepLinkInfo text:formattedText need_update_application:Bool = DeepLinkInfo; -//@class TextParseMode @description Describes the way the text needs to be parsed for TextEntities +//@class TextParseMode @description Describes the way the text needs to be parsed for text entities //@description The text uses Markdown-style formatting //@version Version of the parser: 0 or 1 - Telegram Bot API "Markdown" parse mode, 2 - Telegram Bot API "MarkdownV2" parse mode @@ -4630,7 +4668,7 @@ updateDiceEmojis emojis:vector = Update; //@chat_id Chat identifier @message_id Message identifier @sticker The animated sticker to be played updateAnimatedEmojiMessageClicked chat_id:int53 message_id:int53 sticker:sticker = Update; -//@description The parameters of animation search through GetOption("animation_search_bot_username") bot has changed @provider Name of the animation search provider @emojis The new list of emojis suggested for searching +//@description The parameters of animation search through getOption("animation_search_bot_username") bot has changed @provider Name of the animation search provider @emojis The new list of emojis suggested for searching updateAnimationSearchParameters provider:string emojis:vector = Update; //@description The list of suggested to the user actions has changed @added_actions Added suggested actions @removed_actions Removed suggested actions @@ -4807,7 +4845,7 @@ destroy = Ok; confirmQrCodeAuthentication link:string = Session; -//@description Returns all updates needed to restore current TDLib state, i.e. all actual UpdateAuthorizationState/UpdateUser/UpdateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization +//@description Returns all updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization getCurrentState = Updates; @@ -4900,7 +4938,7 @@ getMessage chat_id:int53 message_id:int53 = Message; //@description Returns information about a message, if it is available without sending network request. This is an offline request @chat_id Identifier of the chat the message belongs to @message_id Identifier of the message to get getMessageLocally chat_id:int53 message_id:int53 = Message; -//@description Returns information about a message that is replied by a given message. Also returns the pinned message, the game message, and the invoice message for messages of the types messagePinMessage, messageGameScore, and messagePaymentSuccessful respectively +//@description Returns information about a message that is replied by a given message. Also returns the pinned message, the game message, the invoice message, and the topic creation message for messages of the types messagePinMessage, messageGameScore, messagePaymentSuccessful, and topic messages without replied message respectively //@chat_id Identifier of the chat the message belongs to @message_id Identifier of the reply message getRepliedMessage chat_id:int53 message_id:int53 = Message; @@ -5184,7 +5222,7 @@ sendBotStartMessage bot_user_id:int53 chat_id:int53 parameter:string = Message; //@options Options to be used to send the message; pass null to use default options //@query_id Identifier of the inline query //@result_id Identifier of the inline 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_message_id:int53 options:messageSendOptions query_id:int64 result_id:string hide_via_bot:Bool = Message; //@description Forwards previously sent messages. Returns the forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message @@ -5253,7 +5291,7 @@ editMessageMedia chat_id:int53 message_id:int53 reply_markup:ReplyMarkup input_m //@chat_id The chat the message belongs to //@message_id Identifier of the message //@reply_markup The new message reply markup; pass null if none; for bots only -//@caption New message content caption; 0-GetOption("message_caption_length_max") characters; pass null to remove caption +//@caption New message content caption; 0-getOption("message_caption_length_max") characters; pass null to remove caption editMessageCaption chat_id:int53 message_id:int53 reply_markup:ReplyMarkup caption:formattedText = Message; //@description Edits the message reply markup; for bots only. Returns the edited message after the edit is completed on the server side @@ -5285,7 +5323,7 @@ editInlineMessageMedia inline_message_id:string reply_markup:ReplyMarkup input_m //@description Edits the caption of an inline message sent via a bot; for bots only //@inline_message_id Inline message identifier //@reply_markup The new message reply markup; pass null if none -//@caption New message content caption; pass null to remove caption; 0-GetOption("message_caption_length_max") characters +//@caption New message content caption; pass null to remove caption; 0-getOption("message_caption_length_max") characters editInlineMessageCaption inline_message_id:string reply_markup:ReplyMarkup caption:formattedText = Ok; //@description Edits the reply markup of an inline message sent via a bot; for bots only @@ -5312,9 +5350,29 @@ createForumTopic chat_id:int53 name:string icon:forumTopicIcon = ForumTopicInfo; //@description Edits title and icon of a topic in a forum supergroup chat; requires can_manage_topics administrator rights in the supergroup unless the user is creator of the topic //@chat_id Identifier of the chat //@message_thread_id Message thread identifier of the forum topic -//@name New name of the topic; 1-128 characters -//@icon_custom_emoji_id Identifier of the new custom emoji for topic icon. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons -editForumTopic chat_id:int53 message_thread_id:int53 name:string icon_custom_emoji_id:int64 = Ok; +//@name New name of the topic; 0-128 characters. If empty, the previous topic name is kept +//@edit_icon_custom_emoji Pass true to edit the icon of the topic. Icon of the General topic can't be edited +//@icon_custom_emoji_id Identifier of the new custom emoji for topic icon; pass 0 to remove the custom emoji. Ignored if edit_icon_custom_emoji is false. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons +editForumTopic chat_id:int53 message_thread_id:int53 name:string edit_icon_custom_emoji:Bool icon_custom_emoji_id:int64 = Ok; + +//@description Returns information about a forum topic @chat_id Identifier of the chat @message_thread_id Message thread identifier of the forum topic +getForumTopic chat_id:int53 message_thread_id:int53 = ForumTopic; + +//@description Returns an HTTPS link to a topic in a forum chat. This is an offline request @chat_id Identifier of the chat @message_thread_id Message thread identifier of the forum topic +getForumTopicLink chat_id:int53 message_thread_id:int53 = HttpUrl; + +//@description Returns found forum topics in a forum chat. This is a temporary method for getting information about topic list from the server +//@chat_id Identifier of the forum chat +//@query Query to search for in the forum topic's name +//@offset_date The date starting from which the results need to be fetched. Use 0 or any date in the future to get results from the last topic +//@offset_message_id The message identifier of the last message in the last found topic, or 0 for the first request +//@offset_message_thread_id The message thread identifier of the last found topic, or 0 for the first request +//@limit The maximum number of forum topics to be returned; up to 100. For optimal performance, the number of returned forum topics is chosen by TDLib and can be smaller than the specified limit +getForumTopics chat_id:int53 query:string offset_date:int32 offset_message_id:int53 offset_message_thread_id:int53 limit:int32 = ForumTopics; + +//@description Changes the notification settings of a forum topic +//@chat_id Chat identifier @message_thread_id Message thread identifier of the forum topic @notification_settings New notification settings for the forum topic. If the topic is muted for more than 366 days, it is considered to be muted forever +setForumTopicNotificationSettings chat_id:int53 message_thread_id:int53 notification_settings:chatNotificationSettings = Ok; //@description Toggles whether a topic is closed in a forum supergroup chat; requires can_manage_topics administrator rights in the supergroup unless the user is creator of the topic //@chat_id Identifier of the chat @@ -5322,6 +5380,11 @@ editForumTopic chat_id:int53 message_thread_id:int53 name:string icon_custom_emo //@is_closed Pass true to close the topic; pass false to reopen it toggleForumTopicIsClosed chat_id:int53 message_thread_id:int53 is_closed:Bool = Ok; +//@description Toggles whether a General topic is hidden in a forum supergroup chat; requires can_manage_topics administrator rights in the supergroup +//@chat_id Identifier of the chat +//@is_hidden Pass true to hide and close the General topic; pass false to unhide it +toggleGeneralForumTopicIsHidden chat_id:int53 is_hidden:Bool = Ok; + //@description Deletes all messages in a forum topic; requires can_delete_messages administrator rights in the supergroup unless the user is creator of the topic, the topic has no messages from other users and has at most 11 messages //@chat_id Identifier of the chat //@message_thread_id Message thread identifier of the forum topic @@ -5521,7 +5584,7 @@ getGameHighScores chat_id:int53 message_id:int53 user_id:int53 = GameHighScores; getInlineGameHighScores inline_message_id:string user_id:int53 = GameHighScores; -//@description Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a ForceReply reply markup has been used. UpdateChatReplyMarkup will be sent if the reply markup is changed +//@description Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a replyMarkupForceReply reply markup has been used. An updateChatReplyMarkup update will be sent if the reply markup is changed //@chat_id Chat identifier //@message_id The message identifier of the used keyboard deleteChatReplyMarkup chat_id:int53 message_id:int53 = Ok; @@ -5586,16 +5649,20 @@ createSupergroupChat supergroup_id:int53 force:Bool = Chat; //@description Returns an existing chat corresponding to a known secret chat @secret_chat_id Secret chat identifier createSecretChat secret_chat_id:int32 = Chat; -//@description Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns the newly created chat @user_ids Identifiers of users to be added to the basic group @title Title of the new basic group; 1-128 characters -createNewBasicGroupChat user_ids:vector title:string = Chat; +//@description Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns the newly created chat +//@user_ids Identifiers of users to be added to the basic group +//@title Title of the new basic group; 1-128 characters +//@message_ttl Message TTL value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically +createNewBasicGroupChat user_ids:vector title:string message_ttl:int32 = Chat; //@description Creates a new supergroup or channel and sends a corresponding messageSupergroupChatCreate. Returns the newly created chat //@title Title of the new chat; 1-128 characters //@is_channel Pass true to create a channel chat //@param_description Chat description; 0-255 characters //@location Chat location if a location-based supergroup is being created; pass null to create an ordinary supergroup chat +//@message_ttl Message TTL value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically //@for_import Pass true to create a supergroup for importing messages using importMessage -createNewSupergroupChat title:string is_channel:Bool description:string location:chatLocation for_import:Bool = Chat; +createNewSupergroupChat title:string is_channel:Bool description:string location:chatLocation message_ttl:int32 for_import:Bool = Chat; //@description Creates a new secret chat. Returns the newly created chat @user_id Identifier of the target user createNewSecretChat user_id:int53 = Chat; @@ -5614,7 +5681,7 @@ addChatToList chat_id:int53 chat_list:ChatList = Ok; //@description Returns information about a chat filter by its identifier @chat_filter_id Chat filter identifier getChatFilter chat_filter_id:int32 = ChatFilter; -//@description Creates new chat filter. Returns information about the created chat filter. There can be up to GetOption("chat_filter_count_max") chat filters, but the limit can be increased with Telegram Premium @filter Chat filter +//@description Creates new chat filter. Returns information about the created chat filter. There can be up to getOption("chat_filter_count_max") chat filters, but the limit can be increased with Telegram Premium @filter Chat filter createChatFilter filter:chatFilter = ChatFilterInfo; //@description Edits existing chat filter. Returns information about the edited chat filter @chat_filter_id Chat filter identifier @filter The edited chat filter @@ -5641,9 +5708,9 @@ setChatTitle chat_id:int53 title:string = Ok; //@chat_id Chat identifier @photo New chat photo; pass null to delete the chat photo setChatPhoto chat_id:int53 photo:InputChatPhoto = Ok; -//@description Changes the message TTL in a chat. Requires can_delete_messages administrator right in basic groups, supergroups and channels +//@description Changes the message TTL in a chat. Requires change_info administrator right in basic groups, supergroups and channels //-Message TTL can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram). -//@chat_id Chat identifier @ttl New TTL value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400 +//@chat_id Chat identifier @ttl New TTL value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically setChatMessageTtl chat_id:int53 ttl:int32 = Ok; //@description Changes the chat members permissions. Supported only for basic groups and supergroups. Requires can_restrict_members administrator right @@ -5785,7 +5852,7 @@ setScopeNotificationSettings scope:NotificationSettingsScope notification_settin resetAllNotificationSettings = Ok; -//@description Changes the pinned state of a chat. There can be up to GetOption("pinned_chat_count_max")/GetOption("pinned_archived_chat_count_max") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium +//@description Changes the pinned state of a chat. There can be up to getOption("pinned_chat_count_max")/getOption("pinned_archived_chat_count_max") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium //@chat_list Chat list in which to change the pinned state of the chat @chat_id Chat identifier @is_pinned Pass true to pin the chat; pass false to unpin it toggleChatIsPinned chat_list:ChatList chat_id:int53 is_pinned:Bool = Ok; @@ -6057,7 +6124,7 @@ joinGroupCall group_call_id:int32 participant_id:MessageSender audio_source_id:i //@payload Group call join payload; received from tgcalls startGroupCallScreenSharing group_call_id:int32 audio_source_id:int32 payload:string = Text; -//@description Pauses or unpauses screen sharing in a joined group call @group_call_id Group call identifier @is_paused True if screen sharing is paused +//@description Pauses or unpauses screen sharing in a joined group call @group_call_id Group call identifier @is_paused True, if screen sharing is paused toggleGroupCallScreenSharingIsPaused group_call_id:int32 is_paused:Bool = Ok; //@description Ends screen sharing in a joined group call @group_call_id Group call identifier @@ -6313,7 +6380,7 @@ deleteProfilePhoto profile_photo_id:int64 = Ok; //@description Changes the first and last name of the current user @first_name The new value of the first name for the current user; 1-64 characters @last_name The new value of the optional last name for the current user; 0-64 characters setName first_name:string last_name:string = Ok; -//@description Changes the bio of the current user @bio The new value of the user bio; 0-GetOption("bio_length_max") characters without line feeds +//@description Changes the bio of the current user @bio The new value of the user bio; 0-getOption("bio_length_max") characters without line feeds setBio bio:string = Ok; //@description Changes the editable username of the current user @username The new value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username @@ -6330,7 +6397,7 @@ reorderActiveUsernames usernames:vector = Ok; //@duration Duration of the status, in seconds; pass 0 to keep the status active until it will be changed manually setEmojiStatus emoji_status:emojiStatus duration:int32 = Ok; -//@description Changes the location of the current user. Needs to be called if GetOption("is_location_visible") is true and location changes for more than 1 kilometer @location The new location of the user +//@description Changes the location of the current user. Needs to be called if getOption("is_location_visible") is true and location changes for more than 1 kilometer @location The new location of the user setLocation location:location = Ok; //@description Changes the phone number of the user and sends an authentication code to the user's new phone number. On success, returns information about the sent code @@ -6344,6 +6411,13 @@ resendChangePhoneNumberCode = AuthenticationCodeInfo; checkChangePhoneNumberCode code:string = Ok; +//@description Returns an HTTPS link, which can be used to get information about the current user +getUserLink = UserLink; + +//@description Searches a user by a token from the user's link @token Token to search for +searchUserByToken token:string = User; + + //@description Sets the list of commands supported by the bot for the given user scope and language; for bots only //@scope The scope to which the commands are relevant; pass null to change commands in the default bot command scope //@language_code A two-letter ISO 639-1 language code. If empty, the commands will be applied to all users from the given scope, for which language there are no dedicated commands @@ -6431,7 +6505,10 @@ toggleSupergroupJoinByRequest supergroup_id:int53 join_by_request:Bool = Ok; //@description Toggles whether the message history of a supergroup is available to new members; requires can_change_info administrator right @supergroup_id The identifier of the supergroup @is_all_history_available The new value of is_all_history_available toggleSupergroupIsAllHistoryAvailable supergroup_id:int53 is_all_history_available:Bool = Ok; -//@description Toggles whether the supergroup is a forum; requires owner privileges in the supergroup @supergroup_id Identifier of the supergroup @is_forum New value of is_forum. A supergroup can be converted to a forum, only if it has at least GetOption("forum_member_count_min") members +//@description Toggles whether aggressive anti-spam checks are enabled in the supergroup; requires can_delete_messages administrator right. Can be called only if the supergroup has at least getOption("aggressive_anti_spam_supergroup_member_count_min") members @supergroup_id The identifier of the supergroup, which isn't a broadcast group @is_aggressive_anti_spam_enabled The new value of is_aggressive_anti_spam_enabled +toggleSupergroupIsAggressiveAntiSpamEnabled supergroup_id:int53 is_aggressive_anti_spam_enabled:Bool = Ok; + +//@description Toggles whether the supergroup is a forum; requires owner privileges in the supergroup @supergroup_id Identifier of the supergroup @is_forum New value of is_forum. A supergroup can be converted to a forum, only if it has at least getOption("forum_member_count_min") members toggleSupergroupIsForum supergroup_id:int53 is_forum:Bool = Ok; //@description Upgrades supergroup to a broadcast group; requires owner privileges in the supergroup @supergroup_id Identifier of the supergroup @@ -6440,6 +6517,9 @@ toggleSupergroupIsBroadcastGroup supergroup_id:int53 = Ok; //@description Reports messages in a supergroup as spam; requires administrator rights in the supergroup @supergroup_id Supergroup identifier @message_ids Identifiers of messages to report reportSupergroupSpam supergroup_id:int53 message_ids:vector = Ok; +//@description Reports a false deletion of a message by aggressive anti-spam checks; requires administrator rights in the supergroup. Can be called only for messages from chatEventMessageDeleted with can_report_anti_spam_false_positive == true @supergroup_id Supergroup identifier @message_id Identifier of the erroneously deleted message +reportSupergroupAntiSpamFalsePositive supergroup_id:int53 message_id:int53 = Ok; + //@description Returns information about members or banned users in a supergroup or channel. Can be used only if supergroupFullInfo.can_get_members == true; additionally, administrator privileges may be required for some filters @supergroup_id Identifier of the supergroup or channel //@filter The type of users to return; pass null to use supergroupMembersFilterRecent @offset Number of users to skip @limit The maximum number of users be returned; up to 200 getSupergroupMembers supergroup_id:int53 filter:SupergroupMembersFilter offset:int32 limit:int32 = ChatMembers; @@ -6471,7 +6551,7 @@ validateOrderInfo input_invoice:InputInvoice order_info:orderInfo allow_save:Boo //@credentials The credentials chosen by user for payment @tip_amount Chosen by the user amount of tip in the smallest units of the currency sendPaymentForm input_invoice:InputInvoice payment_form_id:int64 order_info_id:string shipping_option_id:string credentials:InputCredentials tip_amount:int53 = PaymentResult; -//@description Returns information about a successful payment @chat_id Chat identifier of the PaymentSuccessful message @message_id Message identifier +//@description Returns information about a successful payment @chat_id Chat identifier of the messagePaymentSuccessful message @message_id Message identifier getPaymentReceipt chat_id:int53 message_id:int53 = PaymentReceipt; //@description Returns saved order information. Returns a 404 error if there is no saved order information @@ -6583,6 +6663,13 @@ getAccountTtl = AccountTtl; deleteAccount reason:string password:string = Ok; +//@description Changes the default message Time To Live setting (self-destruct timer) for new chats @ttl New message TTL; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically +setDefaultMessageTtl ttl:messageTtl = Ok; + +//@description Returns default message Time To Live setting (self-destruct timer) for new chats +getDefaultMessageTtl = MessageTtl; + + //@description Removes a chat action bar without any other action @chat_id Chat identifier removeChatActionBar chat_id:int53 = Ok;