From da3cc6156a6662b82b933ba3875e5cff2b44b25a Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 10 Jun 2026 10:21:31 +0400 Subject: [PATCH] Update API scheme to layer 228. --- Telegram/SourceFiles/apiwrap.cpp | 2 + Telegram/SourceFiles/data/data_channel.cpp | 8 ++ Telegram/SourceFiles/data/data_channel.h | 11 ++- .../SourceFiles/data/data_file_origin.cpp | 2 + Telegram/SourceFiles/data/data_session.cpp | 73 +++++++++++++++++++ .../export/data/export_data_types.cpp | 17 +++++ Telegram/SourceFiles/history/history_item.cpp | 1 + .../history/history_item_components.cpp | 2 + Telegram/SourceFiles/mtproto/scheme/api.tl | 43 +++++++++-- 9 files changed, 153 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 857f8643c9..d9ae391643 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -1248,6 +1248,8 @@ void ApiWrap::gotChatFull( LOG(("MTP Error: bad type in gotChatFull for chat: %1" ).arg(d.vfull_chat().type())); } + }, [&](const MTPDcommunityFull &) { + LOG(("MTP Error: communityFull is not supported in gotChatFull.")); }); _fullPeerRequests.remove(peer); diff --git a/Telegram/SourceFiles/data/data_channel.cpp b/Telegram/SourceFiles/data/data_channel.cpp index 8687dadc9f..e07ce43eb4 100644 --- a/Telegram/SourceFiles/data/data_channel.cpp +++ b/Telegram/SourceFiles/data/data_channel.cpp @@ -364,6 +364,14 @@ bool ChannelData::monoforumDisabled() const { return flags() & Flag::MonoforumDisabled; } +void ChannelData::setLinkedCommunityId(ChannelId id) { + _linkedCommunityId = id; +} + +ChannelId ChannelData::linkedCommunityId() const { + return _linkedCommunityId; +} + void ChannelData::setMembersCount(int newMembersCount) { if (_membersCount != newMembersCount) { if (isMegagroup() diff --git a/Telegram/SourceFiles/data/data_channel.h b/Telegram/SourceFiles/data/data_channel.h index d10b6f055c..644c892c9d 100644 --- a/Telegram/SourceFiles/data/data_channel.h +++ b/Telegram/SourceFiles/data/data_channel.h @@ -86,6 +86,8 @@ enum class ChannelDataFlag : uint64 { HasStarsPerMessage = (1ULL << 43), StarsPerMessageKnown = (1ULL << 44), HasActiveVideoStream = (1ULL << 45), + Community = (1ULL << 46), + CommunityCollapsed = (1ULL << 47), }; inline constexpr bool is_flag_type(ChannelDataFlag) { return true; }; using ChannelDataFlags = base::flags; @@ -263,7 +265,7 @@ public: return flags() & Flag::SignatureProfiles; } [[nodiscard]] bool isForbidden() const { - return flags() & Flag::Forbidden; + return flags() & (Flag::Forbidden | Flag::Community); } [[nodiscard]] bool isVerified() const { return flags() & Flag::Verified; @@ -333,6 +335,9 @@ public: [[nodiscard]] bool isMonoforum() const { return flags() & Flag::Monoforum; } + [[nodiscard]] bool isCommunity() const { + return flags() & Flag::Community; + } [[nodiscard]] bool hasUsername() const { return flags() & Flag::Username; } @@ -454,6 +459,9 @@ public: [[nodiscard]] ChannelData *monoforumLink() const; [[nodiscard]] bool monoforumDisabled() const; + void setLinkedCommunityId(ChannelId id); + [[nodiscard]] ChannelId linkedCommunityId() const; + void ptsInit(int32 pts) { _ptsWaiter.init(pts); } @@ -610,6 +618,7 @@ private: ChannelData *_discussionLink = nullptr; ChannelData *_monoforumLink = nullptr; + ChannelId _linkedCommunityId = 0; bool _discussionLinkKnown = false; int _peerGiftsCount = 0; diff --git a/Telegram/SourceFiles/data/data_file_origin.cpp b/Telegram/SourceFiles/data/data_file_origin.cpp index 74d4575ffe..3de1097a41 100644 --- a/Telegram/SourceFiles/data/data_file_origin.cpp +++ b/Telegram/SourceFiles/data/data_file_origin.cpp @@ -208,6 +208,8 @@ struct FileReferenceAccumulator { push(data.vchat_photo()); }, [&](const MTPDchannelFull &data) { push(data.vchat_photo()); + }, [&](const MTPDcommunityFull &data) { + push(data.vchat_photo()); }); } void push(const MTPmessages_ChatFull &data) { diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 066c87357f..247d26d0bb 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -851,6 +851,10 @@ not_null Session::processChat(const MTPChat &data) { return peer(peerFromChannel(data.vid().v)); }, [&](const MTPDchannelForbidden &data) { return peer(peerFromChannel(data.vid().v)); + }, [&](const MTPDcommunity &data) { + return peer(peerFromChannel(data.vid().v)); + }, [&](const MTPDcommunityForbidden &data) { + return peer(peerFromChannel(data.vid().v)); }); auto minimal = false; @@ -1111,6 +1115,8 @@ not_null Session::processChat(const MTPChat &data) { applyMonoforumLinkedId( channel, data.vlinked_monoforum_id().value_or_empty()); + channel->setLinkedCommunityId( + data.vlinked_community_id().value_or_empty()); if (wasInChannel != channel->amIn()) { flags |= UpdateFlag::ChannelAmIn; @@ -1173,6 +1179,73 @@ not_null Session::processChat(const MTPChat &data) { || canAddMembers != channel->canAddMembers()) { flags |= UpdateFlag::Rights; } + }, [&](const MTPDcommunity &data) { + const auto channel = result->asChannel(); + + minimal = data.is_min(); + if (minimal && !result->isLoaded()) { + LOG(("API Warning: not loaded minimal community applied.")); + } + + if (const auto accessHash = data.vaccess_hash()) { + if (!minimal || !channel->accessHash()) { + channel->setAccessHash(accessHash->v); + } + } + if (const auto rights = data.vdefault_banned_rights()) { + channel->setDefaultRestrictions( + ChatRestrictionsInfo(*rights).flags); + } else { + channel->setDefaultRestrictions(ChatRestrictions()); + } + if (!minimal) { + if (const auto rights = data.vadmin_rights()) { + channel->setAdminRights(ChatAdminRightsInfo(*rights).flags); + } else if (channel->hasAdminRights()) { + channel->setAdminRights(ChatAdminRights()); + } + channel->date = data.vdate().v; + } + channel->setName(qs(data.vtitle()), QString()); + channel->setPhoto(data.vphoto()); + + using Flag = ChannelDataFlag; + const auto flagsMask = Flag::Community + | Flag::CommunityCollapsed + | (!minimal ? (Flag::Left | Flag::Creator) : Flag()); + const auto collapsed = data.vcollapsed_in_dialogs(); + const auto flagsSet = Flag::Community + | ((collapsed && mtpIsTrue(*collapsed)) + ? Flag::CommunityCollapsed + : Flag()) + | (!minimal + ? ((data.is_left() ? Flag::Left : Flag()) + | (data.is_creator() ? Flag::Creator : Flag())) + : Flag()); + channel->setFlags((channel->flags() & ~flagsMask) | flagsSet); + }, [&](const MTPDcommunityForbidden &data) { + const auto channel = result->asChannel(); + + using Flag = ChannelDataFlag; + const auto flagsMask = Flag::Community | Flag::Forbidden; + const auto flagsSet = Flag::Community | Flag::Forbidden; + channel->setFlags((channel->flags() & ~flagsMask) | flagsSet); + + if (channel->hasAdminRights()) { + channel->setAdminRights(ChatAdminRights()); + } + if (channel->hasRestrictions()) { + channel->setRestrictions(ChatRestrictionsInfo()); + } + + channel->setName(qs(data.vtitle()), QString()); + + if (const auto accessHash = data.vaccess_hash()) { + channel->setAccessHash(accessHash->v); + } + channel->setPhoto(MTP_chatPhotoEmpty()); + channel->date = 0; + channel->setMembersCount(0); }, [](const MTPDchatEmpty &) { }); diff --git a/Telegram/SourceFiles/export/data/export_data_types.cpp b/Telegram/SourceFiles/export/data/export_data_types.cpp index 48d8c424de..1273577ee5 100644 --- a/Telegram/SourceFiles/export/data/export_data_types.cpp +++ b/Telegram/SourceFiles/export/data/export_data_types.cpp @@ -1234,6 +1234,18 @@ Chat ParseChat(const MTPChat &data) { result.input = MTP_inputPeerChannel( MTP_long(result.bareId), data.vaccess_hash()); + }, [&](const MTPDcommunity &data) { + result.bareId = data.vid().v; + result.title = ParseString(data.vtitle()); + result.input = MTP_inputPeerChannel( + MTP_long(result.bareId), + MTP_long(data.vaccess_hash().value_or_empty())); + }, [&](const MTPDcommunityForbidden &data) { + result.bareId = data.vid().v; + result.title = ParseString(data.vtitle()); + result.input = MTP_inputPeerChannel( + MTP_long(result.bareId), + MTP_long(data.vaccess_hash().value_or_empty())); }); return result; } @@ -1898,6 +1910,7 @@ ServiceAction ParseServiceAction( })); }, [](const auto &) {}); result.content = content; + }, [](const MTPDmessageActionChangeCommunity &) { }, [](const MTPDmessageActionEmpty &data) {}); return result; } @@ -2469,6 +2482,10 @@ DialogsInfo ParseDialogsInfo( return peerFromChannel(data.vid()); }, [](const MTPDchannelForbidden &data) { return peerFromChannel(data.vid()); + }, [](const MTPDcommunity &data) { + return peerFromChannel(data.vid()); + }, [](const MTPDcommunityForbidden &data) { + return peerFromChannel(data.vid()); }, [](const auto &data) { return peerFromChat(data.vid()); }); diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index 303a04aa54..afff77d9fd 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -7358,6 +7358,7 @@ void HistoryItem::setServiceMessageByAction(const MTPmessageAction &action) { PrepareEmptyText, preparePollDeleteAnswer, PrepareEmptyText, + PrepareEmptyText, PrepareErrorText)); processAction(action); diff --git a/Telegram/SourceFiles/history/history_item_components.cpp b/Telegram/SourceFiles/history/history_item_components.cpp index 337d838319..a85e0d480a 100644 --- a/Telegram/SourceFiles/history/history_item_components.cpp +++ b/Telegram/SourceFiles/history/history_item_components.cpp @@ -509,6 +509,8 @@ FullReplyTo ReplyToFromMTP( return FullReplyTo{ .monoforumPeerId = parsed ? parsed->id : PeerId(), }; + }, [&](const MTPDinputReplyToEphemeralMessage &) { + return FullReplyTo(); }); } diff --git a/Telegram/SourceFiles/mtproto/scheme/api.tl b/Telegram/SourceFiles/mtproto/scheme/api.tl index 2784293c11..bb024e4c86 100644 --- a/Telegram/SourceFiles/mtproto/scheme/api.tl +++ b/Telegram/SourceFiles/mtproto/scheme/api.tl @@ -101,11 +101,14 @@ userStatusLastMonth#65899777 flags:# by_me:flags.0?true = UserStatus; chatEmpty#29562865 id:long = Chat; chat#41cbf256 flags:# creator:flags.0?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#1c32b11c 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 autotranslation:flags2.15?true broadcast_messages_allowed:flags2.16?true monoforum:flags2.17?true forum_tabs:flags2.19?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?RecentStory 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 send_paid_messages_stars:flags2.14?long linked_monoforum_id:flags2.18?long = Chat; +channel#d49f34c6 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 autotranslation:flags2.15?true broadcast_messages_allowed:flags2.16?true monoforum:flags2.17?true forum_tabs:flags2.19?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?RecentStory 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 send_paid_messages_stars:flags2.14?long linked_monoforum_id:flags2.18?long linked_community_id:flags2.20?long = Chat; channelForbidden#17d493d5 flags:# broadcast:flags.5?true megagroup:flags.8?true monoforum:flags.10?true id:long access_hash:long title:string until_date:flags.16?int = Chat; +communityForbidden#fd3cdab8 flags:# id:long access_hash:flags.13?long title:string = Chat; +community#44cfa2fd flags:# creator:flags.0?true left:flags.2?true min:flags.12?true flags2:# collapsed_in_dialogs:flags2.20?Bool id:long access_hash:flags.13?long title:string photo:ChatPhoto date:int admin_rights:flags.14?ChatAdminRights default_banned_rights:flags.18?ChatBannedRights = 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?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#a04e8d3a 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 stargifts_available:flags2.19?true paid_messages_available:flags2.20?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 bot_verification:flags2.17?BotVerification stargifts_count:flags2.18?int send_paid_messages_stars:flags2.21?long main_tab:flags2.22?ProfileTab guard_bot_id:flags2.23?long = ChatFull; +communityFull#ff2b487a flags:# id:long about:string chat_photo:Photo linked_peers:Vector admins_count:flags.1?int pending_requests:flags.0?int = ChatFull; chatParticipant#38e79fde flags:# user_id:long inviter_id:long date:int rank:flags.0?string = ChatParticipant; chatParticipantCreator#e1f867b8 flags:# user_id:long rank:flags.0?string = ChatParticipant; @@ -208,6 +211,7 @@ messageActionNoForwardsRequest#3e2793ba flags:# expired:flags.0?true prev_value: messageActionPollAppendAnswer#9da1cd6c answer:PollAnswer = MessageAction; messageActionPollDeleteAnswer#399674dc answer:PollAnswer = MessageAction; messageActionManagedBotCreated#16605e3e bot_id:long = MessageAction; +messageActionChangeCommunity#5d20bae8 flags:# community_id:flags.0?long = MessageAction; dialog#fc89f7f3 flags:# pinned:flags.2?true unread_mark:flags.3?true view_forum_as_messages:flags.6?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int unread_poll_votes_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int ttl_period:flags.5?int = Dialog; dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog; @@ -471,6 +475,9 @@ updateJoinChatWebViewDecision#bdac7e70 peer:Peer query_id:long result:JoinChatBo updateNewBotConnection#b22083a6 flags:# confirmed:flags.0?true bot_id:long date:flags.1?int device:flags.1?string location:flags.1?string = Update; updateWebBrowserSettings#c39a2ade flags:# open_external_browser:flags.0?true display_close_button:flags.1?true = Update; updateWebBrowserException#140502d1 flags:# delete:flags.1?true open_external_browser:flags.0?Bool exception:WebDomainException = Update; +updateNewEphemeralMessage#20bcbba1 message:EphemeralMessage = Update; +updateDeleteEphemeralMessages#56dbfcf8 peer:Peer ids:Vector = Update; +updateEditEphemeralMessage#4bbb8f01 message:EphemeralMessage = Update; updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State; @@ -692,7 +699,7 @@ stickerSet#2dd14edc flags:# archived:flags.1?true official:flags.2?true masks:fl messages.stickerSet#6e153f16 set:StickerSet packs:Vector keywords:Vector documents:Vector = messages.StickerSet; messages.stickerSetNotModified#d3f924eb = messages.StickerSet; -botCommand#c27ac8c7 command:string description:string = BotCommand; +botCommand#9852d6d2 flags:# ephemeral:flags.0?true 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; @@ -1276,9 +1283,9 @@ chatOnlines#f041e250 onlines:int = ChatOnlines; 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 manage_direct_messages:flags.17?true manage_ranks:flags.18?true = ChatAdminRights; +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 manage_direct_messages:flags.17?true manage_ranks:flags.18?true manage_linked_peers:flags.19?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 edit_rank:flags.26?true send_reactions:flags.27?true until_date:int = 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 edit_rank:flags.26?true send_reactions:flags.27?true manage_linked_peers:flags.28?true until_date:int = ChatBannedRights; inputWallPaper#e630b979 id:long access_hash:long = InputWallPaper; inputWallPaperSlug#72091c80 slug:string = InputWallPaper; @@ -1731,6 +1738,7 @@ stories.storyViews#de9eed1d views:Vector users:Vector = storie inputReplyToMessage#3bd4b7c2 flags:# reply_to_msg_id:int top_msg_id:flags.0?int reply_to_peer_id:flags.1?InputPeer quote_text:flags.2?string quote_entities:flags.3?Vector quote_offset:flags.4?int monoforum_peer_id:flags.5?InputPeer todo_item_id:flags.6?int poll_option:flags.7?bytes = InputReplyTo; inputReplyToStory#5881323a peer:InputPeer story_id:int = InputReplyTo; inputReplyToMonoForum#69d66c45 monoforum_peer_id:InputPeer = InputReplyTo; +inputReplyToEphemeralMessage#4119b95e id:int = InputReplyTo; exportedStoryLink#3fc9053b link:string = ExportedStoryLink; @@ -2220,6 +2228,16 @@ inputRichMessageMarkdown#4b572c flags:# rtl:flags.0?true noautolink:flags.1?true richMessage#baf39d8b flags:# rtl:flags.0?true part:flags.1?true blocks:Vector photos:Vector documents:Vector = RichMessage; +communityPeer#76141ebd flags:# visible:flags.0?Bool peer:Peer = CommunityPeer; + +communityPeerRequest#7beafa85 flags:# visible:flags.0?true peer:Peer requested_by:long date:int = CommunityPeerRequest; + +communities.peerLinkRequests#2244afad flags:# total_count:int requests:Vector next_offset:flags.0?string chats:Vector users:Vector = communities.PeerLinkRequests; + +ephemeralMessage#d9c6dc1a flags:# out:flags.0?true id:int from_id:Peer peer_id:Peer receiver_id:long top_msg_id:flags.1?int date:int message:string entities:flags.2?Vector media:flags.3?MessageMedia reply_markup:flags.4?ReplyMarkup reply_to:flags.6?MessageReplyHeader = EphemeralMessage; + +communities.participantJoinedChats#8d78512a creator_chat_ids:Vector joined_chat_ids:Vector chats:Vector users:Vector = communities.ParticipantJoinedChats; + ---functions--- invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X; @@ -3036,4 +3054,19 @@ aicompose.getTone#b2e8ba03 tone:InputAiComposeTone = aicompose.Tones; aicompose.getTones#abd59201 hash:long = aicompose.Tones; aicompose.getToneExample#d1b4ab14 tone:InputAiComposeTone num:int = AiComposeToneExample; -// LAYER 227 +communities.create#a63859ec flags:# title:string about:flags.0?string peer:InputPeer = Updates; +communities.togglePeerLink#736dcfea flags:# visible:flags.0?true hidden:flags.1?true deleted:flags.2?true community:InputChannel peer:InputPeer = Bool; +communities.getJoinedCommunities#a663e830 = messages.Chats; +communities.toggleCommunityCollapsedInDialogs#d766e3ea flags:# collapsed:flags.0?true community:InputChannel = Updates; +communities.getPeerLinkRequests#93773344 community:InputChannel offset:string limit:int = communities.PeerLinkRequests; +communities.togglePeerLinkRequestApproval#8c8219a8 flags:# reject:flags.0?true community:InputChannel peer:InputPeer = Bool; +communities.toggleAllPeerLinkRequestApproval#bfe3dd3d flags:# reject:flags.0?true community:InputChannel = Bool; +communities.toggleParticipantBanned#9967ad0f flags:# unban:flags.0?true community:InputChannel participant:InputPeer = Bool; +communities.getParticipantJoinedChats#f87eabab community:InputChannel participant:InputPeer = communities.ParticipantJoinedChats; + +ephemeral.sendMessage#68cbd09f flags:# peer:InputPeer receiver_id:InputUser query_id:flags.0?long message:string entities:flags.1?Vector media:flags.2?InputMedia reply_markup:flags.3?ReplyMarkup rich_message:flags.4?InputRichMessage random_id:long reply_to:flags.5?InputReplyTo = Updates; +ephemeral.deleteMessage#a3c0d511 peer:InputPeer receiver_id:InputUser id:int = Bool; +ephemeral.reportMessage#8704f2bf peer:InputPeer id:int option:bytes message:string = ReportResult; +ephemeral.getCallbackAnswer#3fa464c8 flags:# peer:InputPeer id:int data:flags.1?bytes = messages.BotCallbackAnswer; + +// LAYER 228