diff --git a/README.md b/README.md
index 1adc03d4..5228deea 100644
--- a/README.md
+++ b/README.md
@@ -94,7 +94,7 @@ If you'd like to support Gogram, you can consider:
up-to-date: 🔄 gogram is always in sync with the latest telegram api changes and additions (tl-parser
is used to generate the api layer).
-#### Current Layer - **196** (Updated on 2024-12-28)
+#### Current Layer - **195** (Updated on 2024-12-28)
## doing stuff
diff --git a/schemes/api.tl b/schemes/api.tl
index 88fb6af0..6b6835a7 100644
--- a/schemes/api.tl
+++ b/schemes/api.tl
@@ -92,7 +92,7 @@ storage.fileMp4#b3cea0e4 = storage.FileType;
storage.fileWebp#1081464c = storage.FileType;
userEmpty#d3bc4b7a id:long = User;
-user#4b46c37e flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true bot_has_main_app:flags2.13?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?RestrictionReason bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Username stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor bot_active_users:flags2.12?int bot_verification_icon:flags2.14?long = User;
+user#83314fca flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true bot_has_main_app:flags2.13?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor bot_active_users:flags2.12?int = User;
userProfilePhotoEmpty#4f11bae1 = UserProfilePhoto;
userProfilePhoto#82d1f706 flags:# has_video:flags.0?true personal:flags.2?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = UserProfilePhoto;
@@ -108,11 +108,11 @@ userStatusHidden#cf7d64b1 = UserStatus;
chatEmpty#29562865 id:long = Chat;
chat#41cbf256 flags:# creator:flags.0?true kicked:flags.1?true left:flags.2?true deactivated:flags.5?true call_active:flags.23?true call_not_empty:flags.24?true noforwards:flags.25?true id:long title:string photo:ChatPhoto participants_count:int date:int version:int migrated_to:flags.6?InputChannel admin_rights:flags.14?ChatAdminRights default_banned_rights:flags.18?ChatBannedRights = Chat;
chatForbidden#6592a1a7 id:long title:string = Chat;
-channel#e00998b7 flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?RestrictionReason admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Username stories_max_id:flags2.4?int color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int bot_verification_icon:flags2.13?long = Chat;
+channel#fe4478bd flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector stories_max_id:flags2.4?int color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int = Chat;
channelForbidden#17d493d5 flags:# broadcast:flags.5?true megagroup:flags.8?true id:long access_hash:long title:string until_date:flags.16?int = Chat;
-chatFull#2633421b flags:# can_set_username:flags.7?true has_scheduled:flags.8?true translations_disabled:flags.19?true id:long about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:flags.13?ChatInviteExported bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer theme_emoticon:flags.16?string requests_pending:flags.17?int recent_requesters:flags.17?long available_reactions:flags.18?ChatReactions reactions_limit:flags.20?int = ChatFull;
-channelFull#9ff3b858 flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ChatInviteExported bot_info:BotInfo migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?string groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?long default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet bot_verification:flags2.17?BotVerification = ChatFull;
+chatFull#2633421b flags:# can_set_username:flags.7?true has_scheduled:flags.8?true translations_disabled:flags.19?true id:long about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:flags.13?ExportedChatInvite bot_info:flags.3?Vector pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer theme_emoticon:flags.16?string requests_pending:flags.17?int recent_requesters:flags.17?Vector available_reactions:flags.18?ChatReactions reactions_limit:flags.20?int = ChatFull;
+channelFull#bbab348d flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet = ChatFull;
chatParticipant#c02d4007 user_id:long inviter_id:long date:int = ChatParticipant;
chatParticipantCreator#e46bcee4 user_id:long = ChatParticipant;
@@ -125,8 +125,8 @@ chatPhotoEmpty#37c1011c = ChatPhoto;
chatPhoto#1c6e1c11 flags:# has_video:flags.0?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = ChatPhoto;
messageEmpty#90a6ca84 flags:# id:int peer_id:flags.0?Peer = Message;
-message#96fdbbe9 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?MessageEntity views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?RestrictionReason ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int = Message;
-messageService#d3d28540 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true reactions_are_possible:flags.9?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction reactions:flags.20?MessageReactions ttl_period:flags.25?int = Message;
+message#94345242 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck = Message;
+messageService#2b085862 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction ttl_period:flags.25?int = Message;
messageMediaEmpty#3ded6320 = MessageMedia;
messageMediaPhoto#695150d7 flags:# spoiler:flags.3?true photo:flags.0?Photo ttl_seconds:flags.2?int = MessageMedia;
@@ -192,9 +192,8 @@ messageActionRequestedPeerSentMe#93b31848 button_id:int peers:Vector wallpaper:flags.24?WallPaper stories:flags.25?PeerStories business_work_hours:flags2.0?BusinessWorkHours business_location:flags2.1?BusinessLocation business_greeting_message:flags2.2?BusinessGreetingMessage business_away_message:flags2.3?BusinessAwayMessage business_intro:flags2.4?BusinessIntro birthday:flags2.5?Birthday personal_channel_id:flags2.6?long personal_channel_message:flags2.6?int stargifts_count:flags2.8?int starref_program:flags2.11?StarRefProgram = UserFull;
contact#145ade0b user_id:long mutual:Bool = Contact;
@@ -310,7 +309,7 @@ updateChatUserTyping#83487af0 chat_id:long from_id:Peer action:SendMessageAction
updateChatParticipants#7761198 participants:ChatParticipants = Update;
updateUserStatus#e5bdf8de user_id:long status:UserStatus = Update;
updateUserName#a7848924 user_id:long first_name:string last_name:string usernames:Vector = Update;
-updateNewAuthorization#8951abef flags:# unconfirmed:flags.0?true date:flags.0?int device:flags.0?string location:flags.0?string = Update;
+updateNewAuthorization#8951abef flags:# unconfirmed:flags.0?true hash:long date:flags.0?int device:flags.0?string location:flags.0?string = Update;
updateNewEncryptedMessage#12bcbd9a message:EncryptedMessage qts:int = Update;
updateEncryptedChatTyping#1710f156 chat_id:int = Update;
updateEncryption#b4a2e88d chat:EncryptedChat date:int = Update;
@@ -443,7 +442,6 @@ updateBusinessBotCallbackQuery#1ea2fda7 flags:# query_id:long user_id:long conne
updateStarsRevenueStatus#a584b019 peer:Peer status:StarsRevenueStatus = Update;
updateBotPurchasedPaidMedia#283bd312 user_id:long payload:string qts:int = Update;
updatePaidReactionPrivacy#51ca7aec private:Bool = Update;
-updateStarGiftUpgraded#767cde44 gift:UserStarGift to_gift:UserStarGift = Update;
updateTranscribeAudio#88617090 flags:# final:flags.0?true transcription_id:long text:string = Update;
updateBotSubscriptionExpire#a8ae3eb1 user_id:long payload:string until_date:int qts:int = Update;
@@ -455,12 +453,12 @@ updates.differenceSlice#a8fb1981 new_messages:Vector new_encrypted_mess
updates.differenceTooLong#4afe8f6d pts:int = updates.Difference;
updatesTooLong#e317af7e = Updates;
-updateShortMessage#313bc7f8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true fwd_from:flags.2?MessageFwdHeader reply_to:flags.3?MessageReplyHeader via_bot_id:flags.11?long entities:flags.7?Vector ttl_period:flags.25?int = Updates;
-updateShortChatMessage#4d6deea5 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true fwd_from:flags.2?MessageFwdHeader reply_to:flags.3?MessageReplyHeader via_bot_id:flags.11?long entities:flags.7?Vector ttl_period:flags.25?int = Updates;
-updateShort#78d4dec1 update:Update = Updates;
-updatesCombined#725b04c3 = Updates;
-updates#74ae4240 = Updates;
-updateShortSentMessage#9015e101 flags:# out:flags.1?true media:flags.9?MessageMedia entities:flags.7?Vector ttl_period:flags.25?int = Updates;
+updateShortMessage#313bc7f8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int user_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector ttl_period:flags.25?int = Updates;
+updateShortChatMessage#4d6deea5 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int from_id:long chat_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector ttl_period:flags.25?int = Updates;
+updateShort#78d4dec1 update:Update date:int = Updates;
+updatesCombined#725b04c3 updates:Vector users:Vector chats:Vector date:int seq_start:int seq:int = Updates;
+updates#74ae4240 updates:Vector users:Vector chats:Vector date:int seq:int = Updates;
+updateShortSentMessage#9015e101 flags:# out:flags.1?true id:int pts:int pts_count:int date:int media:flags.9?MessageMedia entities:flags.7?Vector ttl_period:flags.25?int = Updates;
photos.photos#8dca6aa5 photos:Vector users:Vector = photos.Photos;
photos.photosSlice#15051f54 count:int photos:Vector users:Vector = photos.Photos;
@@ -640,7 +638,7 @@ chatInviteExported#a22cbd96 flags:# revoked:flags.0?true permanent:flags.5?true
chatInvitePublicJoinRequests#ed107ab7 = ExportedChatInvite;
chatInviteAlready#5a686d7c chat:Chat = ChatInvite;
-chatInvite#5c9d3702 flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true request_needed:flags.6?true verified:flags.7?true scam:flags.8?true fake:flags.9?true can_refulfill_subscription:flags.11?true title:string photo:Photo participants_count:int participants:flags.4?User color:int subscription_pricing:flags.10?StarsSubscriptionPricing subscription_form_id:flags.12?long bot_verification:flags.13?BotVerification = ChatInvite;
+chatInvite#fe65389d flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true request_needed:flags.6?true verified:flags.7?true scam:flags.8?true fake:flags.9?true can_refulfill_subscription:flags.11?true title:string about:flags.5?string photo:Photo participants_count:int participants:flags.4?Vector color:int subscription_pricing:flags.10?StarsSubscriptionPricing subscription_form_id:flags.12?long = ChatInvite;
chatInvitePeek#61695cb0 chat:Chat expires:int = ChatInvite;
inputStickerSetEmpty#ffb62b95 = InputStickerSet;
@@ -662,7 +660,7 @@ messages.stickerSetNotModified#d3f924eb = messages.StickerSet;
botCommand#c27ac8c7 command:string description:string = BotCommand;
-botInfo#4d8a0299 flags:# has_preview_medias:flags.6?true user_id:flags.0?long description:flags.1?string description_photo:flags.4?Photo description_document:flags.5?Document commands:flags.2?Vector menu_button:flags.3?BotMenuButton privacy_policy_url:flags.7?string app_settings:flags.8?BotAppSettings verifier_settings:flags.9?BotVerifierSettings = BotInfo;
+botInfo#36607333 flags:# has_preview_medias:flags.6?true user_id:flags.0?long description:flags.1?string description_photo:flags.4?Photo description_document:flags.5?Document commands:flags.2?Vector menu_button:flags.3?BotMenuButton privacy_policy_url:flags.7?string app_settings:flags.8?BotAppSettings = BotInfo;
keyboardButton#a2fa4880 text:string = KeyboardButton;
keyboardButtonUrl#258aff05 text:string url:string = KeyboardButton;
@@ -727,10 +725,10 @@ updates.channelDifference#2064674e flags:# final:flags.0?true pts:int timeout:fl
channelMessagesFilterEmpty#94d42ee7 = ChannelMessagesFilter;
channelMessagesFilter#cd77d957 flags:# exclude_new_messages:flags.1?true ranges:Vector = ChannelMessagesFilter;
-channelParticipant#cb397619 flags:# date:int subscription_until_date:flags.0?int = ChannelParticipant;
+channelParticipant#cb397619 flags:# user_id:long date:int subscription_until_date:flags.0?int = ChannelParticipant;
channelParticipantSelf#4f607bef flags:# via_request:flags.0?true user_id:long inviter_id:long date:int subscription_until_date:flags.1?int = ChannelParticipant;
-channelParticipantCreator#2fe601d3 flags:# admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant;
-channelParticipantAdmin#34c3bb53 flags:# can_edit:flags.0?true self:flags.1?true inviter_id:flags.1?long promoted_by:long date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant;
+channelParticipantCreator#2fe601d3 flags:# user_id:long admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant;
+channelParticipantAdmin#34c3bb53 flags:# can_edit:flags.0?true self:flags.1?true user_id:long inviter_id:flags.1?long promoted_by:long date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant;
channelParticipantBanned#6df8014e flags:# left:flags.0?true peer:Peer kicked_by:long date:int banned_rights:ChatBannedRights = ChannelParticipant;
channelParticipantLeft#1b03f006 peer:Peer = ChannelParticipant;
@@ -767,8 +765,8 @@ inputBotInlineResultPhoto#a8d864a7 id:string type:string photo:InputPhoto send_m
inputBotInlineResultDocument#fff8fdc4 flags:# id:string type:string title:flags.1?string description:flags.2?string document:InputDocument send_message:InputBotInlineMessage = InputBotInlineResult;
inputBotInlineResultGame#4fa417f2 id:string short_name:string send_message:InputBotInlineMessage = InputBotInlineResult;
-botInlineMessageMediaAuto#764cf810 flags:# invert_media:flags.3?true message:string entities:flags.1?MessageEntity reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
-botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true invert_media:flags.3?true message:string entities:flags.1?MessageEntity reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
+botInlineMessageMediaAuto#764cf810 flags:# invert_media:flags.3?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
+botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true invert_media:flags.3?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
botInlineMessageMediaGeo#51846fd flags:# geo:GeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
botInlineMessageMediaVenue#8a86659c flags:# geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
botInlineMessageMediaContact#18d1cdc2 flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
@@ -915,7 +913,6 @@ phoneCallDiscardReasonMissed#85e42301 = PhoneCallDiscardReason;
phoneCallDiscardReasonDisconnect#e095c1a0 = PhoneCallDiscardReason;
phoneCallDiscardReasonHangup#57adc690 = PhoneCallDiscardReason;
phoneCallDiscardReasonBusy#faf7e8c9 = PhoneCallDiscardReason;
-phoneCallDiscardReasonAllowGroupCall#afe2b839 encrypted_key:bytes = PhoneCallDiscardReason;
dataJSON#7d748d04 data:string = DataJSON;
@@ -943,7 +940,7 @@ inputWebFileAudioAlbumThumbLocation#f46fe924 flags:# small:flags.2?true document
upload.webFile#21e753bc size:int mime_type:string file_type:storage.FileType mtime:int bytes:bytes = upload.WebFile;
payments.paymentForm#a0058751 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true form_id:long bot_id:long title:string description:string photo:flags.5?WebDocument invoice:Invoice provider_id:long url:string native_provider:flags.4?string native_params:flags.4?DataJSON additional_methods:flags.6?Vector saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?Vector users:Vector = payments.PaymentForm;
-payments.paymentFormStars#7bf6b15c flags:# can_save_credentials:flags.2?true password_missing:flags.3?true form_id:long bot_id:long title:string description:string photo:flags.5?WebDocument invoice:Invoice users:User = payments.PaymentForm;
+payments.paymentFormStars#7bf6b15c flags:# can_save_credentials:flags.2?true password_missing:flags.3?true form_id:long bot_id:long title:string description:string photo:flags.5?WebDocument invoice:Invoice users:Vector = payments.PaymentForm;
payments.paymentFormStarGift#b425cfe1 form_id:long invoice:Invoice = payments.PaymentForm;
payments.validatedRequestedInfo#d1451883 flags:# id:flags.0?string shipping_options:flags.1?Vector = payments.ValidatedRequestedInfo;
@@ -970,11 +967,11 @@ inputStickerSetItem#32da9e9c flags:# document:InputDocument emoji:string mask_co
inputPhoneCall#1e36fded id:long access_hash:long = InputPhoneCall;
phoneCallEmpty#5366c915 id:long = PhoneCall;
-phoneCallWaiting#eed42858 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long protocol:PhoneCallProtocol receive_date:flags.0?int conference_call:flags.8?InputGroupCall = PhoneCall;
-phoneCallRequested#45361c63 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_a_hash:bytes protocol:PhoneCallProtocol conference_call:flags.8?InputGroupCall = PhoneCall;
-phoneCallAccepted#22fd7181 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_b:bytes protocol:PhoneCallProtocol conference_call:flags.8?InputGroupCall = PhoneCall;
+phoneCallWaiting#c5226f17 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long protocol:PhoneCallProtocol receive_date:flags.0?int = PhoneCall;
+phoneCallRequested#14b0ed0c flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_a_hash:bytes protocol:PhoneCallProtocol = PhoneCall;
+phoneCallAccepted#3660c311 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_b:bytes protocol:PhoneCallProtocol = PhoneCall;
phoneCall#30535af5 flags:# p2p_allowed:flags.5?true video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_a_or_b:bytes key_fingerprint:long protocol:PhoneCallProtocol connections:Vector start_date:int custom_parameters:flags.7?DataJSON = PhoneCall;
-phoneCallDiscarded#f9d25503 flags:# need_rating:flags.2?true need_debug:flags.3?true video:flags.6?true id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int conference_call:flags.8?InputGroupCall = PhoneCall;
+phoneCallDiscarded#50ca4de1 flags:# need_rating:flags.2?true need_debug:flags.3?true video:flags.6?true id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int = PhoneCall;
phoneConnection#9cc123c7 flags:# tcp:flags.0?true id:long ip:string ipv6:string port:int peer_tag:bytes = PhoneConnection;
phoneConnectionWebrtc#635fe375 flags:# turn:flags.0?true stun:flags.1?true id:long ip:string ipv6:string port:int username:string password:string = PhoneConnection;
@@ -1214,7 +1211,7 @@ statsURL#47a971e0 url:string = StatsURL;
chatAdminRights#5fb224d5 flags:# change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true manage_topics:flags.13?true post_stories:flags.14?true edit_stories:flags.15?true delete_stories:flags.16?true = ChatAdminRights;
-chatBannedRights#9f120418 flags:# view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true manage_topics:flags.18?true send_photos:flags.19?true send_videos:flags.20?true send_roundvideos:flags.21?true send_audios:flags.22?true send_voices:flags.23?true send_docs:flags.24?true send_plain:flags.25?true = ChatBannedRights;
+chatBannedRights#9f120418 flags:# view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true manage_topics:flags.18?true send_photos:flags.19?true send_videos:flags.20?true send_roundvideos:flags.21?true send_audios:flags.22?true send_voices:flags.23?true send_docs:flags.24?true send_plain:flags.25?true until_date:int = ChatBannedRights;
inputWallPaper#e630b979 id:long access_hash:long = InputWallPaper;
inputWallPaperSlug#72091c80 slug:string = InputWallPaper;
@@ -1296,9 +1293,9 @@ bankCardOpenUrl#f568028a url:string name:string = BankCardOpenUrl;
payments.bankCardData#3e24e573 title:string open_urls:Vector = payments.BankCardData;
-dialogFilter#aa472651 flags:# contacts:flags.0?true non_contacts:flags.1?true groups:flags.2?true broadcasts:flags.3?true bots:flags.4?true exclude_muted:flags.11?true exclude_read:flags.12?true exclude_archived:flags.13?true title_noanimate:flags.28?true id:int title:TextWithEntities emoticon:flags.25?string color:flags.27?int pinned_peers:InputPeer include_peers:InputPeer exclude_peers:InputPeer = DialogFilter;
+dialogFilter#5fb5523b flags:# contacts:flags.0?true non_contacts:flags.1?true groups:flags.2?true broadcasts:flags.3?true bots:flags.4?true exclude_muted:flags.11?true exclude_read:flags.12?true exclude_archived:flags.13?true id:int title:string emoticon:flags.25?string color:flags.27?int pinned_peers:Vector include_peers:Vector exclude_peers:Vector = DialogFilter;
dialogFilterDefault#363293ae = DialogFilter;
-dialogFilterChatlist#96537bd7 flags:# has_my_invites:flags.26?true id:int title:TextWithEntities emoticon:flags.25?string color:flags.27?int pinned_peers:InputPeer include_peers:InputPeer = DialogFilter;
+dialogFilterChatlist#9fe28ea4 flags:# has_my_invites:flags.26?true id:int title:string emoticon:flags.25?string color:flags.27?int pinned_peers:Vector include_peers:Vector = DialogFilter;
dialogFilterSuggested#77744d4a filter:DialogFilter description:string = DialogFilterSuggested;
@@ -1495,9 +1492,7 @@ inputInvoiceSlug#c326caef slug:string = InputInvoice;
inputInvoicePremiumGiftCode#98986c0d purpose:InputStorePaymentPurpose option:PremiumGiftCodeOption = InputInvoice;
inputInvoiceStars#65f00ce3 purpose:InputStorePaymentPurpose = InputInvoice;
inputInvoiceChatInviteSubscription#34e793f1 hash:string = InputInvoice;
-inputInvoiceStarGift#25d8c1d8 flags:# hide_name:flags.0?true include_upgrade:flags.2?true user_id:InputPeer gift_id:long message:flags.1?TextWithEntities = InputInvoice;
-inputInvoiceStarGiftUpgrade#5ebe7262 flags:# keep_original_details:flags.0?true msg_id:int = InputInvoice;
-inputInvoiceStarGiftTransfer#ae3ba9ed msg_id:int to_id:InputUser = InputInvoice;
+inputInvoiceStarGift#25d8c1d8 flags:# hide_name:flags.0?true user_id:InputUser gift_id:long message:flags.1?TextWithEntities = InputInvoice;
payments.exportedInvoice#aed0cbd9 url:string = payments.ExportedInvoice;
@@ -1568,8 +1563,8 @@ defaultHistoryTTL#43b46b20 period:int = DefaultHistoryTTL;
exportedContactToken#41bf109b url:string expires:int = ExportedContactToken;
requestPeerTypeUser#5f3b8a00 flags:# bot:flags.0?Bool premium:flags.1?Bool = RequestPeerType;
-requestPeerTypeChat#c9f06e1b flags:# creator:flags.0?true user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights bot_participant:flags.5?true has_username:flags.3?Bool forum:flags.4?Bool = RequestPeerType;
-requestPeerTypeBroadcast#339bef6c flags:# creator:flags.0?true user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights has_username:flags.3?Bool = RequestPeerType;
+requestPeerTypeChat#c9f06e1b flags:# creator:flags.0?true has_username:flags.3?Bool forum:flags.4?Bool user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights bot_participant:flags.5?true = RequestPeerType;
+requestPeerTypeBroadcast#339bef6c flags:# creator:flags.0?true has_username:flags.3?Bool user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights = RequestPeerType;
emojiListNotModified#481eadfa = EmojiList;
emojiList#7a1e11d1 hash:long document_id:Vector = EmojiList;
@@ -1614,8 +1609,8 @@ chatlists.exportedChatlistInvite#10e6e3a6 filter:DialogFilter invite:ExportedCha
chatlists.exportedInvites#10ab6dc7 invites:Vector chats:Vector users:Vector = chatlists.ExportedInvites;
-chatlists.chatlistInviteAlready#fa87f659 missing_peers:Vector already_peers:Vector chats:Vector users:Vector = chatlists.ChatlistInvite;
-chatlists.chatlistInvite#f10ece2f flags:# title_noanimate:flags.1?true title:TextWithEntities emoticon:flags.0?string peers:Peer chats:Chat users:User = chatlists.ChatlistInvite;
+chatlists.chatlistInviteAlready#fa87f659 filter_id:int missing_peers:Vector already_peers:Vector chats:Vector users:Vector = chatlists.ChatlistInvite;
+chatlists.chatlistInvite#1dcd839d flags:# title:string emoticon:flags.0?string peers:Vector chats:Vector users:Vector = chatlists.ChatlistInvite;
chatlists.chatlistUpdates#93bd878d missing_peers:Vector chats:Vector users:Vector = chatlists.ChatlistUpdates;
@@ -1856,7 +1851,7 @@ starsTransactionPeerAPI#f9677aad = StarsTransactionPeer;
starsTopupOption#bd915c0 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsTopupOption;
-starsTransaction#64dfc926 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true subscription:flags.12?true floodskip:flags.15?true stargift_upgrade:flags.18?true stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount = StarsTransaction;
+starsTransaction#64dfc926 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true subscription:flags.12?true floodskip:flags.15?true id:string stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount = StarsTransaction;
payments.starsStatus#6c9ce8ed flags:# balance:StarsAmount subscriptions:flags.1?Vector subscriptions_next_offset:flags.2?string subscriptions_missing_balance:flags.4?long history:flags.3?Vector next_offset:flags.0?string chats:Vector users:Vector = payments.StarsStatus;
@@ -1894,13 +1889,12 @@ starsGiveawayOption#94ce852a flags:# extended:flags.0?true default:flags.1?true
starsGiveawayWinnersOption#54236209 flags:# default:flags.0?true users:int per_user_stars:long = StarsGiveawayWinnersOption;
-starGift#2cc73c8 flags:# limited:flags.0?true sold_out:flags.1?true birthday:flags.2?true can_upgrade:flags.3?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long = StarGift;
-starGiftUnique#6a1407cd id:long title:string num:int owner_id:long attributes:StarGiftAttribute availability_issued:int availability_total:int = StarGift;
+starGift#49c577cd flags:# limited:flags.0?true sold_out:flags.1?true birthday:flags.2?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int = StarGift;
payments.starGiftsNotModified#a388a368 = payments.StarGifts;
payments.starGifts#901689ea hash:int gifts:Vector = payments.StarGifts;
-userStarGift#325835e1 flags:# name_hidden:flags.0?true unsaved:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true from_id:flags.1?long date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int convert_stars:flags.4?long upgrade_stars:flags.6?long can_export_at:flags.7?int transfer_stars:flags.8?long = UserStarGift;
+userStarGift#eea49a6e flags:# name_hidden:flags.0?true unsaved:flags.5?true from_id:flags.1?long date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int convert_stars:flags.4?long = UserStarGift;
payments.userStarGifts#6b65b517 flags:# count:int gifts:Vector next_offset:flags.0?string users:Vector = payments.UserStarGifts;
@@ -1931,20 +1925,9 @@ messages.foundStickers#82c9e290 flags:# next_offset:flags.0?int hash:long sticke
null#56730bcc = Null;
-starGiftAttributePattern#13acff19 name:string document:Document rarity_permille:int = StarGiftAttribute;
-starGiftAttributeModel#39d99013 name:string document:Document rarity_permille:int = StarGiftAttribute;
-starGiftAttributeBackdrop#94271762 name:string center_color:int edge_color:int pattern_color:int text_color:int rarity_permille:int = StarGiftAttribute;
-starGiftAttributeOriginalDetails#c02c4f4b flags:# sender_id:flags.0?long recipient_id:long date:int message:flags.1?TextWithEntities = StarGiftAttribute;
-
-starGiftUpgradePreview#167bd90b sample_attributes:StarGiftAttribute = StarGiftUpgradePreview;
-
messages.messageEmpty#3f4e0648 = messages.MessageEmpty;
-messages.webViewResult#aadf159b result:BotInlineResult users:User = messages.WebViewResult;
-
-botVerifierSettings#b0cd6617 flags:# can_modify_custom_description:flags.1?true company:string custom_description:flags.0?string = BotVerifierSettings;
-
-botVerification#f93cd45c bot_id:long icon:long description:string = BotVerification;
+messages.webViewResult#aadf159b result:BotInlineResult users:Vector = messages.WebViewResult;
---functions---
@@ -2116,7 +2099,8 @@ contacts.importContactToken#13005788 token:string = User;
contacts.editCloseFriends#ba6705f0 id:Vector = Bool;
contacts.setBlocked#94c65c76 flags:# my_stories_from:flags.0?true id:Vector limit:int = Bool;
contacts.getBirthdays#daeda864 = contacts.ContactBirthdays;
-contacts.importCard#4fe196fe export_card:int = User;
+contacts.importCard#4fe196fe export_card:Vector = User;
+contacts.exportCard#84e53737 = Vector;
messages.getMessages#63c66506 id:Vector = messages.Messages;
messages.getDialogs#a0f4cb4f flags:# exclude_pinned:flags.0?true folder_id:flags.1?int offset_date:int offset_id:int offset_peer:InputPeer limit:int hash:long = messages.Dialogs;
@@ -2127,9 +2111,9 @@ messages.deleteHistory#b08f922a flags:# just_clear:flags.0?true revoke:flags.1?t
messages.deleteMessages#e58e95d2 flags:# revoke:flags.0?true id:Vector = messages.AffectedMessages;
messages.receivedMessages#5a954c0 max_id:int = Vector;
messages.setTyping#58943ee2 flags:# peer:InputPeer top_msg_id:flags.0?int action:SendMessageAction = Bool;
-messages.sendMessage#983f9745 flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?MessageEntity schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates;
-messages.sendMedia#7852834e flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?MessageEntity schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates;
-messages.forwardMessages#d5039208 flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true drop_media_captions:flags.12?true noforwards:flags.14?true allow_paid_floodskip:flags.19?true from_peer:InputPeer id:int random_id:long to_peer:InputPeer top_msg_id:flags.9?int schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut = Updates;
+messages.sendMessage#983f9745 flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates;
+messages.sendMedia#7852834e flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates;
+messages.forwardMessages#d5039208 flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true drop_media_captions:flags.12?true noforwards:flags.14?true allow_paid_floodskip:flags.19?true from_peer:InputPeer id:Vector random_id:Vector to_peer:InputPeer top_msg_id:flags.9?int schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut = Updates;
messages.reportSpam#cf1592db peer:InputPeer = Bool;
messages.getPeerSettings#efd9a6a2 peer:InputPeer = messages.PeerSettings;
messages.report#fc78af9b peer:InputPeer id:Vector option:bytes message:string = ReportResult;
@@ -2165,7 +2149,7 @@ messages.startBot#e6df7378 bot:InputUser peer:InputPeer random_id:long start_par
messages.getMessagesViews#5784d3e1 peer:InputPeer id:Vector increment:Bool = messages.MessageViews;
messages.editChatAdmin#a85bd1c2 chat_id:long user_id:InputUser is_admin:Bool = Bool;
messages.migrateChat#a2875319 chat_id:long = Updates;
-messages.searchGlobal#4bc6589a flags:# broadcasts_only:flags.1?true groups_only:flags.2?true users_only:flags.3?true folder_id:flags.0?int q:string filter:MessagesFilter min_date:int max_date:int offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages;
+messages.searchGlobal#4bc6589a flags:# broadcasts_only:flags.1?true folder_id:flags.0?int q:string filter:MessagesFilter min_date:int max_date:int offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages;
messages.reorderStickerSets#78337739 flags:# masks:flags.0?true emojis:flags.1?true order:Vector = Bool;
messages.getDocumentByHash#b1f2061f sha256:bytes size:long mime_type:string = Document;
messages.getSavedGifs#5cf09635 hash:long = messages.SavedGifs;
@@ -2207,7 +2191,7 @@ messages.faveSticker#b9ffc55b id:InputDocument unfave:Bool = Bool;
messages.getUnreadMentions#f107e790 flags:# peer:InputPeer top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages;
messages.readMentions#36e5bf4d flags:# peer:InputPeer top_msg_id:flags.0?int = messages.AffectedHistory;
messages.getRecentLocations#702a40e0 peer:InputPeer limit:int hash:long = messages.Messages;
-messages.sendMultiMedia#37b74355 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo multi_media:InputSingleMedia schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates;
+messages.sendMultiMedia#37b74355 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo multi_media:Vector schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates;
messages.uploadEncryptedFile#5057c497 peer:InputEncryptedChat file:InputEncryptedFile = EncryptedFile;
messages.searchStickerSets#35705b8a flags:# exclude_featured:flags.0?true q:string hash:long = messages.FoundStickerSets;
messages.getSplitRanges#1cff7e08 = Vector;
@@ -2343,20 +2327,10 @@ messages.savePreparedInlineMessage#f21f7f2f flags:# result:InputBotInlineResult
messages.getPreparedInlineMessage#857ebdb8 bot:InputUser id:string = messages.PreparedInlineMessage;
messages.searchStickers#29b1c66a flags:# emojis:flags.0?true q:string emoticon:string lang_code:Vector offset:int limit:int hash:long = messages.FoundStickers;
messages.getWebViewResult#22b6c214 peer:InputPeer bot:InputUser query_id:long = messages.WebViewResult;
-messages.transferStarGift#333fb526 msg_id:int to_id:InputUser = Updates;
messages.forwardMessage#33963bf9 peer:InputPeer id:int random_id:long = Updates;
-messages.reportMessagesDelivery#5a6d7395 flags:# push:flags.0?true peer:InputPeer id:int = Bool;
-messages.convertStarGift#72770c83 msg_id:int = Bool;
messages.getStatsURL#812c2ae6 flags:# dark:flags.0?true peer:InputPeer params:string = StatsURL;
-messages.getAllChats#875f74be except_ids:long = messages.Chats;
-messages.setCustomVerification#8b89dfbd flags:# enabled:flags.1?true bot:flags.0?InputUser peer:InputPeer custom_description:flags.2?string = Bool;
-messages.saveStarGift#92fd2aae flags:# unsave:flags.0?true msg_id:int = Bool;
-messages.getStarGiftUpgradePreview#9c9abcb1 gift_id:long = StarGiftUpgradePreview;
-messages.requestCall#a6c4600c flags:# video:flags.0?true user_id:InputUser conference_call:flags.1?InputGroupCall random_id:int g_a_hash:bytes protocol:PhoneCallProtocol = phone.PhoneCall;
-messages.getUserStarGift#b502e4a5 msg_id:int = UserStarGifts;
+messages.getAllChats#875f74be except_ids:Vector = messages.Chats;
messages.sendEncryptedMultiMedia#cacacaca = messages.SentEncryptedMessage;
-messages.upgradeStarGift#cf4f0781 flags:# keep_original_details:flags.0?true msg_id:int = Updates;
-messages.createConferenceCall#dfc909ab peer:InputGroupCall key_fingerprint:long = PhoneCall;
messages.setWebViewResult#e41cd11d query_id:long = Bool;
updates.getState#edd4882a = updates.State;
@@ -2537,7 +2511,7 @@ payments.connectStarRefBot#7ed5348a peer:InputPeer bot:InputUser = payments.Conn
payments.editConnectedStarRefBot#e4fca4a3 flags:# revoked:flags.0?true peer:InputPeer link:string = payments.ConnectedStarRefBots;
payments.requestRecurringPayment#146e958d user_id:InputUser recurring_init_charge:string invoice_media:InputMedia = Updates;
-stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true emojis:flags.5?true text_color:flags.6?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:InputStickerSetItem software:flags.3?string = messages.StickerSet;
+stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true emojis:flags.5?true text_color:flags.6?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector software:flags.3?string = messages.StickerSet;
stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = messages.StickerSet;
stickers.changeStickerPosition#ffb6d4ca sticker:InputDocument position:int = messages.StickerSet;
stickers.addStickerToSet#8653febe stickerset:InputStickerSet sticker:InputStickerSetItem = messages.StickerSet;
@@ -2656,4 +2630,4 @@ smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool;
fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo;
-// LAYER 196
\ No newline at end of file
+// LAYER 195
\ No newline at end of file
diff --git a/telegram/const.go b/telegram/const.go
index 541b2385..5366acc5 100644
--- a/telegram/const.go
+++ b/telegram/const.go
@@ -7,7 +7,7 @@ import (
)
const (
- ApiVersion = 194
+ ApiVersion = 195
Version = "v1.5.0"
LogDebug = utils.DebugLevel
diff --git a/telegram/enums_gen.go b/telegram/enums_gen.go
index 902d12d1..38a0074f 100755
--- a/telegram/enums_gen.go
+++ b/telegram/enums_gen.go
@@ -159,6 +159,32 @@ func (e Null) String() string {
func (e Null) CRC() uint32 { return uint32(e) }
+type PhoneCallDiscardReason uint32
+
+const (
+ PhoneCallDiscardReasonBusy PhoneCallDiscardReason = 0xfaf7e8c9
+ PhoneCallDiscardReasonDisconnect PhoneCallDiscardReason = 0xe095c1a0
+ PhoneCallDiscardReasonHangup PhoneCallDiscardReason = 0x57adc690
+ PhoneCallDiscardReasonMissed PhoneCallDiscardReason = 0x85e42301
+)
+
+func (e PhoneCallDiscardReason) String() string {
+ switch e {
+ case PhoneCallDiscardReason(0xfaf7e8c9):
+ return "phoneCallDiscardReasonBusy"
+ case PhoneCallDiscardReason(0xe095c1a0):
+ return "phoneCallDiscardReasonDisconnect"
+ case PhoneCallDiscardReason(0x57adc690):
+ return "phoneCallDiscardReasonHangup"
+ case PhoneCallDiscardReason(0x85e42301):
+ return "phoneCallDiscardReasonMissed"
+ default:
+ return ""
+ }
+}
+
+func (e PhoneCallDiscardReason) CRC() uint32 { return uint32(e) }
+
type PrivacyKey uint32
const (
diff --git a/telegram/interfaces_gen.go b/telegram/interfaces_gen.go
index 3abe8036..77285eba 100755
--- a/telegram/interfaces_gen.go
+++ b/telegram/interfaces_gen.go
@@ -149,10 +149,10 @@ type BotInlineMessage interface {
// Send whatever media is attached to the botInlineMediaResult
type BotInlineMessageMediaAuto struct {
- InvertMedia bool `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
- Message string // Caption
- Entities MessageEntity `tl:"flag:1"` // Message entities for styled text
- ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
+ InvertMedia bool `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
+ Message string // Caption
+ Entities []MessageEntity `tl:"flag:1"` // Message entities for styled text
+ ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
}
func (*BotInlineMessageMediaAuto) CRC() uint32 {
@@ -271,11 +271,11 @@ func (*BotInlineMessageMediaWebPage) ImplementsBotInlineMessage() {}
// Send a simple text message
type BotInlineMessageText struct {
- NoWebpage bool `tl:"flag:0,encoded_in_bitflags"` // Disable webpage preview
- InvertMedia bool `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
- Message string // The message
- Entities MessageEntity `tl:"flag:1"` // Message entities for styled text
- ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
+ NoWebpage bool `tl:"flag:0,encoded_in_bitflags"` // Disable webpage preview
+ InvertMedia bool `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
+ Message string // The message
+ Entities []MessageEntity `tl:"flag:1"` // Message entities for styled text
+ ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
}
func (*BotInlineMessageText) CRC() uint32 {
@@ -1118,8 +1118,9 @@ type ChannelParticipant interface {
// Channel/supergroup participant
type ChannelParticipantObj struct {
- Date int32
- SubscriptionUntilDate int32 `tl:"flag:0"`
+ UserID int64 // Participant user ID
+ Date int32 // Date joined
+ SubscriptionUntilDate int32 `tl:"flag:0"` // If set, contains the expiration date of the current Telegram Star subscription period for the specified participant.
}
func (*ChannelParticipantObj) CRC() uint32 {
@@ -1134,13 +1135,14 @@ func (*ChannelParticipantObj) ImplementsChannelParticipant() {}
// Admin
type ChannelParticipantAdmin struct {
- CanEdit bool `tl:"flag:0,encoded_in_bitflags"`
- Self bool `tl:"flag:1,encoded_in_bitflags"`
- InviterID int64 `tl:"flag:1"`
- PromotedBy int64
- Date int32
- AdminRights *ChatAdminRights
- Rank string `tl:"flag:2"`
+ CanEdit bool `tl:"flag:0,encoded_in_bitflags"` // Can this admin promote other admins with the same permissions?
+ Self bool `tl:"flag:1,encoded_in_bitflags"` // Is this the current user
+ UserID int64 // Admin user ID
+ InviterID int64 `tl:"flag:1"` // User that invited the admin to the channel/group
+ PromotedBy int64 // User that promoted the user to admin
+ Date int32 // When did the user join
+ AdminRights *ChatAdminRights // Admin rights
+ Rank string `tl:"flag:2"` // The role (rank) of the admin in the group: just an arbitrary string, admin by default
}
func (*ChannelParticipantAdmin) CRC() uint32 {
@@ -1174,8 +1176,9 @@ func (*ChannelParticipantBanned) ImplementsChannelParticipant() {}
// Channel/supergroup creator
type ChannelParticipantCreator struct {
- AdminRights *ChatAdminRights
- Rank string `tl:"flag:0"`
+ UserID int64 // User ID
+ AdminRights *ChatAdminRights // Creator admin rights
+ Rank string `tl:"flag:0"` // The role (rank) of the group creator in the group: just an arbitrary string, admin by default
}
func (*ChannelParticipantCreator) CRC() uint32 {
@@ -1320,53 +1323,85 @@ type Chat interface {
// Channel/supergroup info
type Channel struct {
- Creator bool `tl:"flag:0,encoded_in_bitflags"`
- Left bool `tl:"flag:2,encoded_in_bitflags"`
- Broadcast bool `tl:"flag:5,encoded_in_bitflags"`
- Verified bool `tl:"flag:7,encoded_in_bitflags"`
- Megagroup bool `tl:"flag:8,encoded_in_bitflags"`
- Restricted bool `tl:"flag:9,encoded_in_bitflags"`
- Signatures bool `tl:"flag:11,encoded_in_bitflags"`
- Min bool `tl:"flag:12,encoded_in_bitflags"`
- Scam bool `tl:"flag:19,encoded_in_bitflags"`
- HasLink bool `tl:"flag:20,encoded_in_bitflags"`
- HasGeo bool `tl:"flag:21,encoded_in_bitflags"`
- SlowmodeEnabled bool `tl:"flag:22,encoded_in_bitflags"`
- CallActive bool `tl:"flag:23,encoded_in_bitflags"`
- CallNotEmpty bool `tl:"flag:24,encoded_in_bitflags"`
- Fake bool `tl:"flag:25,encoded_in_bitflags"`
- Gigagroup bool `tl:"flag:26,encoded_in_bitflags"`
- Noforwards bool `tl:"flag:27,encoded_in_bitflags"`
- JoinToSend bool `tl:"flag:28,encoded_in_bitflags"`
- JoinRequest bool `tl:"flag:29,encoded_in_bitflags"`
- Forum bool `tl:"flag:30,encoded_in_bitflags"`
- StoriesHidden bool `tl:"flag2:1,encoded_in_bitflags"`
- StoriesHiddenMin bool `tl:"flag2:2,encoded_in_bitflags"`
- StoriesUnavailable bool `tl:"flag2:3,encoded_in_bitflags"`
- SignatureProfiles bool `tl:"flag2:12,encoded_in_bitflags"`
- ID int64
- AccessHash int64 `tl:"flag:13"`
- Title string
- Username string `tl:"flag:6"`
- Photo ChatPhoto
- Date int32
- RestrictionReason *RestrictionReason `tl:"flag:9"`
- AdminRights *ChatAdminRights `tl:"flag:14"`
- BannedRights *ChatBannedRights `tl:"flag:15"`
- DefaultBannedRights *ChatBannedRights `tl:"flag:18"`
- ParticipantsCount int32 `tl:"flag:17"`
- Usernames *Username `tl:"flag2:0"`
- StoriesMaxID int32 `tl:"flag2:4"`
- Color *PeerColor `tl:"flag2:7"`
- ProfileColor *PeerColor `tl:"flag2:8"`
- EmojiStatus EmojiStatus `tl:"flag2:9"`
- Level int32 `tl:"flag2:10"`
- SubscriptionUntilDate int32 `tl:"flag2:11"`
- BotVerificationIcon int64 `tl:"flag2:13"`
+ Creator bool `tl:"flag:0,encoded_in_bitflags"` // Whether the current user is the creator of this channel
+ Left bool `tl:"flag:2,encoded_in_bitflags"` // Whether the current user has left or is not a member of this channel
+ Broadcast bool `tl:"flag:5,encoded_in_bitflags"` // Is this a channel?
+ Verified bool `tl:"flag:7,encoded_in_bitflags"` // Is this channel verified by telegram?
+ Megagroup bool `tl:"flag:8,encoded_in_bitflags"` /*
+ Is this a supergroup?
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ Restricted bool `tl:"flag:9,encoded_in_bitflags"` // Whether viewing/writing in this channel for a reason (see restriction_reason)
+ Signatures bool `tl:"flag:11,encoded_in_bitflags"` // Whether signatures are enabled (channels)
+ Min bool `tl:"flag:12,encoded_in_bitflags"` // See min
+ Scam bool `tl:"flag:19,encoded_in_bitflags"` /*
+ This channel/supergroup is probably a scam
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ HasLink bool `tl:"flag:20,encoded_in_bitflags"` /*
+ Whether this channel has a linked discussion group (or this supergroup is a channel's discussion group). The actual ID of the linked channel/supergroup is contained in channelFull.linked_chat_id.
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ HasGeo bool `tl:"flag:21,encoded_in_bitflags"` // Whether this chanel has a geoposition
+ SlowmodeEnabled bool `tl:"flag:22,encoded_in_bitflags"` /*
+ Whether slow mode is enabled for groups to prevent flood in chat.
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ CallActive bool `tl:"flag:23,encoded_in_bitflags"` // Whether a group call or livestream is currently active
+ CallNotEmpty bool `tl:"flag:24,encoded_in_bitflags"` // Whether there's anyone in the group call or livestream
+ Fake bool `tl:"flag:25,encoded_in_bitflags"` /*
+ If set, this supergroup/channel was reported by many users as a fake or scam: be careful when interacting with it.
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ Gigagroup bool `tl:"flag:26,encoded_in_bitflags"` /*
+ Whether this supergroup is a gigagroup
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ Noforwards bool `tl:"flag:27,encoded_in_bitflags"` // Whether this channel or group is protected, thus does not allow forwarding messages from it
+ JoinToSend bool `tl:"flag:28,encoded_in_bitflags"` /*
+ Whether a user needs to join the supergroup before they can send messages: can be false only for discussion groups , toggle using channels.toggleJoinToSend
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ JoinRequest bool `tl:"flag:29,encoded_in_bitflags"` /*
+ Whether a user's join request will have to be approved by administrators, toggle using channels.toggleJoinToSend
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ Forum bool `tl:"flag:30,encoded_in_bitflags"` /*
+ Whether this supergroup is a forum.
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ StoriesHidden bool `tl:"flag2:1,encoded_in_bitflags"` // Whether we have hidden all stories posted by this channel.
+ StoriesHiddenMin bool `tl:"flag2:2,encoded_in_bitflags"` // If set, indicates that the stories_hidden flag was not populated, and its value must cannot be relied on; use the previously cached value, or re-fetch the constructor using channels.getChannels to obtain the latest value of the stories_hidden flag.
+ StoriesUnavailable bool `tl:"flag2:3,encoded_in_bitflags"` // No stories from the channel are visible.
+ SignatureProfiles bool `tl:"flag2:12,encoded_in_bitflags"` // If set, messages sent by admins to this channel will link to the admin's profile (just like with groups).
+ ID int64 // ID of the channel
+ AccessHash int64 `tl:"flag:13"` // Access hash
+ Title string // Title
+ Username string `tl:"flag:6"` // Main active username.
+ Photo ChatPhoto // Profile photo
+ Date int32 // Date when the user joined the supergroup/channel, or if the user isn't a member, its creation date
+ RestrictionReason []*RestrictionReason `tl:"flag:9"` /*
+ Contains the reason why access to this channel must be restricted.
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ AdminRights *ChatAdminRights `tl:"flag:14"` // Admin rights of the user in this channel (see rights)
+ BannedRights *ChatBannedRights `tl:"flag:15"` // Banned rights of the user in this channel (see rights)
+ DefaultBannedRights *ChatBannedRights `tl:"flag:18"` // Default chat rights (see rights)
+ ParticipantsCount int32 `tl:"flag:17"` // Participant count
+ Usernames []*Username `tl:"flag2:0"` // Additional usernames
+ StoriesMaxID int32 `tl:"flag2:4"` // ID of the maximum read story.
+ Color *PeerColor `tl:"flag2:7"` // The channel's accent color.
+ ProfileColor *PeerColor `tl:"flag2:8"` // The channel's profile color.
+ EmojiStatus EmojiStatus `tl:"flag2:9"` // Emoji status
+ Level int32 `tl:"flag2:10"` /*
+ Boost level.
+ Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
+ */
+ SubscriptionUntilDate int32 `tl:"flag2:11"` // Expiration date of the Telegram Star subscription the current user has bought to gain access to this channel.
}
func (*Channel) CRC() uint32 {
- return 0xe00998b7
+ return 0xfe4478bd
}
func (*Channel) FlagIndex() int {
@@ -1455,71 +1490,73 @@ type ChatFull interface {
// Full info about a channel, supergroup or gigagroup.
type ChannelFull struct {
- CanViewParticipants bool `tl:"flag:3,encoded_in_bitflags"`
- CanSetUsername bool `tl:"flag:6,encoded_in_bitflags"`
- CanSetStickers bool `tl:"flag:7,encoded_in_bitflags"`
- HiddenPrehistory bool `tl:"flag:10,encoded_in_bitflags"`
- CanSetLocation bool `tl:"flag:16,encoded_in_bitflags"`
- HasScheduled bool `tl:"flag:19,encoded_in_bitflags"`
- CanViewStats bool `tl:"flag:20,encoded_in_bitflags"`
- Blocked bool `tl:"flag:22,encoded_in_bitflags"`
- CanDeleteChannel bool `tl:"flag2:0,encoded_in_bitflags"`
- Antispam bool `tl:"flag2:1,encoded_in_bitflags"`
- ParticipantsHidden bool `tl:"flag2:2,encoded_in_bitflags"`
- TranslationsDisabled bool `tl:"flag2:3,encoded_in_bitflags"`
- StoriesPinnedAvailable bool `tl:"flag2:5,encoded_in_bitflags"`
- ViewForumAsMessages bool `tl:"flag2:6,encoded_in_bitflags"`
- RestrictedSponsored bool `tl:"flag2:11,encoded_in_bitflags"`
- CanViewRevenue bool `tl:"flag2:12,encoded_in_bitflags"`
- PaidMediaAllowed bool `tl:"flag2:14,encoded_in_bitflags"`
- CanViewStarsRevenue bool `tl:"flag2:15,encoded_in_bitflags"`
- PaidReactionsAvailable bool `tl:"flag2:16,encoded_in_bitflags"`
- ID int64
- About string
- ParticipantsCount int32 `tl:"flag:0"`
- AdminsCount int32 `tl:"flag:1"`
- KickedCount int32 `tl:"flag:2"`
- BannedCount int32 `tl:"flag:2"`
- OnlineCount int32 `tl:"flag:13"`
- ReadInboxMaxID int32
- ReadOutboxMaxID int32
- UnreadCount int32
- ChatPhoto Photo
- NotifySettings *PeerNotifySettings
- ExportedInvite `tl:"flag:23"`
- BotInfo *BotInfo
- MigratedFromChatID int64 `tl:"flag:4"`
- MigratedFromMaxID int32 `tl:"flag:4"`
- PinnedMsgID int32 `tl:"flag:5"`
- Stickerset *StickerSet `tl:"flag:8"`
- AvailableMinID int32 `tl:"flag:9"`
- FolderID int32 `tl:"flag:11"`
- LinkedChatID int64 `tl:"flag:14"`
- Location ChannelLocation `tl:"flag:15"`
- SlowmodeSeconds int32 `tl:"flag:17"`
- SlowmodeNextSendDate int32 `tl:"flag:18"`
- StatsDc int32 `tl:"flag:12"`
- Pts int32
- Call *InputGroupCall `tl:"flag:21"`
- TtlPeriod int32 `tl:"flag:24"`
- PendingSuggestions string `tl:"flag:25"`
- GroupcallDefaultJoinAs Peer `tl:"flag:26"`
- ThemeEmoticon string `tl:"flag:27"`
- RequestsPending int32 `tl:"flag:28"`
- RecentRequesters int64 `tl:"flag:28"`
- DefaultSendAs Peer `tl:"flag:29"`
- AvailableReactions ChatReactions `tl:"flag:30"`
- ReactionsLimit int32 `tl:"flag2:13"`
- Stories *PeerStories `tl:"flag2:4"`
- Wallpaper WallPaper `tl:"flag2:7"`
- BoostsApplied int32 `tl:"flag2:8"`
- BoostsUnrestrict int32 `tl:"flag2:9"`
- Emojiset *StickerSet `tl:"flag2:10"`
- BotVerification *BotVerification `tl:"flag2:17"`
+ CanViewParticipants bool `tl:"flag:3,encoded_in_bitflags"` // Can we view the participant list?
+ CanSetUsername bool `tl:"flag:6,encoded_in_bitflags"` // Can we set the channel's username?
+ CanSetStickers bool `tl:"flag:7,encoded_in_bitflags"` // Can we associate a stickerpack to the supergroup?
+ HiddenPrehistory bool `tl:"flag:10,encoded_in_bitflags"` // Is the history before we joined hidden to us?
+ CanSetLocation bool `tl:"flag:16,encoded_in_bitflags"` // Can we set the geolocation of this group (for geogroups)
+ HasScheduled bool `tl:"flag:19,encoded_in_bitflags"` // Whether scheduled messages are available
+ CanViewStats bool `tl:"flag:20,encoded_in_bitflags"` // Can the user view channel/supergroup statistics
+ Blocked bool `tl:"flag:22,encoded_in_bitflags"` // Whether any anonymous admin of this supergroup was blocked: if set, you won't receive messages from anonymous group admins in discussion replies via @replies
+ CanDeleteChannel bool `tl:"flag2:0,encoded_in_bitflags"` // Can we delete this channel?
+ Antispam bool `tl:"flag2:1,encoded_in_bitflags"` // Whether native antispam functionality is enabled in this supergroup.
+ ParticipantsHidden bool `tl:"flag2:2,encoded_in_bitflags"` // Whether the participant list is hidden.
+ TranslationsDisabled bool `tl:"flag2:3,encoded_in_bitflags"` // Whether the real-time chat translation popup should be hidden.
+ StoriesPinnedAvailable bool `tl:"flag2:5,encoded_in_bitflags"` // Whether this user has some pinned stories.
+ ViewForumAsMessages bool `tl:"flag2:6,encoded_in_bitflags"` /*
+ Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client.
+ This setting only affects the current account, and is synced to other logged in sessions using the channels.toggleViewForumAsMessages method; invoking this method will update the value of this flag.
+ */
+ RestrictedSponsored bool `tl:"flag2:11,encoded_in_bitflags"` // Whether ads on this channel were disabled as specified here (this flag is only visible to the owner of the channel).
+ CanViewRevenue bool `tl:"flag2:12,encoded_in_bitflags"` // If set, this user can view ad revenue statistics for this channel.
+ PaidMediaAllowed bool `tl:"flag2:14,encoded_in_bitflags"` // Whether the current user can send or forward paid media to this channel.
+ CanViewStarsRevenue bool `tl:"flag2:15,encoded_in_bitflags"` // If set, this user can view Telegram Star revenue statistics for this channel.
+ PaidReactionsAvailable bool `tl:"flag2:16,encoded_in_bitflags"` // If set, users may send paid Telegram Star reactions to messages of this channel.
+ ID int64 // ID of the channel
+ About string // Info about the channel
+ ParticipantsCount int32 `tl:"flag:0"` // Number of participants of the channel
+ AdminsCount int32 `tl:"flag:1"` // Number of channel admins
+ KickedCount int32 `tl:"flag:2"` // Number of users kicked from the channel
+ BannedCount int32 `tl:"flag:2"` // Number of users banned from the channel
+ OnlineCount int32 `tl:"flag:13"` // Number of users currently online
+ ReadInboxMaxID int32 // Position up to which all incoming messages are read.
+ ReadOutboxMaxID int32 // Position up to which all outgoing messages are read.
+ UnreadCount int32 // Count of unread messages
+ ChatPhoto Photo // Channel picture
+ NotifySettings *PeerNotifySettings // Notification settings
+ ExportedInvite ExportedChatInvite `tl:"flag:23"` // Invite link
+ BotInfo []*BotInfo // Info about bots in the channel/supergroup
+ MigratedFromChatID int64 `tl:"flag:4"` // The chat ID from which this group was migrated
+ MigratedFromMaxID int32 `tl:"flag:4"` // The message ID in the original chat at which this group was migrated
+ PinnedMsgID int32 `tl:"flag:5"` // Message ID of the last pinned message
+ Stickerset *StickerSet `tl:"flag:8"` // Associated stickerset
+ AvailableMinID int32 `tl:"flag:9"` // Identifier of a maximum unavailable message in a channel due to hidden history.
+ FolderID int32 `tl:"flag:11"` // Peer folder ID, for more info click here
+ LinkedChatID int64 `tl:"flag:14"` // ID of the linked discussion chat for channels (and vice versa, the ID of the linked channel for discussion chats).
+ Location ChannelLocation `tl:"flag:15"` // Location of the geogroup
+ SlowmodeSeconds int32 `tl:"flag:17"` // If specified, users in supergroups will only be able to send one message every slowmode_seconds seconds
+ SlowmodeNextSendDate int32 `tl:"flag:18"` // Indicates when the user will be allowed to send another message in the supergroup (unixtime)
+ StatsDc int32 `tl:"flag:12"` // If set, specifies the DC to use for fetching channel statistics
+ Pts int32 // Latest PTS for this channel
+ Call *InputGroupCall `tl:"flag:21"` // Livestream or group call information
+ TtlPeriod int32 `tl:"flag:24"` // Time-To-Live of messages in this channel or supergroup
+ PendingSuggestions []string `tl:"flag:25"` // A list of suggested actions for the supergroup admin,.
+ GroupcallDefaultJoinAs Peer `tl:"flag:26"` // When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
+ ThemeEmoticon string `tl:"flag:27"` // Emoji representing a specific chat theme
+ RequestsPending int32 `tl:"flag:28"` // Pending join requests
+ RecentRequesters []int64 `tl:"flag:28"` // IDs of users who requested to join recently
+ DefaultSendAs Peer `tl:"flag:29"` // Default peer used for sending messages to this channel
+ AvailableReactions ChatReactions `tl:"flag:30"` // Allowed message reactions
+ ReactionsLimit int32 `tl:"flag2:13"` // This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of appConfig.reactions_uniq_max).
+ Stories *PeerStories `tl:"flag2:4"` // Channel stories
+ Wallpaper WallPaper `tl:"flag2:7"` // Wallpaper
+ BoostsApplied int32 `tl:"flag2:8"` // The number of boosts the current user has applied to the current supergroup.
+ BoostsUnrestrict int32 `tl:"flag2:9"` // The number of boosts this supergroup requires to bypass slowmode and other restrictions,.
+ Emojiset *StickerSet `tl:"flag2:10"` // Custom emoji stickerset associated to the current supergroup, set using channels.setEmojiStickers after reaching the appropriate boost level,.
}
func (*ChannelFull) CRC() uint32 {
- return 0x9ff3b858
+ return 0xbbab348d
}
func (*ChannelFull) FlagIndex() int {
@@ -1538,8 +1575,8 @@ type ChatFullObj struct {
Participants ChatParticipants // Participant list
ChatPhoto Photo `tl:"flag:2"` // Chat photo
NotifySettings *PeerNotifySettings // Notification settings
- ExportedInvite `tl:"flag:13"` // Chat invite
- BotInfo *BotInfo `tl:"flag:3"` // Info about bots that are in this chat
+ ExportedInvite ExportedChatInvite `tl:"flag:13"` // Chat invite
+ BotInfo []*BotInfo `tl:"flag:3"` // Info about bots that are in this chat
PinnedMsgID int32 `tl:"flag:6"` // Message ID of the last pinned message
FolderID int32 `tl:"flag:11"` // Peer folder ID, for more info click here
Call *InputGroupCall `tl:"flag:12"` // Group call information
@@ -1547,7 +1584,7 @@ type ChatFullObj struct {
GroupcallDefaultJoinAs Peer `tl:"flag:15"` // When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
ThemeEmoticon string `tl:"flag:16"` // Emoji representing a specific chat theme
RequestsPending int32 `tl:"flag:17"` // Pending join requests
- RecentRequesters int64 `tl:"flag:17"` // IDs of users who requested to join recently
+ RecentRequesters []int64 `tl:"flag:17"` // IDs of users who requested to join recently
AvailableReactions ChatReactions `tl:"flag:18"` // Allowed message reactions
ReactionsLimit int32 `tl:"flag:20"` // This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of appConfig.reactions_uniq_max).
}
@@ -1579,17 +1616,17 @@ type ChatInviteObj struct {
Fake bool `tl:"flag:9,encoded_in_bitflags"` // If set, this chat was reported by many users as a fake or scam: be careful when interacting with it.
CanRefulfillSubscription bool `tl:"flag:11,encoded_in_bitflags"` // If set, indicates that the user has already paid for the associated Telegram Star subscriptions and it hasn't expired yet, so they may re-join the channel using messages.importChatInvite without repeating the payment.
Title string // Chat/supergroup/channel title
- Photo Photo // Description of the group of channel
- ParticipantsCount int32 // Chat/supergroup/channel photo
- Participants User `tl:"flag:4"` // Participant count
- Color int32 // A few of the participants that are in the group
- SubscriptionPricing *StarsSubscriptionPricing `tl:"flag:10"` // Profile color palette ID
- SubscriptionFormID int64 `tl:"flag:12"` // For Telegram Star subscriptions , contains the pricing of the subscription the user must activate to join the private channel.
- BotVerification *BotVerification `tl:"flag:13"` // For Telegram Star subscriptions , the ID of the payment form for the subscription.
+ About string `tl:"flag:5"` // Description of the group of channel
+ Photo Photo // Chat/supergroup/channel photo
+ ParticipantsCount int32 // Participant count
+ Participants []User `tl:"flag:4"` // A few of the participants that are in the group
+ Color int32 // Profile color palette ID
+ SubscriptionPricing *StarsSubscriptionPricing `tl:"flag:10"` // For Telegram Star subscriptions , contains the pricing of the subscription the user must activate to join the private channel.
+ SubscriptionFormID int64 `tl:"flag:12"` // For Telegram Star subscriptions , the ID of the payment form for the subscription.
}
func (*ChatInviteObj) CRC() uint32 {
- return 0x5c9d3702
+ return 0xfe65389d
}
func (*ChatInviteObj) FlagIndex() int {
@@ -1779,8 +1816,8 @@ type DialogObj struct {
Pinned bool `tl:"flag:2,encoded_in_bitflags"` // Is the dialog pinned
UnreadMark bool `tl:"flag:3,encoded_in_bitflags"` // Whether the chat was manually marked as unread
ViewForumAsMessages bool `tl:"flag:6,encoded_in_bitflags"` /*
- Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client.
- This setting only affects the current account, and is synced to other logged in sessions using the channels.toggleViewForumAsMessages method; invoking this method will update the value of this flag.
+ Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client.
+ This setting only affects the current account, and is synced to other logged in sessions using the channels.toggleViewForumAsMessages method; invoking this method will update the value of this flag.
*/
Peer Peer // The chat
TopMessage int32 // The latest message ID
@@ -1835,26 +1872,25 @@ type DialogFilter interface {
// Dialog filter AKA folder
type DialogFilterObj struct {
- Contacts bool `tl:"flag:0,encoded_in_bitflags"`
- NonContacts bool `tl:"flag:1,encoded_in_bitflags"`
- Groups bool `tl:"flag:2,encoded_in_bitflags"`
- Broadcasts bool `tl:"flag:3,encoded_in_bitflags"`
- Bots bool `tl:"flag:4,encoded_in_bitflags"`
- ExcludeMuted bool `tl:"flag:11,encoded_in_bitflags"`
- ExcludeRead bool `tl:"flag:12,encoded_in_bitflags"`
- ExcludeArchived bool `tl:"flag:13,encoded_in_bitflags"`
- TitleNoanimate bool `tl:"flag:28,encoded_in_bitflags"`
- ID int32
- Title *TextWithEntities
- Emoticon string `tl:"flag:25"`
- Color int32 `tl:"flag:27"`
- PinnedPeers InputPeer
- IncludePeers InputPeer
- ExcludePeers InputPeer
+ Contacts bool `tl:"flag:0,encoded_in_bitflags"` // Whether to include all contacts in this folder
+ NonContacts bool `tl:"flag:1,encoded_in_bitflags"` // Whether to include all non-contacts in this folder
+ Groups bool `tl:"flag:2,encoded_in_bitflags"` // Whether to include all groups in this folder
+ Broadcasts bool `tl:"flag:3,encoded_in_bitflags"` // Whether to include all channels in this folder
+ Bots bool `tl:"flag:4,encoded_in_bitflags"` // Whether to include all bots in this folder
+ ExcludeMuted bool `tl:"flag:11,encoded_in_bitflags"` // Whether to exclude muted chats from this folder
+ ExcludeRead bool `tl:"flag:12,encoded_in_bitflags"` // Whether to exclude read chats from this folder
+ ExcludeArchived bool `tl:"flag:13,encoded_in_bitflags"` // Whether to exclude archived chats from this folder
+ ID int32 // Folder ID
+ Title string // Folder name (max 12 UTF-8 chars)
+ Emoticon string `tl:"flag:25"` // Emoji to use as icon for the folder.
+ Color int32 `tl:"flag:27"` // A color ID for the folder tag associated to this folder,.
+ PinnedPeers []InputPeer // Pinned chats, folders can have unlimited pinned chats
+ IncludePeers []InputPeer // Include the following chats in this folder
+ ExcludePeers []InputPeer // Exclude the following chats from this folder
}
func (*DialogFilterObj) CRC() uint32 {
- return 0xaa472651
+ return 0x5fb5523b
}
func (*DialogFilterObj) FlagIndex() int {
@@ -1865,17 +1901,17 @@ func (*DialogFilterObj) ImplementsDialogFilter() {}
// A folder imported using a chat folder deep link ».
type DialogFilterChatlist struct {
- HasMyInvites bool `tl:"flag:26,encoded_in_bitflags"` // Whether the current user has created some chat folder deep links to share the folder as well.
- ID int32 // ID of the folder
- Title *TextWithEntities // Name of the folder (max 12 UTF-8 chars)
- Emoticon string `tl:"flag:25"` // Emoji to use as icon for the folder.
- Color int32 `tl:"flag:27"` // A color ID for the folder tag associated to this folder,.
- PinnedPeers InputPeer // Pinned chats, folders can have unlimited pinned chats
- IncludePeers InputPeer // Chats to include in the folder
+ HasMyInvites bool `tl:"flag:26,encoded_in_bitflags"` // Whether the current user has created some chat folder deep links to share the folder as well.
+ ID int32 // ID of the folder
+ Title string // Name of the folder (max 12 UTF-8 chars)
+ Emoticon string `tl:"flag:25"` // Emoji to use as icon for the folder.
+ Color int32 `tl:"flag:27"` // A color ID for the folder tag associated to this folder,.
+ PinnedPeers []InputPeer // Pinned chats, folders can have unlimited pinned chats
+ IncludePeers []InputPeer // Chats to include in the folder
}
func (*DialogFilterChatlist) CRC() uint32 {
- return 0x96537bd7
+ return 0x9fe28ea4
}
func (*DialogFilterChatlist) FlagIndex() int {
@@ -1981,8 +2017,8 @@ type DocumentAttributeAudio struct {
Title string `tl:"flag:0"` // Name of song
Performer string `tl:"flag:1"` // Performer
Waveform []byte `tl:"flag:2"` /*
- Waveform: consists in a series of bitpacked 5-bit values.
- Example implementation: android.
+ Waveform: consists in a series of bitpacked 5-bit values.
+ Example implementation: android.
*/
}
@@ -2350,9 +2386,9 @@ type EncryptedChatObj struct {
AdminID int64 // Chat creator ID
ParticipantID int64 // ID of the second chat participant
GAOrB []byte /*
- B = g ^ b mod p, if the currently authorized user is the chat's creator,
- or A = g ^ a mod p otherwise
- See Wikipedia for more info
+ B = g ^ b mod p, if the currently authorized user is the chat's creator,
+ or A = g ^ a mod p otherwise
+ See Wikipedia for more info
*/
KeyFingerprint int64 // 64-bit fingerprint of received key
}
@@ -2542,9 +2578,9 @@ type ForumTopicObj struct {
Closed bool `tl:"flag:2,encoded_in_bitflags"` // Whether the topic is closed (no messages can be sent to it)
Pinned bool `tl:"flag:3,encoded_in_bitflags"` // Whether the topic is pinned
Short bool `tl:"flag:5,encoded_in_bitflags"` /*
- Whether this constructor is a reduced version of the full topic information.
- If set, only the my, closed, id, date, title, icon_color, icon_emoji_id and from_id parameters will contain valid information.
- Reduced info is usually only returned in topic-related admin log events and in the messages.channelMessages constructor: if needed, full information can be fetched using channels.getForumTopicsByID.
+ Whether this constructor is a reduced version of the full topic information.
+ If set, only the my, closed, id, date, title, icon_color, icon_emoji_id and from_id parameters will contain valid information.
+ Reduced info is usually only returned in topic-related admin log events and in the messages.channelMessages constructor: if needed, full information can be fetched using channels.getForumTopicsByID.
*/
Hidden bool `tl:"flag:6,encoded_in_bitflags"` // Whether the topic is hidden (only valid for the "General" topic, id=1)
ID int32 // Topic ID
@@ -3504,11 +3540,13 @@ func (*InputInvoiceSlug) ImplementsInputInvoice() {}
// Used to buy a Telegram Star Gift, see here » for more info.
type InputInvoiceStarGift struct {
- HideName bool `tl:"flag:0,encoded_in_bitflags"`
- IncludeUpgrade bool `tl:"flag:2,encoded_in_bitflags"`
- UserID InputPeer
- GiftID int64
- Message *TextWithEntities `tl:"flag:1"`
+ HideName bool `tl:"flag:0,encoded_in_bitflags"` // If set, your name will be hidden if the destination user decides to display the gift on their profile (they will still see that you sent the gift)
+ UserID InputUser // Identifier of the user that will receive the gift
+ GiftID int64 // Identifier of the gift, from starGift.id
+ Message *TextWithEntities `tl:"flag:1"` /*
+ Optional message, attached with the gift.
+ The maximum length for this field is specified in the stargifts_message_length_max client configuration value.
+ */
}
func (*InputInvoiceStarGift) CRC() uint32 {
@@ -3521,32 +3559,6 @@ func (*InputInvoiceStarGift) FlagIndex() int {
func (*InputInvoiceStarGift) ImplementsInputInvoice() {}
-type InputInvoiceStarGiftTransfer struct {
- MsgID int32
- ToID InputUser
-}
-
-func (*InputInvoiceStarGiftTransfer) CRC() uint32 {
- return 0xae3ba9ed
-}
-
-func (*InputInvoiceStarGiftTransfer) ImplementsInputInvoice() {}
-
-type InputInvoiceStarGiftUpgrade struct {
- KeepOriginalDetails bool `tl:"flag:0,encoded_in_bitflags"`
- MsgID int32
-}
-
-func (*InputInvoiceStarGiftUpgrade) CRC() uint32 {
- return 0x5ebe7262
-}
-
-func (*InputInvoiceStarGiftUpgrade) FlagIndex() int {
- return 0
-}
-
-func (*InputInvoiceStarGiftUpgrade) ImplementsInputInvoice() {}
-
// Used to top up the Telegram Stars balance of the current account or someone else's account, or to start a Telegram Star giveaway ».
type InputInvoiceStars struct {
Purpose InputStorePaymentPurpose // An inputStorePaymentStarsGiveaway, inputStorePaymentStarsTopup or inputStorePaymentStarsGift.
@@ -4278,8 +4290,8 @@ type InputReplyTo interface {
type InputReplyToMessage struct {
ReplyToMsgID int32 // The message ID to reply to.
TopMsgID int32 `tl:"flag:0"` /*
- This field must contain the topic ID only when replying to messages in forum topics different from the "General" topic (i.e. reply_to_msg_id is set and reply_to_msg_id != topicID and topicID != 1).
- If the replied-to message is deleted before the method finishes execution, the value in this field will be used to send the message to the correct topic, instead of the "General" topic.
+ This field must contain the topic ID only when replying to messages in forum topics different from the "General" topic (i.e. reply_to_msg_id is set and reply_to_msg_id != topicID and topicID != 1).
+ If the replied-to message is deleted before the method finishes execution, the value in this field will be used to send the message to the correct topic, instead of the "General" topic.
*/
ReplyToPeerID InputPeer `tl:"flag:1"` // Used to reply to messages sent to another chat (specified here), can only be used for non-protected chats and messages.
QuoteText string `tl:"flag:2"` // Used to quote-reply to only a certain section (specified here) of the original message. The maximum UTF-8 length for quotes is specified in the quote_length_max config key.
@@ -4884,8 +4896,8 @@ type InputKeyboardButtonRequestPeer struct {
Text string // Button text
ButtonID int32 // Button ID, to be passed to messages.sendBotRequestedPeer.
PeerType RequestPeerType /*
- Filtering criteria to use for the peer selection list shown to the user.
- The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to max_quantity) peers of the specified type, if needed.
+ Filtering criteria to use for the peer selection list shown to the user.
+ The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to max_quantity) peers of the specified type, if needed.
*/
MaxQuantity int32 // Maximum number of peers that can be chosen.
}
@@ -4906,8 +4918,8 @@ type InputKeyboardButtonURLAuth struct {
Text string // Button text
FwdText string `tl:"flag:1"` // New text of the button in forwarded messages.
URL string /*
- An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.
- NOTE: You must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
+ An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.
+ NOTE: You must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
*/
Bot InputUser // Username of a bot, which will be used for user authorization. See Setting up a bot for more details. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See Linking your domain to the bot for more details.
}
@@ -5012,8 +5024,8 @@ type KeyboardButtonRequestPeer struct {
Text string // Button text
ButtonID int32 // Button ID, to be passed to messages.sendBotRequestedPeer.
PeerType RequestPeerType /*
- Filtering criteria to use for the peer selection list shown to the user.
- The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to max_quantity) peers of the specified type, if needed.
+ Filtering criteria to use for the peer selection list shown to the user.
+ The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to max_quantity) peers of the specified type, if needed.
*/
MaxQuantity int32 // Maximum number of peers that can be chosen.
}
@@ -5098,9 +5110,9 @@ type KeyboardButtonURLAuth struct {
Text string // Button label
FwdText string `tl:"flag:0"` // New text of the button in forwarded messages.
URL string /*
- An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.
+ An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.
- NOTE: Services must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
+ NOTE: Services must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
*/
ButtonID int32 // ID of the button to pass to messages.requestUrlAuth
}
@@ -5317,50 +5329,55 @@ type Message interface {
// A message
type MessageObj struct {
- Out bool `tl:"flag:1,encoded_in_bitflags"`
- Mentioned bool `tl:"flag:4,encoded_in_bitflags"`
- MediaUnread bool `tl:"flag:5,encoded_in_bitflags"`
- Silent bool `tl:"flag:13,encoded_in_bitflags"`
- Post bool `tl:"flag:14,encoded_in_bitflags"`
- FromScheduled bool `tl:"flag:18,encoded_in_bitflags"`
- Legacy bool `tl:"flag:19,encoded_in_bitflags"`
- EditHide bool `tl:"flag:21,encoded_in_bitflags"`
- Pinned bool `tl:"flag:24,encoded_in_bitflags"`
- Noforwards bool `tl:"flag:26,encoded_in_bitflags"`
- InvertMedia bool `tl:"flag:27,encoded_in_bitflags"`
- Offline bool `tl:"flag2:1,encoded_in_bitflags"`
- VideoProcessingPending bool `tl:"flag2:4,encoded_in_bitflags"`
- ID int32
- FromID Peer `tl:"flag:8"`
- FromBoostsApplied int32 `tl:"flag:29"`
- PeerID Peer
- SavedPeerID Peer `tl:"flag:28"`
- FwdFrom *MessageFwdHeader `tl:"flag:2"`
- ViaBotID int64 `tl:"flag:11"`
- ViaBusinessBotID int64 `tl:"flag2:0"`
- ReplyTo MessageReplyHeader `tl:"flag:3"`
- Date int32
- Message string
- Media MessageMedia `tl:"flag:9"`
- ReplyMarkup ReplyMarkup `tl:"flag:6"`
- Entities MessageEntity `tl:"flag:7"`
- Views int32 `tl:"flag:10"`
- Forwards int32 `tl:"flag:10"`
- Replies *MessageReplies `tl:"flag:23"`
- EditDate int32 `tl:"flag:15"`
- PostAuthor string `tl:"flag:16"`
- GroupedID int64 `tl:"flag:17"`
- Reactions *MessageReactions `tl:"flag:20"`
- RestrictionReason *RestrictionReason `tl:"flag:22"`
- TtlPeriod int32 `tl:"flag:25"`
- QuickReplyShortcutID int32 `tl:"flag:30"`
- Effect int64 `tl:"flag2:2"`
- Factcheck *FactCheck `tl:"flag2:3"`
- ReportDeliveryUntilDate int32 `tl:"flag2:5"`
+ Out bool `tl:"flag:1,encoded_in_bitflags"` // Is this an outgoing message
+ Mentioned bool `tl:"flag:4,encoded_in_bitflags"` // Whether we were mentioned in this message
+ MediaUnread bool `tl:"flag:5,encoded_in_bitflags"` // Whether there are unread media attachments in this message
+ Silent bool `tl:"flag:13,encoded_in_bitflags"` // Whether this is a silent message (no notification triggered)
+ Post bool `tl:"flag:14,encoded_in_bitflags"` // Whether this is a channel post
+ FromScheduled bool `tl:"flag:18,encoded_in_bitflags"` // Whether this is a scheduled message
+ Legacy bool `tl:"flag:19,encoded_in_bitflags"` // This is a legacy message: it has to be refetched with the new layer
+ EditHide bool `tl:"flag:21,encoded_in_bitflags"` // Whether the message should be shown as not modified to the user, even if an edit date is present
+ Pinned bool `tl:"flag:24,encoded_in_bitflags"` // Whether this message is pinned
+ Noforwards bool `tl:"flag:26,encoded_in_bitflags"` // Whether this message is protected and thus cannot be forwarded; clients should also prevent users from saving attached media (i.e. videos should only be streamed, photos should be kept in RAM, et cetera).
+ InvertMedia bool `tl:"flag:27,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
+ Offline bool `tl:"flag2:1,encoded_in_bitflags"` // If set, the message was sent because of a scheduled action by the message sender, for example, as away, or a greeting service message.
+ VideoProcessingPending bool `tl:"flag2:4,encoded_in_bitflags"` // The video contained in the message is currently being processed by the server (i.e. to generate alternative qualities, that will be contained in the final messageMediaDocument.alt_document), and will be sent once the video is processed, which will happen approximately at the specified date (i.e. messages with this flag set should be treated similarly to scheduled messages, but instead of the scheduled date, date contains the estimated conversion date)..
+ ID int32 // ID of the message
+ FromID Peer `tl:"flag:8"` // ID of the sender of the message
+ FromBoostsApplied int32 `tl:"flag:29"` /*
+ Supergroups only, contains the number of boosts this user has given the current supergroup, and should be shown in the UI in the header of the message.
+ Only present for incoming messages from non-anonymous supergroup members that have boosted the supergroup.
+ Note that this counter should be locally overridden for non-anonymous outgoing messages, according to the current value of channelFull.boosts_applied, to ensure the value is correct even for messages sent by the current user before a supergroup was boosted (or after a boost has expired or the number of boosts has changed); do not update this value for incoming messages from other users, even if their boosts have changed.
+ */
+ PeerID Peer // Peer ID, the chat where this message was sent
+ SavedPeerID Peer `tl:"flag:28"` /*
+ Messages fetched from a saved messages dialog will have peer=inputPeerSelf and the saved_peer_id flag set to the ID of the saved dialog.
+ */
+ FwdFrom *MessageFwdHeader `tl:"flag:2"` // Info about forwarded messages
+ ViaBotID int64 `tl:"flag:11"` // ID of the inline bot that generated the message
+ ViaBusinessBotID int64 `tl:"flag2:0"` // Whether the message was sent by the business bot specified in via_bot_id on behalf of the user.
+ ReplyTo MessageReplyHeader `tl:"flag:3"` // Reply information
+ Date int32 // Date of the message
+ Message string // The message
+ Media MessageMedia `tl:"flag:9"` // Media attachment
+ ReplyMarkup ReplyMarkup `tl:"flag:6"` // Reply markup (bot/inline keyboards)
+ Entities []MessageEntity `tl:"flag:7"` // Message entities for styled text
+ Views int32 `tl:"flag:10"` // View count for channel posts
+ Forwards int32 `tl:"flag:10"` // Forward counter
+ Replies *MessageReplies `tl:"flag:23"` // Info about post comments (for channels) or message replies (for groups)
+ EditDate int32 `tl:"flag:15"` // Last edit date of this message
+ PostAuthor string `tl:"flag:16"` // Name of the author of this message for channel posts (with signatures enabled)
+ GroupedID int64 `tl:"flag:17"` // Multiple media messages sent using messages.sendMultiMedia with the same grouped ID indicate an album or media group
+ Reactions *MessageReactions `tl:"flag:20"` // Reactions to this message
+ RestrictionReason []*RestrictionReason `tl:"flag:22"` // Contains the reason why access to this message must be restricted.
+ TtlPeriod int32 `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
+ QuickReplyShortcutID int32 `tl:"flag:30"` // If set, this message is a quick reply shortcut message (note that quick reply shortcut messages sent to a private chat will not have this field set).
+ Effect int64 `tl:"flag2:2"` // A message effect that should be played as specified here.
+ Factcheck *FactCheck `tl:"flag2:3"` // Represents a fact-check.
}
func (*MessageObj) CRC() uint32 {
- return 0x96fdbbe9
+ return 0x94345242
}
func (*MessageObj) FlagIndex() int {
@@ -5387,25 +5404,23 @@ func (*MessageEmpty) ImplementsMessage() {}
// Indicates a service message
type MessageService struct {
- Out bool `tl:"flag:1,encoded_in_bitflags"`
- Mentioned bool `tl:"flag:4,encoded_in_bitflags"`
- MediaUnread bool `tl:"flag:5,encoded_in_bitflags"`
- Silent bool `tl:"flag:13,encoded_in_bitflags"`
- Post bool `tl:"flag:14,encoded_in_bitflags"`
- Legacy bool `tl:"flag:19,encoded_in_bitflags"`
- ReactionsArePossible bool `tl:"flag:9,encoded_in_bitflags"`
- ID int32
- FromID Peer `tl:"flag:8"`
- PeerID Peer
- ReplyTo MessageReplyHeader `tl:"flag:3"`
- Date int32
- Action MessageAction
- Reactions *MessageReactions `tl:"flag:20"`
- TtlPeriod int32 `tl:"flag:25"`
+ Out bool `tl:"flag:1,encoded_in_bitflags"` // Whether the message is outgoing
+ Mentioned bool `tl:"flag:4,encoded_in_bitflags"` // Whether we were mentioned in the message
+ MediaUnread bool `tl:"flag:5,encoded_in_bitflags"` // Whether the message contains unread media
+ Silent bool `tl:"flag:13,encoded_in_bitflags"` // Whether the message is silent
+ Post bool `tl:"flag:14,encoded_in_bitflags"` // Whether it's a channel post
+ Legacy bool `tl:"flag:19,encoded_in_bitflags"` // This is a legacy message: it has to be refetched with the new layer
+ ID int32 // Message ID
+ FromID Peer `tl:"flag:8"` // ID of the sender of this message
+ PeerID Peer // Sender of service message
+ ReplyTo MessageReplyHeader `tl:"flag:3"` // Reply (thread) information
+ Date int32 // Message date
+ Action MessageAction // Event connected with the service message
+ TtlPeriod int32 `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}
func (*MessageService) CRC() uint32 {
- return 0xd3d28540
+ return 0x2b085862
}
func (*MessageService) FlagIndex() int {
@@ -5972,8 +5987,8 @@ func (*MessageActionSetChatTheme) ImplementsMessageAction() {}
type MessageActionSetChatWallPaper struct {
Same bool `tl:"flag:0,encoded_in_bitflags"` // If set, indicates the user applied a wallpaper previously sent by the other user in a messageActionSetChatWallPaper message.
ForBoth bool `tl:"flag:1,encoded_in_bitflags"` /*
- If set, indicates the wallpaper was forcefully applied for both sides, without explicit confirmation from the other side.
- If the message is incoming, and we did not like the new wallpaper the other user has chosen for us, we can re-set our previous wallpaper just on our side, by invoking messages.setChatWallPaper, providing only the revert flag (and obviously the peer parameter).
+ If set, indicates the wallpaper was forcefully applied for both sides, without explicit confirmation from the other side.
+ If the message is incoming, and we did not like the new wallpaper the other user has chosen for us, we can re-set our previous wallpaper just on our side, by invoking messages.setChatWallPaper, providing only the revert flag (and obviously the peer parameter).
*/
Wallpaper WallPaper // New wallpaper
}
@@ -6006,22 +6021,19 @@ func (*MessageActionSetMessagesTtl) ImplementsMessageAction() {}
// You received a gift, see here » for more info.
type MessageActionStarGift struct {
- NameHidden bool `tl:"flag:0,encoded_in_bitflags"`
- Saved bool `tl:"flag:2,encoded_in_bitflags"`
- Converted bool `tl:"flag:3,encoded_in_bitflags"`
- Upgraded bool `tl:"flag:5,encoded_in_bitflags"`
- Transferred bool `tl:"flag:6,encoded_in_bitflags"`
- CanUpgrade bool `tl:"flag:10,encoded_in_bitflags"`
- Refunded bool `tl:"flag:9,encoded_in_bitflags"`
- Gift StarGift
- Message string `tl:"flag:1"`
- ConvertStars int64 `tl:"flag:4"`
- UpgradeMsgID int32 `tl:"flag:5"`
- UpgradeStars int64 `tl:"flag:8"`
+ NameHidden bool `tl:"flag:0,encoded_in_bitflags"` // If set, the name of the sender of the gift will be hidden if the destination user decides to display the gift on their profile
+ Saved bool `tl:"flag:2,encoded_in_bitflags"` // Whether this gift was added to the destination user's profile (may be toggled using payments.saveStarGift and fetched using payments.getUserStarGifts)
+ Converted bool `tl:"flag:3,encoded_in_bitflags"` // Whether this gift was converted to Telegram Stars and cannot be displayed on the profile anymore.
+ Gift *StarGift // Info about the gift
+ Message *TextWithEntities `tl:"flag:1"` // Additional message from the sender of the gift
+ ConvertStars int64 `tl:"flag:4"` /*
+ The receiver of this gift may convert it to this many Telegram Stars, instead of displaying it on their profile page.
+ convert_stars will be equal to stars only if the gift was bought using recently bought Telegram Stars, otherwise it will be less than stars.
+ */
}
func (*MessageActionStarGift) CRC() uint32 {
- return 0xd8f4f0a7
+ return 0x8557637
}
func (*MessageActionStarGift) FlagIndex() int {
@@ -6030,26 +6042,6 @@ func (*MessageActionStarGift) FlagIndex() int {
func (*MessageActionStarGift) ImplementsMessageAction() {}
-type MessageActionStarGiftUnique struct {
- Upgrade bool `tl:"flag:0,encoded_in_bitflags"`
- Transferred bool `tl:"flag:1,encoded_in_bitflags"`
- Saved bool `tl:"flag:2,encoded_in_bitflags"`
- Refunded bool `tl:"flag:5,encoded_in_bitflags"`
- Gift StarGift
- CanExportAt int32 `tl:"flag:3"`
- TransferStars int64 `tl:"flag:4"`
-}
-
-func (*MessageActionStarGiftUnique) CRC() uint32 {
- return 0x26077b99
-}
-
-func (*MessageActionStarGiftUnique) FlagIndex() int {
- return 0
-}
-
-func (*MessageActionStarGiftUnique) ImplementsMessageAction() {}
-
// A new profile picture was suggested using photos.uploadContactProfilePhoto.
type MessageActionSuggestProfilePhoto struct {
Photo Photo // The photo that the user suggested we set as profile picture.
@@ -7650,19 +7642,18 @@ func (*PhoneCallObj) ImplementsPhoneCall() {}
// An accepted phone call
type PhoneCallAccepted struct {
- Video bool `tl:"flag:6,encoded_in_bitflags"`
- ID int64
- AccessHash int64
- Date int32
- AdminID int64
- ParticipantID int64
- GB []byte
- Protocol *PhoneCallProtocol
- ConferenceCall *InputGroupCall `tl:"flag:8"`
+ Video bool `tl:"flag:6,encoded_in_bitflags"` // Whether this is a video call
+ ID int64 // ID of accepted phone call
+ AccessHash int64 // Access hash of phone call
+ Date int32 // When was the call accepted
+ AdminID int64 // ID of the call creator
+ ParticipantID int64 // ID of the other user in the call
+ GB []byte // B parameter for secure E2E phone call key exchange
+ Protocol *PhoneCallProtocol // Protocol to use for phone call
}
func (*PhoneCallAccepted) CRC() uint32 {
- return 0x22fd7181
+ return 0x3660c311
}
func (*PhoneCallAccepted) FlagIndex() int {
@@ -7673,17 +7664,16 @@ func (*PhoneCallAccepted) ImplementsPhoneCall() {}
// Indicates a discarded phone call
type PhoneCallDiscarded struct {
- NeedRating bool `tl:"flag:2,encoded_in_bitflags"`
- NeedDebug bool `tl:"flag:3,encoded_in_bitflags"`
- Video bool `tl:"flag:6,encoded_in_bitflags"`
- ID int64
- Reason PhoneCallDiscardReason `tl:"flag:0"`
- Duration int32 `tl:"flag:1"`
- ConferenceCall *InputGroupCall `tl:"flag:8"`
+ NeedRating bool `tl:"flag:2,encoded_in_bitflags"` // Whether the server required the user to rate the call
+ NeedDebug bool `tl:"flag:3,encoded_in_bitflags"` // Whether the server required the client to send the libtgvoip call debug data
+ Video bool `tl:"flag:6,encoded_in_bitflags"` // Whether the call was a video call
+ ID int64 // Call ID
+ Reason PhoneCallDiscardReason `tl:"flag:0"` // Why was the phone call discarded
+ Duration int32 `tl:"flag:1"` // Duration of the phone call in seconds
}
func (*PhoneCallDiscarded) CRC() uint32 {
- return 0xf9d25503
+ return 0x50ca4de1
}
func (*PhoneCallDiscarded) FlagIndex() int {
@@ -7705,19 +7695,18 @@ func (*PhoneCallEmpty) ImplementsPhoneCall() {}
// Requested phone call
type PhoneCallRequested struct {
- Video bool `tl:"flag:6,encoded_in_bitflags"`
- ID int64
- AccessHash int64
- Date int32
- AdminID int64
- ParticipantID int64
- GAHash []byte
- Protocol *PhoneCallProtocol
- ConferenceCall *InputGroupCall `tl:"flag:8"`
+ Video bool `tl:"flag:6,encoded_in_bitflags"` // Whether this is a video call
+ ID int64 // Phone call ID
+ AccessHash int64 // Access hash
+ Date int32 // When was the phone call created
+ AdminID int64 // ID of the creator of the phone call
+ ParticipantID int64 // ID of the other participant of the phone call
+ GAHash []byte // Parameter for key exchange
+ Protocol *PhoneCallProtocol // Call protocol info to be passed to libtgvoip
}
func (*PhoneCallRequested) CRC() uint32 {
- return 0x45361c63
+ return 0x14b0ed0c
}
func (*PhoneCallRequested) FlagIndex() int {
@@ -7728,19 +7717,18 @@ func (*PhoneCallRequested) ImplementsPhoneCall() {}
// Incoming phone call
type PhoneCallWaiting struct {
- Video bool `tl:"flag:6,encoded_in_bitflags"`
- ID int64
- AccessHash int64
- Date int32
- AdminID int64
- ParticipantID int64
- Protocol *PhoneCallProtocol
- ReceiveDate int32 `tl:"flag:0"`
- ConferenceCall *InputGroupCall `tl:"flag:8"`
+ Video bool `tl:"flag:6,encoded_in_bitflags"` // Is this a video call
+ ID int64 // Call ID
+ AccessHash int64 // Access hash
+ Date int32 // Date
+ AdminID int64 // Admin ID
+ ParticipantID int64 // Participant ID
+ Protocol *PhoneCallProtocol // Phone call protocol info
+ ReceiveDate int32 `tl:"flag:0"` // When was the phone call received
}
func (*PhoneCallWaiting) CRC() uint32 {
- return 0xeed42858
+ return 0xc5226f17
}
func (*PhoneCallWaiting) FlagIndex() int {
@@ -7749,56 +7737,6 @@ func (*PhoneCallWaiting) FlagIndex() int {
func (*PhoneCallWaiting) ImplementsPhoneCall() {}
-type PhoneCallDiscardReason interface {
- tl.Object
- ImplementsPhoneCallDiscardReason()
-}
-type PhoneCallDiscardReasonAllowGroupCall struct {
- EncryptedKey []byte
-}
-
-func (*PhoneCallDiscardReasonAllowGroupCall) CRC() uint32 {
- return 0xafe2b839
-}
-
-func (*PhoneCallDiscardReasonAllowGroupCall) ImplementsPhoneCallDiscardReason() {}
-
-// The phone call was discarded because the user is busy in another call
-type PhoneCallDiscardReasonBusy struct{}
-
-func (*PhoneCallDiscardReasonBusy) CRC() uint32 {
- return 0xfaf7e8c9
-}
-
-func (*PhoneCallDiscardReasonBusy) ImplementsPhoneCallDiscardReason() {}
-
-// The phone call was disconnected
-type PhoneCallDiscardReasonDisconnect struct{}
-
-func (*PhoneCallDiscardReasonDisconnect) CRC() uint32 {
- return 0xe095c1a0
-}
-
-func (*PhoneCallDiscardReasonDisconnect) ImplementsPhoneCallDiscardReason() {}
-
-// The phone call was ended normally
-type PhoneCallDiscardReasonHangup struct{}
-
-func (*PhoneCallDiscardReasonHangup) CRC() uint32 {
- return 0x57adc690
-}
-
-func (*PhoneCallDiscardReasonHangup) ImplementsPhoneCallDiscardReason() {}
-
-// The phone call was missed
-type PhoneCallDiscardReasonMissed struct{}
-
-func (*PhoneCallDiscardReasonMissed) CRC() uint32 {
- return 0x85e42301
-}
-
-func (*PhoneCallDiscardReasonMissed) ImplementsPhoneCallDiscardReason() {}
-
type PhoneConnection interface {
tl.Object
ImplementsPhoneConnection()
@@ -8311,8 +8249,8 @@ func (*ReplyInlineMarkup) ImplementsReplyMarkup() {}
type ReplyKeyboardForceReply struct {
SingleUse bool `tl:"flag:1,encoded_in_bitflags"` // Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again.
Selective bool `tl:"flag:2,encoded_in_bitflags"` /*
- Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
- Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.
+ Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
+ Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.
*/
Placeholder string `tl:"flag:3"` // The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.
}
@@ -8330,9 +8268,9 @@ func (*ReplyKeyboardForceReply) ImplementsReplyMarkup() {}
// Hide sent bot keyboard
type ReplyKeyboardHide struct {
Selective bool `tl:"flag:2,encoded_in_bitflags"` /*
- Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
+ Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
- Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet
+ Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet
*/
}
@@ -8351,9 +8289,9 @@ type ReplyKeyboardMarkup struct {
Resize bool `tl:"flag:0,encoded_in_bitflags"` // Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). If not set, the custom keyboard is always of the same height as the app's standard keyboard.
SingleUse bool `tl:"flag:1,encoded_in_bitflags"` // Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again.
Selective bool `tl:"flag:2,encoded_in_bitflags"` /*
- Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
+ Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
- Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.
+ Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.
*/
Persistent bool `tl:"flag:4,encoded_in_bitflags"` // Requests clients to always show the keyboard when the regular keyboard is hidden.
Rows []*KeyboardButtonRow // Button row
@@ -8420,9 +8358,9 @@ type RequestPeerType interface {
// Choose a channel
type RequestPeerTypeBroadcast struct {
Creator bool `tl:"flag:0,encoded_in_bitflags"` // Whether to allow only choosing channels that were created by the current user.
- UserAdminRights *ChatAdminRights `tl:"flag:1"` // If specified, allows only choosing channels with or without a username, according to the value of Bool.
- BotAdminRights *ChatAdminRights `tl:"flag:2"` // If specified, allows only choosing channels where the current user is an admin with at least the specified admin rights.
- HasUsername bool `tl:"flag:3"` // If specified, allows only choosing channels where the bot is an admin with at least the specified admin rights.
+ HasUsername bool `tl:"flag:3"` // If specified, allows only choosing channels with or without a username, according to the value of Bool.
+ UserAdminRights *ChatAdminRights `tl:"flag:1"` // If specified, allows only choosing channels where the current user is an admin with at least the specified admin rights.
+ BotAdminRights *ChatAdminRights `tl:"flag:2"` // If specified, allows only choosing channels where the bot is an admin with at least the specified admin rights.
}
func (*RequestPeerTypeBroadcast) CRC() uint32 {
@@ -8438,11 +8376,11 @@ func (*RequestPeerTypeBroadcast) ImplementsRequestPeerType() {}
// Choose a chat or supergroup
type RequestPeerTypeChat struct {
Creator bool `tl:"flag:0,encoded_in_bitflags"` // Whether to allow only choosing chats or supergroups that were created by the current user.
- UserAdminRights *ChatAdminRights `tl:"flag:1"` // Whether to allow only choosing chats or supergroups where the bot is a participant.
- BotAdminRights *ChatAdminRights `tl:"flag:2"` // If specified, allows only choosing channels with or without a username, according to the value of Bool.
- BotParticipant bool `tl:"flag:5,encoded_in_bitflags"` // If specified, allows only choosing chats or supergroups that are or aren't forums, according to the value of Bool.
- HasUsername bool `tl:"flag:3"` // If specified, allows only choosing chats or supergroups where the current user is an admin with at least the specified admin rights.
- Forum bool `tl:"flag:4"` // If specified, allows only choosing chats or supergroups where the bot is an admin with at least the specified admin rights.
+ HasUsername bool `tl:"flag:3"` // Whether to allow only choosing chats or supergroups where the bot is a participant.
+ Forum bool `tl:"flag:4"` // If specified, allows only choosing channels with or without a username, according to the value of Bool.
+ UserAdminRights *ChatAdminRights `tl:"flag:1"` // If specified, allows only choosing chats or supergroups that are or aren't forums, according to the value of Bool.
+ BotAdminRights *ChatAdminRights `tl:"flag:2"` // If specified, allows only choosing chats or supergroups where the current user is an admin with at least the specified admin rights.
+ BotParticipant bool `tl:"flag:5,encoded_in_bitflags"` // If specified, allows only choosing chats or supergroups where the bot is an admin with at least the specified admin rights.
}
func (*RequestPeerTypeChat) CRC() uint32 {
@@ -9152,114 +9090,6 @@ func (*SpeakingInGroupCallAction) CRC() uint32 {
func (*SpeakingInGroupCallAction) ImplementsSendMessageAction() {}
-type StarGift interface {
- tl.Object
- ImplementsStarGift()
-}
-
-// Represents a star gift, see here » for more info.
-type StarGiftObj struct {
- Limited bool `tl:"flag:0,encoded_in_bitflags"`
- SoldOut bool `tl:"flag:1,encoded_in_bitflags"`
- Birthday bool `tl:"flag:2,encoded_in_bitflags"`
- CanUpgrade bool `tl:"flag:3,encoded_in_bitflags"`
- ID int64
- Sticker Document
- Stars int64
- AvailabilityRemains int32 `tl:"flag:0"`
- AvailabilityTotal int32 `tl:"flag:0"`
- ConvertStars int64
- FirstSaleDate int32 `tl:"flag:1"`
- LastSaleDate int32 `tl:"flag:1"`
- UpgradeStars int64 `tl:"flag:3"`
-}
-
-func (*StarGiftObj) CRC() uint32 {
- return 0x2cc73c8
-}
-
-func (*StarGiftObj) FlagIndex() int {
- return 0
-}
-
-func (*StarGiftObj) ImplementsStarGift() {}
-
-type StarGiftUnique struct {
- ID int64
- Title string
- Num int32
- OwnerID int64
- Attributes StarGiftAttribute
- AvailabilityIssued int32
- AvailabilityTotal int32
-}
-
-func (*StarGiftUnique) CRC() uint32 {
- return 0x6a1407cd
-}
-
-func (*StarGiftUnique) ImplementsStarGift() {}
-
-type StarGiftAttribute interface {
- tl.Object
- ImplementsStarGiftAttribute()
-}
-type StarGiftAttributeBackdrop struct {
- Name string
- CenterColor int32
- EdgeColor int32
- PatternColor int32
- TextColor int32
- RarityPermille int32
-}
-
-func (*StarGiftAttributeBackdrop) CRC() uint32 {
- return 0x94271762
-}
-
-func (*StarGiftAttributeBackdrop) ImplementsStarGiftAttribute() {}
-
-type StarGiftAttributeModel struct {
- Name string
- Document Document
- RarityPermille int32
-}
-
-func (*StarGiftAttributeModel) CRC() uint32 {
- return 0x39d99013
-}
-
-func (*StarGiftAttributeModel) ImplementsStarGiftAttribute() {}
-
-type StarGiftAttributeOriginalDetails struct {
- SenderID int64 `tl:"flag:0"`
- RecipientID int64
- Date int32
- Message *TextWithEntities `tl:"flag:1"`
-}
-
-func (*StarGiftAttributeOriginalDetails) CRC() uint32 {
- return 0xc02c4f4b
-}
-
-func (*StarGiftAttributeOriginalDetails) FlagIndex() int {
- return 0
-}
-
-func (*StarGiftAttributeOriginalDetails) ImplementsStarGiftAttribute() {}
-
-type StarGiftAttributePattern struct {
- Name string
- Document Document
- RarityPermille int32
-}
-
-func (*StarGiftAttributePattern) CRC() uint32 {
- return 0x13acff19
-}
-
-func (*StarGiftAttributePattern) ImplementsStarGiftAttribute() {}
-
type StarsTransactionPeer interface {
tl.Object
ImplementsStarsTransactionPeer()
@@ -10355,8 +10185,8 @@ type UpdateDeleteScheduledMessages struct {
Peer Peer // Peer
Messages []int32 // Deleted scheduled messages
SentMessages []int32 `tl:"flag:0"` /*
- If set, this update indicates that some scheduled messages were sent (not simply deleted from the schedule queue).
- In this case, the messages field will contain the scheduled message IDs for the sent messages (initially returned in updateNewScheduledMessage), and sent_messages will contain the real message IDs for the sent messages.
+ If set, this update indicates that some scheduled messages were sent (not simply deleted from the schedule queue).
+ In this case, the messages field will contain the scheduled message IDs for the sent messages (initially returned in updateNewScheduledMessage), and sent_messages will contain the real message IDs for the sent messages.
*/
}
@@ -10737,10 +10567,11 @@ func (*UpdateMoveStickerSetToTop) ImplementsUpdate() {}
// A new session logged into the current user's account through an unknown device.
type UpdateNewAuthorization struct {
- Unconfirmed bool `tl:"flag:0,encoded_in_bitflags"`
- Date int32 `tl:"flag:0"`
- Device string `tl:"flag:0"`
- Location string `tl:"flag:0"`
+ Unconfirmed bool `tl:"flag:0,encoded_in_bitflags"` // Whether the session is unconfirmed,.
+ Hash int64 // Hash used for caching, for more info click here
+ Date int32 `tl:"flag:0"` // Authorization date
+ Device string `tl:"flag:0"` // Name of device, for example Android
+ Location string `tl:"flag:0"` // Location, for example USA, NY (IP=1.2.3.4)
}
func (*UpdateNewAuthorization) CRC() uint32 {
@@ -11314,8 +11145,8 @@ type UpdateServiceNotification struct {
Popup bool `tl:"flag:0,encoded_in_bitflags"` // If set, the message must be displayed in a popup.
InvertMedia bool `tl:"flag:2,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
InboxDate int32 `tl:"flag:1"` /*
- When was the notification received
- The message must also be stored locally as part of the message history with the user id 777000 (Telegram Notifications).
+ When was the notification received
+ The message must also be stored locally as part of the message history with the user id 777000 (Telegram Notifications).
*/
Type string // String, identical in format and contents to the type field in API errors. Describes type of service message. It is acceptable to ignore repeated messages of the same type within a short period of time (15 minutes).
Message string // Message text
@@ -11344,17 +11175,6 @@ func (*UpdateSmsJob) CRC() uint32 {
func (*UpdateSmsJob) ImplementsUpdate() {}
-type UpdateStarGiftUpgraded struct {
- Gift *UserStarGift
- ToGift *UserStarGift
-}
-
-func (*UpdateStarGiftUpgraded) CRC() uint32 {
- return 0x767cde44
-}
-
-func (*UpdateStarGiftUpgraded) ImplementsUpdate() {}
-
// The current account's Telegram Stars balance » has changed.
type UpdateStarsBalance struct {
Balance *StarsAmount // New balance.
@@ -11596,7 +11416,8 @@ type Updates interface {
// Shortened constructor containing info on one update not requiring auxiliary data
type UpdateShort struct {
- Update Update
+ Update Update // Update
+ Date int32 // Date of event
}
func (*UpdateShort) CRC() uint32 {
@@ -11607,15 +11428,22 @@ func (*UpdateShort) ImplementsUpdates() {}
// Shortened constructor containing info on one new incoming text message from a chat
type UpdateShortChatMessage struct {
- Out bool `tl:"flag:1,encoded_in_bitflags"`
- Mentioned bool `tl:"flag:4,encoded_in_bitflags"`
- MediaUnread bool `tl:"flag:5,encoded_in_bitflags"`
- Silent bool `tl:"flag:13,encoded_in_bitflags"`
- FwdFrom *MessageFwdHeader `tl:"flag:2"`
- ReplyTo MessageReplyHeader `tl:"flag:3"`
- ViaBotID int64 `tl:"flag:11"`
- Entities []MessageEntity `tl:"flag:7"`
- TtlPeriod int32 `tl:"flag:25"`
+ Out bool `tl:"flag:1,encoded_in_bitflags"` // Whether the message is outgoing
+ Mentioned bool `tl:"flag:4,encoded_in_bitflags"` // Whether we were mentioned in this message
+ MediaUnread bool `tl:"flag:5,encoded_in_bitflags"` // Whether the message contains some unread mentions
+ Silent bool `tl:"flag:13,encoded_in_bitflags"` // If true, the message is a silent message, no notifications should be triggered
+ ID int32 // ID of the message
+ FromID int64 // ID of the sender of the message
+ ChatID int64 // ID of the chat where the message was sent
+ Message string // Message
+ Pts int32 // PTS
+ PtsCount int32 // PTS count
+ Date int32 // date
+ FwdFrom *MessageFwdHeader `tl:"flag:2"` // Info about a forwarded message
+ ViaBotID int64 `tl:"flag:11"` // Info about the inline bot used to generate this message
+ ReplyTo MessageReplyHeader `tl:"flag:3"` // Reply (thread) information
+ Entities []MessageEntity `tl:"flag:7"` // Entities for styled text
+ TtlPeriod int32 `tl:"flag:25"` // Time To Live of the message, once updateShortChatMessage.date+updateShortChatMessage.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}
func (*UpdateShortChatMessage) CRC() uint32 {
@@ -11630,15 +11458,21 @@ func (*UpdateShortChatMessage) ImplementsUpdates() {}
// Info about a message sent to (received from) another user
type UpdateShortMessage struct {
- Out bool `tl:"flag:1,encoded_in_bitflags"`
- Mentioned bool `tl:"flag:4,encoded_in_bitflags"`
- MediaUnread bool `tl:"flag:5,encoded_in_bitflags"`
- Silent bool `tl:"flag:13,encoded_in_bitflags"`
- FwdFrom *MessageFwdHeader `tl:"flag:2"`
- ReplyTo MessageReplyHeader `tl:"flag:3"`
- ViaBotID int64 `tl:"flag:11"`
- Entities []MessageEntity `tl:"flag:7"`
- TtlPeriod int32 `tl:"flag:25"`
+ Out bool `tl:"flag:1,encoded_in_bitflags"` // Whether the message is outgoing
+ Mentioned bool `tl:"flag:4,encoded_in_bitflags"` // Whether we were mentioned in the message
+ MediaUnread bool `tl:"flag:5,encoded_in_bitflags"` // Whether there are some unread mentions in this message
+ Silent bool `tl:"flag:13,encoded_in_bitflags"` // If true, the message is a silent message, no notifications should be triggered
+ ID int32 // The message ID
+ UserID int64 // The ID of the sender (if outgoing will be the ID of the destination) of the message
+ Message string // The message
+ Pts int32 // PTS
+ PtsCount int32 // PTS count
+ Date int32 // date
+ FwdFrom *MessageFwdHeader `tl:"flag:2"` // Info about a forwarded message
+ ViaBotID int64 `tl:"flag:11"` // Info about the inline bot used to generate this message
+ ReplyTo MessageReplyHeader `tl:"flag:3"` // Reply and thread information
+ Entities []MessageEntity `tl:"flag:7"` // Entities for styled text
+ TtlPeriod int32 `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}
func (*UpdateShortMessage) CRC() uint32 {
@@ -11653,10 +11487,14 @@ func (*UpdateShortMessage) ImplementsUpdates() {}
// Shortened constructor containing info on one outgoing message to a contact (the destination chat has to be extracted from the method call that returned this object).
type UpdateShortSentMessage struct {
- Out bool `tl:"flag:1,encoded_in_bitflags"`
- Media MessageMedia `tl:"flag:9"`
- Entities []MessageEntity `tl:"flag:7"`
- TtlPeriod int32 `tl:"flag:25"`
+ Out bool `tl:"flag:1,encoded_in_bitflags"` // Whether the message is outgoing
+ ID int32 // ID of the sent message
+ Pts int32 // PTS
+ PtsCount int32 // PTS count
+ Date int32 // date
+ Media MessageMedia `tl:"flag:9"` // Attached media
+ Entities []MessageEntity `tl:"flag:7"` // Entities for styled text
+ TtlPeriod int32 `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}
func (*UpdateShortSentMessage) CRC() uint32 {
@@ -11670,7 +11508,13 @@ func (*UpdateShortSentMessage) FlagIndex() int {
func (*UpdateShortSentMessage) ImplementsUpdates() {}
// Full constructor of updates
-type UpdatesObj struct{}
+type UpdatesObj struct {
+ Updates []Update // List of updates
+ Users []User // List of users mentioned in updates
+ Chats []Chat // List of chats mentioned in updates
+ Date int32 // Current date
+ Seq int32 // Total number of sent updates
+}
func (*UpdatesObj) CRC() uint32 {
return 0x74ae4240
@@ -11679,7 +11523,14 @@ func (*UpdatesObj) CRC() uint32 {
func (*UpdatesObj) ImplementsUpdates() {}
// Constructor for a group of updates.
-type UpdatesCombined struct{}
+type UpdatesCombined struct {
+ Updates []Update // List of updates
+ Users []User // List of users mentioned in updates
+ Chats []Chat // List of chats mentioned in updates
+ Date int32 // Current date
+ SeqStart int32 // Value seq for the earliest update in a group
+ Seq int32 // Value seq for the latest update in a group
+}
func (*UpdatesCombined) CRC() uint32 {
return 0x725b04c3
@@ -11745,54 +11596,157 @@ type User interface {
// Indicates info about a certain user.
type UserObj struct {
- Self bool `tl:"flag:10,encoded_in_bitflags"`
- Contact bool `tl:"flag:11,encoded_in_bitflags"`
- MutualContact bool `tl:"flag:12,encoded_in_bitflags"`
- Deleted bool `tl:"flag:13,encoded_in_bitflags"`
- Bot bool `tl:"flag:14,encoded_in_bitflags"`
- BotChatHistory bool `tl:"flag:15,encoded_in_bitflags"`
- BotNochats bool `tl:"flag:16,encoded_in_bitflags"`
- Verified bool `tl:"flag:17,encoded_in_bitflags"`
- Restricted bool `tl:"flag:18,encoded_in_bitflags"`
- Min bool `tl:"flag:20,encoded_in_bitflags"`
- BotInlineGeo bool `tl:"flag:21,encoded_in_bitflags"`
- Support bool `tl:"flag:23,encoded_in_bitflags"`
- Scam bool `tl:"flag:24,encoded_in_bitflags"`
- ApplyMinPhoto bool `tl:"flag:25,encoded_in_bitflags"`
- Fake bool `tl:"flag:26,encoded_in_bitflags"`
- BotAttachMenu bool `tl:"flag:27,encoded_in_bitflags"`
- Premium bool `tl:"flag:28,encoded_in_bitflags"`
- AttachMenuEnabled bool `tl:"flag:29,encoded_in_bitflags"`
- BotCanEdit bool `tl:"flag2:1,encoded_in_bitflags"`
- CloseFriend bool `tl:"flag2:2,encoded_in_bitflags"`
- StoriesHidden bool `tl:"flag2:3,encoded_in_bitflags"`
- StoriesUnavailable bool `tl:"flag2:4,encoded_in_bitflags"`
- ContactRequirePremium bool `tl:"flag2:10,encoded_in_bitflags"`
- BotBusiness bool `tl:"flag2:11,encoded_in_bitflags"`
- BotHasMainApp bool `tl:"flag2:13,encoded_in_bitflags"`
- ID int64
- AccessHash int64 `tl:"flag:0"`
- FirstName string `tl:"flag:1"`
- LastName string `tl:"flag:2"`
- Username string `tl:"flag:3"`
- Phone string `tl:"flag:4"`
- Photo UserProfilePhoto `tl:"flag:5"`
- Status UserStatus `tl:"flag:6"`
- BotInfoVersion int32 `tl:"flag:14"`
- RestrictionReason *RestrictionReason `tl:"flag:18"`
- BotInlinePlaceholder string `tl:"flag:19"`
- LangCode string `tl:"flag:22"`
- EmojiStatus EmojiStatus `tl:"flag:30"`
- Usernames *Username `tl:"flag2:0"`
- StoriesMaxID int32 `tl:"flag2:5"`
- Color *PeerColor `tl:"flag2:8"`
- ProfileColor *PeerColor `tl:"flag2:9"`
- BotActiveUsers int32 `tl:"flag2:12"`
- BotVerificationIcon int64 `tl:"flag2:14"`
+ Self bool `tl:"flag:10,encoded_in_bitflags"` // Whether this user indicates the currently logged in user
+ Contact bool `tl:"flag:11,encoded_in_bitflags"` /*
+ Whether this user is a contact
+ When updating the local peer database, do not apply changes to this field if the min flag is set.
+ */
+ MutualContact bool `tl:"flag:12,encoded_in_bitflags"` /*
+ Whether this user is a mutual contact.
+ When updating the local peer database, do not apply changes to this field if the min flag is set.
+ */
+ Deleted bool `tl:"flag:13,encoded_in_bitflags"` /*
+ Whether the account of this user was deleted.
+ Changes to this flag should invalidate the local userFull cache for this user ID,.
+ */
+ Bot bool `tl:"flag:14,encoded_in_bitflags"` /*
+ Is this user a bot?
+ Changes to this flag should invalidate the local userFull cache for this user ID,.
+ */
+ BotChatHistory bool `tl:"flag:15,encoded_in_bitflags"` // Can the bot see all messages in groups?
+ BotNochats bool `tl:"flag:16,encoded_in_bitflags"` // Can the bot be added to groups?
+ Verified bool `tl:"flag:17,encoded_in_bitflags"` // Whether this user is verified
+ Restricted bool `tl:"flag:18,encoded_in_bitflags"` // Access to this user must be restricted for the reason specified in restriction_reason
+ Min bool `tl:"flag:20,encoded_in_bitflags"` // See min
+ BotInlineGeo bool `tl:"flag:21,encoded_in_bitflags"` // Whether the bot can request our geolocation in inline mode
+ Support bool `tl:"flag:23,encoded_in_bitflags"` // Whether this is an official support user
+ Scam bool `tl:"flag:24,encoded_in_bitflags"` // This may be a scam user
+ ApplyMinPhoto bool `tl:"flag:25,encoded_in_bitflags"` // If set and min is set, the value of photo can be used to update the local database, see the documentation of that flag for more info.
+ Fake bool `tl:"flag:26,encoded_in_bitflags"` // If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.
+ BotAttachMenu bool `tl:"flag:27,encoded_in_bitflags"` // Whether this bot offers an attachment menu web app
+ Premium bool `tl:"flag:28,encoded_in_bitflags"` /*
+ Whether this user is a Telegram Premium user
+ Changes to this flag should invalidate the local userFull cache for this user ID,.
+ Changes to this flag if the self flag is set should also trigger the following calls, to refresh the respective caches:
+ - The help.getConfig cache
+ - The messages.getTopReactions cache if the bot flag is not set
+ */
+ AttachMenuEnabled bool `tl:"flag:29,encoded_in_bitflags"` /*
+ Whether we installed the attachment menu web app offered by this bot.
+ When updating the local peer database, do not apply changes to this field if the min flag is set.
+ */
+ BotCanEdit bool `tl:"flag2:1,encoded_in_bitflags"` /*
+ Whether we can edit the profile picture, name, about text and description of this bot because we own it.
+ When updating the local peer database, do not apply changes to this field if the min flag is set.
+ Changes to this flag (if min is not set) should invalidate the local userFull cache for this user ID.
+ */
+ CloseFriend bool `tl:"flag2:2,encoded_in_bitflags"` /*
+ Whether we marked this user as a close friend,.
+ When updating the local peer database, do not apply changes to this field if the min flag is set.
+ */
+ StoriesHidden bool `tl:"flag2:3,encoded_in_bitflags"` /*
+ Whether we have hidden all active stories of this user.
+ When updating the local peer database, do not apply changes to this field if the min flag is set.
+ */
+ StoriesUnavailable bool `tl:"flag2:4,encoded_in_bitflags"` // No stories from this user are visible.
+ ContactRequirePremium bool `tl:"flag2:10,encoded_in_bitflags"` /*
+ If set, we can only write to this user if they have already sent some messages to us, if we are subscribed to Telegram Premium, or if they're a mutual contact (user.mutual_contact).
+ All the secondary conditions listed above must be checked separately to verify whether we can still write to the user, even if this flag is set (i.e. a mutual contact will have this flag set even if we can still write to them, and so on...); to avoid doing these extra checks if we haven't yet cached all the required information (for example while displaying the chat list in the sharing UI) the users.getIsPremiumRequiredToContact method may be invoked instead, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user; alternatively, the userFull.contact_require_premium flag contains the same (fully checked, i.e. it's not just a copy of this flag) info returned by users.getIsPremiumRequiredToContact.
+ To set this flag for ourselves invoke account.setGlobalPrivacySettings, setting the settings.new_noncontact_peers_require_premium flag.
+ */
+ BotBusiness bool `tl:"flag2:11,encoded_in_bitflags"` // Whether this bot can be connected to a user as specified here.
+ BotHasMainApp bool `tl:"flag2:13,encoded_in_bitflags"` // If set, this bot has configured a Main Mini App.
+ ID int64 // ID of the user,.
+ AccessHash int64 `tl:"flag:0"` /*
+ Access hash of the user,.
+ If this flag is set, when updating the local peer database, generate a virtual flag called min_access_hash, which is:
+ - Set to true if min is set AND
+ -- The phone flag is not set OR
+ -- The phone flag is set and the associated phone number string is non-empty
+ - Set to false otherwise.
+
+ Then, apply both access_hash and min_access_hash to the local database if:
+ - min_access_hash is false OR
+ - min_access_hash is true AND
+ -- There is no locally cached object for this user OR
+ -- There is no access_hash in the local cache OR
+ -- The cached object's min_access_hash is also true
+
+ If the final merged object stored to the database has the min_access_hash field set to true, the related access_hash is only suitable to use in inputPeerPhotoFileLocation , to directly download the profile pictures of users, everywhere else a inputPeer*FromMessage constructor will have to be generated as specified here.
+ Bots can also use min access hashes in some conditions, by passing 0 instead of the min access hash.
+ */
+ FirstName string `tl:"flag:1"` /*
+ First name.
+ When updating the local peer database, apply changes to this field only if:
+ - The min flag is not set OR
+ - The min flag is set AND
+ -- The min flag of the locally cached user entry is set.
+ */
+ LastName string `tl:"flag:2"` /*
+ Last name.
+ When updating the local peer database, apply changes to this field only if:
+ - The min flag is not set OR
+ - The min flag is set AND
+ -- The min flag of the locally cached user entry is set.
+ */
+ Username string `tl:"flag:3"` /*
+ Main active username.
+ When updating the local peer database, apply changes to this field only if:
+ - The min flag is not set OR
+ - The min flag is set AND
+ -- The min flag of the locally cached user entry is set.
+ Changes to this flag should invalidate the local userFull cache for this user ID if the above conditions are respected and the bot_can_edit flag is also set.
+ */
+ Phone string `tl:"flag:4"` /*
+ Phone number.
+ When updating the local peer database, apply changes to this field only if:
+ - The min flag is not set OR
+ - The min flag is set AND
+ -- The min flag of the locally cached user entry is set.
+ */
+ Photo UserProfilePhoto `tl:"flag:5"` /*
+ Profile picture of user.
+ When updating the local peer database, apply changes to this field only if:
+ - The min flag is not set OR
+ - The min flag is set AND
+ -- The apply_min_photo flag is set OR
+ -- The min flag of the locally cached user entry is set.
+ */
+ Status UserStatus `tl:"flag:6"` /*
+ Online status of user.
+ When updating the local peer database, apply changes to this field only if:
+ - The min flag is not set OR
+ - The min flag is set AND
+ -- The min flag of the locally cached user entry is set OR
+ -- The locally cached user entry is equal to userStatusEmpty.
+ */
+ BotInfoVersion int32 `tl:"flag:14"` /*
+ Version of the bot_info field in userFull, incremented every time it changes.
+ Changes to this flag should invalidate the local userFull cache for this user ID,.
+ */
+ RestrictionReason []*RestrictionReason `tl:"flag:18"` // Contains the reason why access to this user must be restricted.
+ BotInlinePlaceholder string `tl:"flag:19"` // Inline placeholder for this inline bot
+ LangCode string `tl:"flag:22"` // Language code of the user
+ EmojiStatus EmojiStatus `tl:"flag:30"` // Emoji status
+ Usernames []*Username `tl:"flag2:0"` /*
+ Additional usernames.
+ When updating the local peer database, apply changes to this field only if:
+ - The min flag is not set OR
+ - The min flag is set AND
+ -- The min flag of the locally cached user entry is set.
+ Changes to this flag (if the above conditions are respected) should invalidate the local userFull cache for this user ID.
+ */
+ StoriesMaxID int32 `tl:"flag2:5"` /*
+ ID of the maximum read story.
+ When updating the local peer database, do not apply changes to this field if the min flag of the incoming constructor is set.
+ */
+ Color *PeerColor `tl:"flag2:8"` // The user's accent color.
+ ProfileColor *PeerColor `tl:"flag2:9"` // The user's profile color.
+ BotActiveUsers int32 `tl:"flag2:12"` // Monthly Active Users (MAU) of this bot (may be absent for small bots).
}
func (*UserObj) CRC() uint32 {
- return 0x4b46c37e
+ return 0x83314fca
}
func (*UserObj) FlagIndex() int {
@@ -12752,16 +12706,15 @@ type ChatlistsChatlistInvite interface {
// Info about a chat folder deep link ».
type ChatlistsChatlistInviteObj struct {
- TitleNoanimate bool `tl:"flag:1,encoded_in_bitflags"`
- Title *TextWithEntities
- Emoticon string `tl:"flag:0"`
- Peers Peer
- Chats Chat
- Users User
+ Title string // Name of the link
+ Emoticon string `tl:"flag:0"` // Emoji to use as icon for the folder.
+ Peers []Peer // Supergroups and channels to join
+ Chats []Chat // Related chat information
+ Users []User // Related user information
}
func (*ChatlistsChatlistInviteObj) CRC() uint32 {
- return 0xf10ece2f
+ return 0x1dcd839d
}
func (*ChatlistsChatlistInviteObj) FlagIndex() int {
@@ -12772,10 +12725,11 @@ func (*ChatlistsChatlistInviteObj) ImplementsChatlistsChatlistInvite() {}
// Updated info about a chat folder deep link » we already imported.
type ChatlistsChatlistInviteAlready struct {
- MissingPeers []Peer
- AlreadyPeers []Peer
- Chats []Chat
- Users []User
+ FilterID int32 // ID of the imported folder
+ MissingPeers []Peer // New peers to be imported
+ AlreadyPeers []Peer // Peers that were already imported
+ Chats []Chat // Related chat information
+ Users []User // Related user information
}
func (*ChatlistsChatlistInviteAlready) CRC() uint32 {
@@ -13572,8 +13526,8 @@ type MessagesChannelMessages struct {
Pts int32 // Event count after generation
Count int32 // Total number of results were found server-side (may not be all included here)
OffsetIDOffset int32 `tl:"flag:2"` /*
- Indicates the absolute position of messages[0] within the total result set with count count.
- This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
+ Indicates the absolute position of messages[0] within the total result set with count count.
+ This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
*/
Messages []Message // Found messages
Topics []ForumTopic // Forum topic information
@@ -13621,8 +13575,8 @@ type MessagesMessagesSlice struct {
Count int32 // Total number of messages in the list
NextRate int32 `tl:"flag:0"` // Rate to use in the offset_rate parameter in the next call to messages.searchGlobal
OffsetIDOffset int32 `tl:"flag:2"` /*
- Indicates the absolute position of messages[0] within the total result set with count count.
- This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
+ Indicates the absolute position of messages[0] within the total result set with count count.
+ This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
*/
Messages []Message // List of messages
Chats []Chat // List of chats mentioned in messages
@@ -14022,19 +13976,19 @@ type PaymentsPaymentFormObj struct {
ProviderID int64 // Payment provider ID.
URL string // Payment form URL
NativeProvider string `tl:"flag:4"` /*
- Payment provider name.
- One of the following:
- - stripe
+ Payment provider name.
+ One of the following:
+ - stripe
*/
NativeParams *DataJson `tl:"flag:4"` /*
- Contains information about the payment provider, if available, to support it natively without the need for opening the URL.
- A JSON object that can contain the following fields:
-
- - apple_pay_merchant_id: Apple Pay merchant ID
- - google_pay_public_key: Google Pay public key
- - need_country: True, if the user country must be provided,
- - need_zip: True, if the user ZIP/postal code must be provided,
- - need_cardholder_name: True, if the cardholder name must be provided
+ Contains information about the payment provider, if available, to support it natively without the need for opening the URL.
+ A JSON object that can contain the following fields:
+
+ - apple_pay_merchant_id: Apple Pay merchant ID
+ - google_pay_public_key: Google Pay public key
+ - need_country: True, if the user country must be provided,
+ - need_zip: True, if the user ZIP/postal code must be provided,
+ - need_cardholder_name: True, if the cardholder name must be provided
*/
AdditionalMethods []*PaymentFormMethod `tl:"flag:6"` // Additional payment methods
SavedInfo *PaymentRequestedInfo `tl:"flag:0"` // Saved server-side order information
@@ -14074,7 +14028,7 @@ type PaymentsPaymentFormStars struct {
Description string
Photo WebDocument `tl:"flag:5"`
Invoice *Invoice
- Users User
+ Users []User
}
func (*PaymentsPaymentFormStars) CRC() uint32 {
@@ -14178,8 +14132,8 @@ type PaymentsStarGifts interface {
// Available gifts ».
type PaymentsStarGiftsObj struct {
- Hash int32 // Hash used for caching, for more info click here
- Gifts []StarGift // List of available gifts.
+ Hash int32 // Hash used for caching, for more info click here
+ Gifts []*StarGift // List of available gifts.
}
func (*PaymentsStarGiftsObj) CRC() uint32 {
diff --git a/telegram/methods_gen.go b/telegram/methods_gen.go
index f4e26dff..dfe0532a 100755
--- a/telegram/methods_gen.go
+++ b/telegram/methods_gen.go
@@ -3474,6 +3474,7 @@ func (*BotsCheckDownloadFileParamsParams) CRC() uint32 {
return 0x50077589
}
+// Check if a mini app can request the download of a specific file: called when handling web_app_request_file_download events »
func (c *Client) BotsCheckDownloadFileParams(bot InputUser, fileName, url string) (bool, error) {
responseData, err := c.MakeRequest(&BotsCheckDownloadFileParamsParams{
Bot: bot,
@@ -3992,6 +3993,7 @@ func (*BotsToggleUserEmojiStatusPermissionParams) CRC() uint32 {
return 0x6de6392
}
+// Allow or prevent a bot from changing our emoji status »
func (c *Client) BotsToggleUserEmojiStatusPermission(bot InputUser, enabled bool) (bool, error) {
responseData, err := c.MakeRequest(&BotsToggleUserEmojiStatusPermissionParams{
Bot: bot,
@@ -4077,6 +4079,7 @@ func (*BotsUpdateUserEmojiStatusParams) CRC() uint32 {
return 0xed9f30c5
}
+// Change the emoji status of a user (invoked by bots, see here » for more info on the full flow)
func (c *Client) BotsUpdateUserEmojiStatus(userID InputUser, emojiStatus EmojiStatus) (bool, error) {
responseData, err := c.MakeRequest(&BotsUpdateUserEmojiStatusParams{
EmojiStatus: emojiStatus,
@@ -10083,6 +10086,7 @@ func (*MessagesGetPreparedInlineMessageParams) CRC() uint32 {
return 0x857ebdb8
}
+// Obtain a prepared inline message generated by a mini app: invoked when handling web_app_send_prepared_message events
func (c *Client) MessagesGetPreparedInlineMessage(bot InputUser, id string) (*MessagesPreparedInlineMessage, error) {
responseData, err := c.MakeRequest(&MessagesGetPreparedInlineMessageParams{
Bot: bot,
@@ -11893,6 +11897,7 @@ func (*MessagesSavePreparedInlineMessageParams) FlagIndex() int {
return 0
}
+// Save a prepared inline message, to be shared by the user of the mini app using a web_app_send_prepared_message event
func (c *Client) MessagesSavePreparedInlineMessage(result InputBotInlineResult, userID InputUser, peerTypes []InlineQueryPeerType) (*MessagesBotPreparedInlineMessage, error) {
responseData, err := c.MakeRequest(&MessagesSavePreparedInlineMessageParams{
PeerTypes: peerTypes,
@@ -13850,6 +13855,7 @@ func (*PaymentsBotCancelStarsSubscriptionParams) FlagIndex() int {
return 0
}
+// Cancel a bot subscription
func (c *Client) PaymentsBotCancelStarsSubscription(restore bool, userID InputUser, chargeID string) (bool, error) {
responseData, err := c.MakeRequest(&PaymentsBotCancelStarsSubscriptionParams{
ChargeID: chargeID,
diff --git a/telegram/types_gen.go b/telegram/types_gen.go
index f6500c48..0e3f8bf7 100755
--- a/telegram/types_gen.go
+++ b/telegram/types_gen.go
@@ -534,20 +534,19 @@ func (*BotCommand) CRC() uint32 {
// Info about bots (available bot commands, etc)
type BotInfo struct {
- HasPreviewMedias bool `tl:"flag:6,encoded_in_bitflags"`
- UserID int64 `tl:"flag:0"`
- Description string `tl:"flag:1"`
- DescriptionPhoto Photo `tl:"flag:4"`
- DescriptionDocument Document `tl:"flag:5"`
- Commands []*BotCommand `tl:"flag:2"`
- MenuButton BotMenuButton `tl:"flag:3"`
- PrivacyPolicyURL string `tl:"flag:7"`
- AppSettings *BotAppSettings `tl:"flag:8"`
- VerifierSettings *BotVerifierSettings `tl:"flag:9"`
+ HasPreviewMedias bool `tl:"flag:6,encoded_in_bitflags"`
+ UserID int64 `tl:"flag:0"`
+ Description string `tl:"flag:1"`
+ DescriptionPhoto Photo `tl:"flag:4"`
+ DescriptionDocument Document `tl:"flag:5"`
+ Commands []*BotCommand `tl:"flag:2"`
+ MenuButton BotMenuButton `tl:"flag:3"`
+ PrivacyPolicyURL string `tl:"flag:7"`
+ AppSettings *BotAppSettings `tl:"flag:8"`
}
func (*BotInfo) CRC() uint32 {
- return 0x4d8a0299
+ return 0x36607333
}
func (*BotInfo) FlagIndex() int {
@@ -564,30 +563,6 @@ func (*BotPreviewMedia) CRC() uint32 {
return 0x23e91ba3
}
-type BotVerification struct {
- BotID int64
- Icon int64
- Description string
-}
-
-func (*BotVerification) CRC() uint32 {
- return 0xf93cd45c
-}
-
-type BotVerifierSettings struct {
- CanModifyCustomDescription bool `tl:"flag:1,encoded_in_bitflags"`
- Company string
- CustomDescription string `tl:"flag:0"`
-}
-
-func (*BotVerifierSettings) CRC() uint32 {
- return 0xb0cd6617
-}
-
-func (*BotVerifierSettings) FlagIndex() int {
- return 0
-}
-
// Localized information about a bot.
type BotsBotInfo struct {
Name string
@@ -929,6 +904,7 @@ type ChatBannedRights struct {
SendVoices bool `tl:"flag:23,encoded_in_bitflags"`
SendDocs bool `tl:"flag:24,encoded_in_bitflags"`
SendPlain bool `tl:"flag:25,encoded_in_bitflags"`
+ UntilDate int32
}
func (*ChatBannedRights) CRC() uint32 {
@@ -2698,7 +2674,7 @@ func (*MessagesWebPage) CRC() uint32 {
type MessagesWebViewResult struct {
Result BotInlineResult
- Users User
+ Users []User
}
func (*MessagesWebViewResult) CRC() uint32 {
@@ -3731,12 +3707,27 @@ func (*SponsoredMessageReportOption) CRC() uint32 {
return 0x430d3150
}
-type StarGiftUpgradePreview struct {
- SampleAttributes StarGiftAttribute
+// Represents a star gift, see here » for more info.
+type StarGift struct {
+ Limited bool `tl:"flag:0,encoded_in_bitflags"`
+ SoldOut bool `tl:"flag:1,encoded_in_bitflags"`
+ Birthday bool `tl:"flag:2,encoded_in_bitflags"`
+ ID int64
+ Sticker Document
+ Stars int64
+ AvailabilityRemains int32 `tl:"flag:0"`
+ AvailabilityTotal int32 `tl:"flag:0"`
+ ConvertStars int64
+ FirstSaleDate int32 `tl:"flag:1"`
+ LastSaleDate int32 `tl:"flag:1"`
}
-func (*StarGiftUpgradePreview) CRC() uint32 {
- return 0x167bd90b
+func (*StarGift) CRC() uint32 {
+ return 0x49c577cd
+}
+
+func (*StarGift) FlagIndex() int {
+ return 0
}
// Indo about an affiliate program offered by a bot
@@ -3895,7 +3886,7 @@ type StarsTransaction struct {
Reaction bool `tl:"flag:11,encoded_in_bitflags"`
Subscription bool `tl:"flag:12,encoded_in_bitflags"`
Floodskip bool `tl:"flag:15,encoded_in_bitflags"`
- StargiftUpgrade bool `tl:"flag:18,encoded_in_bitflags"`
+ ID string
Stars *StarsAmount
Date int32
Peer StarsTransactionPeer
@@ -3909,7 +3900,7 @@ type StarsTransaction struct {
ExtendedMedia []MessageMedia `tl:"flag:9"`
SubscriptionPeriod int32 `tl:"flag:12"`
GiveawayPostID int32 `tl:"flag:13"`
- Stargift StarGift `tl:"flag:14"`
+ Stargift *StarGift `tl:"flag:14"`
FloodskipNumber int32 `tl:"flag:15"`
StarrefCommissionPermille int32 `tl:"flag:16"`
StarrefPeer Peer `tl:"flag:17"`
@@ -4467,7 +4458,7 @@ type UserFull struct {
PrivateForwardName string `tl:"flag:16"`
BotGroupAdminRights *ChatAdminRights `tl:"flag:17"`
BotBroadcastAdminRights *ChatAdminRights `tl:"flag:18"`
- PremiumGifts *PremiumGiftOption `tl:"flag:19"`
+ PremiumGifts []*PremiumGiftOption `tl:"flag:19"`
Wallpaper WallPaper `tl:"flag:24"`
Stories *PeerStories `tl:"flag:25"`
BusinessWorkHours *BusinessWorkHours `tl:"flag2:0"`
@@ -4480,11 +4471,10 @@ type UserFull struct {
PersonalChannelMessage int32 `tl:"flag2:6"`
StargiftsCount int32 `tl:"flag2:8"`
StarrefProgram *StarRefProgram `tl:"flag2:11"`
- BotVerification *BotVerification `tl:"flag2:12"`
}
func (*UserFull) CRC() uint32 {
- return 0x4d975bbc
+ return 0x979d2376
}
func (*UserFull) FlagIndex() int {
@@ -4493,23 +4483,18 @@ func (*UserFull) FlagIndex() int {
// Represents a gift, displayed on a user's profile page.
type UserStarGift struct {
- NameHidden bool `tl:"flag:0,encoded_in_bitflags"`
- Unsaved bool `tl:"flag:5,encoded_in_bitflags"`
- Refunded bool `tl:"flag:9,encoded_in_bitflags"`
- CanUpgrade bool `tl:"flag:10,encoded_in_bitflags"`
- FromID int64 `tl:"flag:1"`
- Date int32
- Gift StarGift
- Message *TextWithEntities `tl:"flag:2"`
- MsgID int32 `tl:"flag:3"`
- ConvertStars int64 `tl:"flag:4"`
- UpgradeStars int64 `tl:"flag:6"`
- CanExportAt int32 `tl:"flag:7"`
- TransferStars int64 `tl:"flag:8"`
+ NameHidden bool `tl:"flag:0,encoded_in_bitflags"`
+ Unsaved bool `tl:"flag:5,encoded_in_bitflags"`
+ FromID int64 `tl:"flag:1"`
+ Date int32
+ Gift *StarGift
+ Message *TextWithEntities `tl:"flag:2"`
+ MsgID int32 `tl:"flag:3"`
+ ConvertStars int64 `tl:"flag:4"`
}
func (*UserStarGift) CRC() uint32 {
- return 0x325835e1
+ return 0xeea49a6e
}
func (*UserStarGift) FlagIndex() int {