Upgrade to layer 148: Topics, Usernames, Sticker keywords...

+ support for flags2 has_fields
This commit is contained in:
Wizou 2022-11-01 19:26:40 +01:00
parent b902b33558
commit fd42d3e6df
6 changed files with 648 additions and 71 deletions

View file

@ -50,7 +50,7 @@ namespace WTelegramClientTest
case UpdateChannelUserTyping ucut2: Console.WriteLine($"{Peer(ucut2.from_id)} is {ucut2.action} in {Chat(ucut2.channel_id)}"); break;
case UpdateChatParticipants { participants: ChatParticipants cp }: Console.WriteLine($"{cp.participants.Length} participants in {Chat(cp.chat_id)}"); break;
case UpdateUserStatus uus: Console.WriteLine($"{User(uus.user_id)} is now {uus.status.GetType().Name[10..]}"); break;
case UpdateUserName uun: Console.WriteLine($"{User(uun.user_id)} has changed profile name: @{uun.username} {uun.first_name} {uun.last_name}"); break;
case UpdateUserName uun: Console.WriteLine($"{User(uun.user_id)} has changed profile name: {uun.first_name} {uun.last_name}"); break;
case UpdateUserPhoto uup: Console.WriteLine($"{User(uup.user_id)} has changed profile photo"); break;
default: Console.WriteLine(update.GetType().Name); break; // there are much more update types than the above cases
}

View file

@ -1,6 +1,6 @@
[![NuGet version](https://img.shields.io/nuget/v/WTelegramClient)](https://www.nuget.org/packages/WTelegramClient/)
[![Build Status](https://img.shields.io/azure-devops/build/wiz0u/WTelegramClient/7)](https://dev.azure.com/wiz0u/WTelegramClient/_build?definitionId=7)
[![API Layer](https://img.shields.io/badge/API_Layer-146-blueviolet)](https://corefork.telegram.org/methods)
[![API Layer](https://img.shields.io/badge/API_Layer-148-blueviolet)](https://corefork.telegram.org/methods)
[![dev nuget](https://img.shields.io/badge/dynamic/json?color=ffc040&label=dev%20nuget&query=%24.versions%5B0%5D&url=https%3A%2F%2Fpkgs.dev.azure.com%2Fwiz0u%2F81bd92b7-0bb9-4701-b426-09090b27e037%2F_packaging%2F46ce0497-7803-4bd4-8c6c-030583e7c371%2Fnuget%2Fv3%2Fflat2%2Fwtelegramclient%2Findex.json)](https://dev.azure.com/wiz0u/WTelegramClient/_artifacts/feed/WTelegramClient/NuGet/WTelegramClient)
[![Support Chat](https://img.shields.io/badge/Chat_with_us-on_Telegram-0088cc)](https://t.me/WTelegramClient)
[![Donate](https://img.shields.io/badge/Help_this_project:-Donate-ff4444)](http://t.me/WTelegramBot?start=donate)

View file

@ -698,11 +698,12 @@ namespace TL
public long id;
}
/// <summary>Indicates info about a certain user <para>See <a href="https://corefork.telegram.org/constructor/user"/></para></summary>
[TLDef(0x5D99ADEE)]
[TLDef(0x8F97C628)]
public partial class User : UserBase
{
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags;
public Flags2 flags2;
/// <summary>ID of the user</summary>
public long id;
/// <summary>Access hash of the user</summary>
@ -729,6 +730,7 @@ namespace TL
[IfFlag(22)] public string lang_code;
/// <summary><a href="https://corefork.telegram.org/api/emoji-status">Emoji status</a></summary>
[IfFlag(30)] public EmojiStatus emoji_status;
[IfFlag(32)] public Username[] usernames;
[Flags] public enum Flags : uint
{
@ -789,6 +791,12 @@ namespace TL
/// <summary>Field <see cref="emoji_status"/> has a value</summary>
has_emoji_status = 0x40000000,
}
[Flags] public enum Flags2 : uint
{
/// <summary>Field <see cref="usernames"/> has a value</summary>
has_usernames = 0x1,
}
}
/// <summary>User profile photo. <para>See <a href="https://corefork.telegram.org/constructor/userProfilePhoto"/></para></summary>
@ -926,11 +934,12 @@ namespace TL
public override string Title => title;
}
/// <summary>Channel/supergroup info <para>See <a href="https://corefork.telegram.org/constructor/channel"/></para></summary>
[TLDef(0x8261AC61)]
[TLDef(0x83259464)]
public partial class Channel : ChatBase
{
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags;
public Flags2 flags2;
/// <summary>ID of the channel</summary>
public long id;
/// <summary>Access hash</summary>
@ -953,6 +962,7 @@ namespace TL
[IfFlag(18)] public ChatBannedRights default_banned_rights;
/// <summary>Participant count</summary>
[IfFlag(17)] public int participants_count;
[IfFlag(32)] public Username[] usernames;
[Flags] public enum Flags : uint
{
@ -1006,6 +1016,13 @@ namespace TL
join_to_send = 0x10000000,
/// <summary>Whether a user's join request will have to be <a href="https://corefork.telegram.org/api/invites#join-requests">approved by administrators</a>, toggle using <a href="https://corefork.telegram.org/method/channels.toggleJoinRequest">channels.toggleJoinToSend</a></summary>
join_request = 0x20000000,
forum = 0x40000000,
}
[Flags] public enum Flags2 : uint
{
/// <summary>Field <see cref="usernames"/> has a value</summary>
has_usernames = 0x1,
}
/// <summary>ID of the channel</summary>
@ -2136,6 +2153,36 @@ namespace TL
/// <summary>Duration of the gifted Telegram Premium subscription</summary>
public int months;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/messageActionTopicCreate"/></para></summary>
[TLDef(0x0D999256)]
public class MessageActionTopicCreate : MessageAction
{
public Flags flags;
public string title;
public int icon_color;
[IfFlag(0)] public long icon_emoji_id;
[Flags] public enum Flags : uint
{
has_icon_emoji_id = 0x1,
}
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/messageActionTopicEdit"/></para></summary>
[TLDef(0xB18A431C)]
public class MessageActionTopicEdit : MessageAction
{
public Flags flags;
[IfFlag(0)] public string title;
[IfFlag(1)] public long icon_emoji_id;
[IfFlag(2)] public bool closed;
[Flags] public enum Flags : uint
{
has_title = 0x1,
has_icon_emoji_id = 0x2,
has_closed = 0x4,
}
}
/// <summary>Chat info. <para>See <a href="https://corefork.telegram.org/type/Dialog"/></para> <para>Derived classes: <see cref="Dialog"/>, <see cref="DialogFolder"/></para></summary>
public abstract class DialogBase : IObject
@ -2468,6 +2515,13 @@ namespace TL
/// <summary>All <a href="https://corefork.telegram.org/api/channel">channels</a> <para>See <a href="https://corefork.telegram.org/constructor/inputNotifyBroadcasts"/></para></summary>
[TLDef(0xB1DB7C7E)]
public class InputNotifyBroadcasts : InputNotifyPeerBase { }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/inputNotifyForumTopic"/></para></summary>
[TLDef(0x5C467992)]
public class InputNotifyForumTopic : InputNotifyPeerBase
{
public InputPeer peer;
public int top_msg_id;
}
/// <summary>Notification settings. <para>See <a href="https://corefork.telegram.org/constructor/inputPeerNotifySettings"/></para></summary>
[TLDef(0xDF1F002B)]
@ -3132,7 +3186,7 @@ namespace TL
public UserStatus status;
}
/// <summary>Changes the user's first name, last name and username. <para>See <a href="https://corefork.telegram.org/constructor/updateUserName"/></para></summary>
[TLDef(0xC3F202E0)]
[TLDef(0xA7848924)]
public class UpdateUserName : Update
{
/// <summary>User identifier</summary>
@ -3141,8 +3195,7 @@ namespace TL
public string first_name;
/// <summary>New last name. Corresponds to the new value of <strong>real_last_name</strong> field of the <see cref="UserFull"/>.</summary>
public string last_name;
/// <summary>New username.</summary>
public string username;
public Username[] usernames;
}
/// <summary>Change of contact's profile photo. <para>See <a href="https://corefork.telegram.org/constructor/updateUserPhoto"/></para></summary>
[TLDef(0xF227868C)]
@ -3575,13 +3628,21 @@ namespace TL
public int max_id;
}
/// <summary>Notifies a change of a message <a href="https://corefork.telegram.org/api/drafts">draft</a>. <para>See <a href="https://corefork.telegram.org/constructor/updateDraftMessage"/></para></summary>
[TLDef(0xEE2BB969)]
[TLDef(0x1B49EC6D)]
public class UpdateDraftMessage : Update
{
public Flags flags;
/// <summary>The peer to which the draft is associated</summary>
public Peer peer;
[IfFlag(0)] public int top_msg_id;
/// <summary>The draft</summary>
public DraftMessageBase draft;
[Flags] public enum Flags : uint
{
/// <summary>Field <see cref="top_msg_id"/> has a value</summary>
has_top_msg_id = 0x1,
}
}
/// <summary>Some featured stickers were marked as read <para>See <a href="https://corefork.telegram.org/constructor/updateReadFeaturedStickers"/></para></summary>
[TLDef(0x571D2742)]
@ -3725,11 +3786,21 @@ namespace TL
[TLDef(0xE511996D)]
public class UpdateFavedStickers : Update { }
/// <summary>The specified <a href="https://corefork.telegram.org/api/channel">channel/supergroup</a> messages were read <para>See <a href="https://corefork.telegram.org/constructor/updateChannelReadMessagesContents"/></para></summary>
[TLDef(0x44BDD535, inheritBefore = true)]
public class UpdateChannelReadMessagesContents : UpdateChannel
[TLDef(0xEA29055D)]
public class UpdateChannelReadMessagesContents : Update
{
public Flags flags;
/// <summary><a href="https://corefork.telegram.org/api/channel">Channel/supergroup</a> ID</summary>
public long channel_id;
[IfFlag(0)] public int top_msg_id;
/// <summary>IDs of messages that were read</summary>
public int[] messages;
[Flags] public enum Flags : uint
{
/// <summary>Field <see cref="top_msg_id"/> has a value</summary>
has_top_msg_id = 0x1,
}
}
/// <summary>All contacts were deleted <para>See <a href="https://corefork.telegram.org/constructor/updateContactsReset"/></para></summary>
[TLDef(0x7084A7BE)]
@ -4190,15 +4261,23 @@ namespace TL
public int qts;
}
/// <summary>New <a href="https://corefork.telegram.org/api/reactions">message reactions »</a> are available <para>See <a href="https://corefork.telegram.org/constructor/updateMessageReactions"/></para></summary>
[TLDef(0x154798C3)]
[TLDef(0x5E1B3CB8)]
public class UpdateMessageReactions : Update
{
public Flags flags;
/// <summary>Peer</summary>
public Peer peer;
/// <summary>Message ID</summary>
public int msg_id;
[IfFlag(0)] public int top_msg_id;
/// <summary>Reactions</summary>
public MessageReactions reactions;
[Flags] public enum Flags : uint
{
/// <summary>Field <see cref="top_msg_id"/> has a value</summary>
has_top_msg_id = 0x1,
}
}
/// <summary>The list of installed <a href="https://corefork.telegram.org/api/bots/attach">attachment menu entries »</a> has changed, use <a href="https://corefork.telegram.org/method/messages.getAttachMenuBots">messages.getAttachMenuBots</a> to fetch the updated list. <para>See <a href="https://corefork.telegram.org/constructor/updateAttachMenuBots"/></para></summary>
[TLDef(0x17B7A20B)]
@ -4286,6 +4365,19 @@ namespace TL
public int msg_id;
public MessageExtendedMediaBase extended_media;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/updateChannelPinnedTopic"/></para></summary>
[TLDef(0xF694B0AE)]
public class UpdateChannelPinnedTopic : Update
{
public Flags flags;
public long channel_id;
[IfFlag(0)] public int topic_id;
[Flags] public enum Flags : uint
{
has_topic_id = 0x1,
}
}
/// <summary>Updates state. <para>See <a href="https://corefork.telegram.org/constructor/updates.state"/></para></summary>
[TLDef(0xA56C2A3E)]
@ -5260,6 +5352,13 @@ namespace TL
/// <summary>Channel notification settings <para>See <a href="https://corefork.telegram.org/constructor/notifyBroadcasts"/></para></summary>
[TLDef(0xD612E8EF)]
public class NotifyBroadcasts : NotifyPeerBase { }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/notifyForumTopic"/></para></summary>
[TLDef(0x226E6308)]
public class NotifyForumTopic : NotifyPeerBase
{
public Peer peer;
public int top_msg_id;
}
/// <summary>User actions. Use this to provide users with detailed info about their chat partner's actions: typing or sending attachments of all kinds. <para>See <a href="https://corefork.telegram.org/type/SendMessageAction"/></para> <para>Derived classes: <see cref="SendMessageTypingAction"/>, <see cref="SendMessageCancelAction"/>, <see cref="SendMessageRecordVideoAction"/>, <see cref="SendMessageUploadVideoAction"/>, <see cref="SendMessageRecordAudioAction"/>, <see cref="SendMessageUploadAudioAction"/>, <see cref="SendMessageUploadPhotoAction"/>, <see cref="SendMessageUploadDocumentAction"/>, <see cref="SendMessageGeoLocationAction"/>, <see cref="SendMessageChooseContactAction"/>, <see cref="SendMessageGamePlayAction"/>, <see cref="SendMessageRecordRoundAction"/>, <see cref="SendMessageUploadRoundAction"/>, <see cref="SpeakingInGroupCallAction"/>, <see cref="SendMessageHistoryImportAction"/>, <see cref="SendMessageChooseStickerAction"/>, <see cref="SendMessageEmojiInteraction"/>, <see cref="SendMessageEmojiInteractionSeen"/></para></summary>
public abstract partial class SendMessageAction : IObject { }
@ -6111,6 +6210,9 @@ namespace TL
/// <summary>Default <a href="https://corefork.telegram.org/api/emoji-status">custom emoji status</a> stickerset <para>See <a href="https://corefork.telegram.org/constructor/inputStickerSetEmojiDefaultStatuses"/></para></summary>
[TLDef(0x29D0F5EE)]
public class InputStickerSetEmojiDefaultStatuses : InputStickerSet { }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/inputStickerSetEmojiDefaultTopicIcons"/></para></summary>
[TLDef(0x44C1F8E9)]
public class InputStickerSetEmojiDefaultTopicIcons : InputStickerSet { }
/// <summary>Represents a stickerset (stickerpack) <para>See <a href="https://corefork.telegram.org/constructor/stickerSet"/></para></summary>
[TLDef(0x2DD14EDC)]
@ -6166,13 +6268,14 @@ namespace TL
/// <summary>Stickerset and stickers inside it <para>See <a href="https://corefork.telegram.org/constructor/messages.stickerSet"/></para></summary>
/// <remarks>a <see langword="null"/> value means <a href="https://corefork.telegram.org/constructor/messages.stickerSetNotModified">messages.stickerSetNotModified</a></remarks>
[TLDef(0xB60A24A6)]
[TLDef(0x6E153F16)]
public class Messages_StickerSet : IObject
{
/// <summary>The stickerset</summary>
public StickerSet set;
/// <summary>Emoji info for stickers</summary>
public StickerPack[] packs;
public StickerKeyword[] keywords;
/// <summary>Stickers in stickerset</summary>
public DocumentBase[] documents;
}
@ -8002,13 +8105,14 @@ namespace TL
public override StickerSet Set => set;
}
/// <summary>Stickerset preview with all stickers of the stickerset included.<br/>Currently used only for <a href="https://corefork.telegram.org/api/custom-emoji">custom emoji stickersets</a>, to avoid a further call to <a href="https://corefork.telegram.org/method/messages.getStickerSet">messages.getStickerSet</a>. <para>See <a href="https://corefork.telegram.org/constructor/stickerSetFullCovered"/></para></summary>
[TLDef(0x1AED5EE5)]
[TLDef(0x40D13C0E)]
public class StickerSetFullCovered : StickerSetCoveredBase
{
/// <summary>Stickerset</summary>
public StickerSet set;
/// <summary>Emoji information about every sticker in the stickerset</summary>
public StickerPack[] packs;
public StickerKeyword[] keywords;
/// <summary>Stickers</summary>
public DocumentBase[] documents;
@ -9803,6 +9907,52 @@ namespace TL
/// <summary>New allowed reaction emojis</summary>
public ChatReactions new_value;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/channelAdminLogEventActionChangeUsernames"/></para></summary>
[TLDef(0xF04FB3A9)]
public class ChannelAdminLogEventActionChangeUsernames : ChannelAdminLogEventAction
{
public string[] prev_value;
public string[] new_value;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/channelAdminLogEventActionToggleForum"/></para></summary>
[TLDef(0x02CC6383)]
public class ChannelAdminLogEventActionToggleForum : ChannelAdminLogEventAction
{
public bool new_value;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/channelAdminLogEventActionCreateTopic"/></para></summary>
[TLDef(0x58707D28)]
public class ChannelAdminLogEventActionCreateTopic : ChannelAdminLogEventAction
{
public ForumTopicBase topic;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/channelAdminLogEventActionEditTopic"/></para></summary>
[TLDef(0xF06FE208)]
public class ChannelAdminLogEventActionEditTopic : ChannelAdminLogEventAction
{
public ForumTopicBase prev_topic;
public ForumTopicBase new_topic;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/channelAdminLogEventActionDeleteTopic"/></para></summary>
[TLDef(0xAE168909)]
public class ChannelAdminLogEventActionDeleteTopic : ChannelAdminLogEventAction
{
public ForumTopicBase topic;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/channelAdminLogEventActionPinTopic"/></para></summary>
[TLDef(0x5D8D353B)]
public class ChannelAdminLogEventActionPinTopic : ChannelAdminLogEventAction
{
public Flags flags;
[IfFlag(0)] public ForumTopicBase prev_topic;
[IfFlag(1)] public ForumTopicBase new_topic;
[Flags] public enum Flags : uint
{
has_prev_topic = 0x1,
has_new_topic = 0x2,
}
}
/// <summary>Admin log event <para>See <a href="https://corefork.telegram.org/constructor/channelAdminLogEvent"/></para></summary>
[TLDef(0x1FAD68CD)]
@ -9875,6 +10025,7 @@ namespace TL
invites = 0x8000,
/// <summary>A message was posted in a channel</summary>
send = 0x10000,
forums = 0x20000,
}
}
@ -11045,6 +11196,7 @@ namespace TL
manage_call = 0x800,
/// <summary>Set this flag if none of the other flags are set, but you still want the user to be an admin: if this or any of the other flags are set, the admin can get the chat <a href="https://corefork.telegram.org/api/recent-actions">admin log</a>, get <a href="https://corefork.telegram.org/api/stats">chat statistics</a>, get <a href="https://corefork.telegram.org/api/stats">message statistics in channels</a>, get channel members, see anonymous administrators in supergroups and ignore slow mode.</summary>
other = 0x1000,
manage_topics = 0x2000,
}
}
@ -11083,6 +11235,7 @@ namespace TL
invite_users = 0x8000,
/// <summary>If set, does not allow any user to pin messages in a <a href="https://corefork.telegram.org/api/channel">supergroup/chat</a></summary>
pin_messages = 0x20000,
manage_topics = 0x40000,
}
}
@ -12211,6 +12364,7 @@ namespace TL
/// <summary>Field <see cref="reply_to_top_id"/> has a value</summary>
has_reply_to_top_id = 0x2,
reply_to_scheduled = 0x4,
forum_topic = 0x8,
}
}
@ -12786,19 +12940,29 @@ namespace TL
has_chat_invite = 0x10,
/// <summary>Whether the message needs to be labeled as "recommended" instead of "sponsored"</summary>
recommended = 0x20,
show_peer_photo = 0x40,
}
}
/// <summary>A set of sponsored messages associated to a channel <para>See <a href="https://corefork.telegram.org/constructor/messages.sponsoredMessages"/></para></summary>
[TLDef(0x65A4C7D5)]
/// <remarks>a <see langword="null"/> value means <a href="https://corefork.telegram.org/constructor/messages.sponsoredMessagesEmpty">messages.sponsoredMessagesEmpty</a></remarks>
[TLDef(0xC9EE1D87)]
public class Messages_SponsoredMessages : IObject, IPeerResolver
{
public Flags flags;
[IfFlag(0)] public int posts_between;
/// <summary>Sponsored messages</summary>
public SponsoredMessage[] messages;
/// <summary>Chats mentioned in the sponsored messages</summary>
public Dictionary<long, ChatBase> chats;
/// <summary>Users mentioned in the sponsored messages</summary>
public Dictionary<long, User> users;
[Flags] public enum Flags : uint
{
/// <summary>Field <see cref="posts_between"/> has a value</summary>
has_posts_between = 0x1,
}
/// <summary>returns a <see cref="User"/> or <see cref="ChatBase"/> for the given Peer</summary>
public IPeerInfo UserOrChat(Peer peer) => peer?.UserOrChat(users, chats);
}
@ -13630,4 +13794,91 @@ namespace TL
{
public MessageMedia media;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/stickerKeyword"/></para></summary>
[TLDef(0xFCFEB29C)]
public class StickerKeyword : IObject
{
public long document_id;
public string[] keyword;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/username"/></para></summary>
[TLDef(0xB4073647)]
public class Username : IObject
{
public Flags flags;
public string username;
[Flags] public enum Flags : uint
{
editable = 0x1,
active = 0x2,
}
}
/// <summary><para>See <a href="https://corefork.telegram.org/type/ForumTopic"/></para></summary>
public abstract class ForumTopicBase : IObject
{
public virtual int ID { get; }
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/forumTopicDeleted"/></para></summary>
[TLDef(0x023F109B)]
public class ForumTopicDeleted : ForumTopicBase
{
public int id;
public override int ID => id;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/forumTopic"/></para></summary>
[TLDef(0x71701DA9)]
public class ForumTopic : ForumTopicBase
{
public Flags flags;
public int id;
public DateTime date;
public string title;
public int icon_color;
[IfFlag(0)] public long icon_emoji_id;
public int top_message;
public int read_inbox_max_id;
public int read_outbox_max_id;
public int unread_count;
public int unread_mentions_count;
public int unread_reactions_count;
public Peer from_id;
public PeerNotifySettings notify_settings;
[IfFlag(4)] public DraftMessageBase draft;
[Flags] public enum Flags : uint
{
has_icon_emoji_id = 0x1,
my = 0x2,
closed = 0x4,
pinned = 0x8,
has_draft = 0x10,
}
public override int ID => id;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/messages.forumTopics"/></para></summary>
[TLDef(0x367617D3)]
public class Messages_ForumTopics : IObject, IPeerResolver
{
public Flags flags;
public int count;
public ForumTopicBase[] topics;
public MessageBase[] messages;
public Dictionary<long, ChatBase> chats;
public Dictionary<long, User> users;
public int pts;
[Flags] public enum Flags : uint
{
order_by_create_date = 0x1,
}
/// <summary>returns a <see cref="User"/> or <see cref="ChatBase"/> for the given Peer</summary>
public IPeerInfo UserOrChat(Peer peer) => peer?.UserOrChat(users, chats);
}
}

View file

@ -869,13 +869,11 @@ namespace TL
/// <summary>Get theme information <para>See <a href="https://corefork.telegram.org/method/account.getTheme"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/account.getTheme#possible-errors">details</a>)</para></summary>
/// <param name="format">Theme format, a string that identifies the theming engines supported by the client</param>
/// <param name="theme">Theme</param>
/// <param name="document_id">Deprecated: should always be <c>0</c></param>
public static Task<Theme> Account_GetTheme(this Client client, string format, InputThemeBase theme, long document_id)
public static Task<Theme> Account_GetTheme(this Client client, string format, InputThemeBase theme)
=> client.Invoke(new Account_GetTheme
{
format = format,
theme = theme,
document_id = document_id,
});
/// <summary>Get installed themes <para>See <a href="https://corefork.telegram.org/method/account.getThemes"/></para></summary>
@ -1044,6 +1042,21 @@ namespace TL
{
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/account.reorderUsernames"/></para></summary>
public static Task<bool> Account_ReorderUsernames(this Client client, params string[] order)
=> client.Invoke(new Account_ReorderUsernames
{
order = order,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/account.toggleUsername"/></para></summary>
public static Task<bool> Account_ToggleUsername(this Client client, string username, bool active)
=> client.Invoke(new Account_ToggleUsername
{
username = username,
active = active,
});
/// <summary>Returns basic user info according to their identifiers. <para>See <a href="https://corefork.telegram.org/method/users.getUsers"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/users.getUsers#possible-errors">details</a>)</para></summary>
/// <param name="id">List of user identifiers</param>
public static Task<UserBase[]> Users_GetUsers(this Client client, params InputUserBase[] id)
@ -1425,12 +1438,13 @@ namespace TL
/// <param name="entities">Message <a href="https://corefork.telegram.org/api/entities">entities</a> for sending styled text</param>
/// <param name="schedule_date">Scheduled message date for <a href="https://corefork.telegram.org/api/scheduled-messages">scheduled messages</a></param>
/// <param name="send_as">Send this message as the specified peer</param>
public static Task<UpdatesBase> Messages_SendMessage(this Client client, InputPeer peer, string message, long random_id, bool no_webpage = false, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, bool update_stickersets_order = false, int? reply_to_msg_id = null, ReplyMarkup reply_markup = null, MessageEntity[] entities = null, DateTime? schedule_date = null, InputPeer send_as = null)
public static Task<UpdatesBase> Messages_SendMessage(this Client client, InputPeer peer, string message, long random_id, bool no_webpage = false, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, bool update_stickersets_order = false, int? reply_to_msg_id = null, int? top_msg_id = null, ReplyMarkup reply_markup = null, MessageEntity[] entities = null, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_SendMessage
{
flags = (Messages_SendMessage.Flags)((no_webpage ? 0x2 : 0) | (silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (update_stickersets_order ? 0x8000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (reply_markup != null ? 0x4 : 0) | (entities != null ? 0x8 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
flags = (Messages_SendMessage.Flags)((no_webpage ? 0x2 : 0) | (silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (update_stickersets_order ? 0x8000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x200 : 0) | (reply_markup != null ? 0x4 : 0) | (entities != null ? 0x8 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
top_msg_id = top_msg_id.GetValueOrDefault(),
message = message,
random_id = random_id,
reply_markup = reply_markup,
@ -1454,12 +1468,13 @@ namespace TL
/// <param name="entities">Message <a href="https://corefork.telegram.org/api/entities">entities</a> for styled text</param>
/// <param name="schedule_date">Scheduled message date for <a href="https://corefork.telegram.org/api/scheduled-messages">scheduled messages</a></param>
/// <param name="send_as">Send this message as the specified peer</param>
public static Task<UpdatesBase> Messages_SendMedia(this Client client, InputPeer peer, InputMedia media, string message, long random_id, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, bool update_stickersets_order = false, int? reply_to_msg_id = null, ReplyMarkup reply_markup = null, MessageEntity[] entities = null, DateTime? schedule_date = null, InputPeer send_as = null)
public static Task<UpdatesBase> Messages_SendMedia(this Client client, InputPeer peer, InputMedia media, string message, long random_id, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, bool update_stickersets_order = false, int? reply_to_msg_id = null, int? top_msg_id = null, ReplyMarkup reply_markup = null, MessageEntity[] entities = null, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_SendMedia
{
flags = (Messages_SendMedia.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (update_stickersets_order ? 0x8000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (reply_markup != null ? 0x4 : 0) | (entities != null ? 0x8 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
flags = (Messages_SendMedia.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (update_stickersets_order ? 0x8000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x200 : 0) | (reply_markup != null ? 0x4 : 0) | (entities != null ? 0x8 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
top_msg_id = top_msg_id.GetValueOrDefault(),
media = media,
message = message,
random_id = random_id,
@ -1482,14 +1497,15 @@ namespace TL
/// <param name="to_peer">Destination peer</param>
/// <param name="schedule_date">Scheduled message date for scheduled messages</param>
/// <param name="send_as">Forward the messages as the specified peer</param>
public static Task<UpdatesBase> Messages_ForwardMessages(this Client client, InputPeer from_peer, int[] id, long[] random_id, InputPeer to_peer, bool silent = false, bool background = false, bool with_my_score = false, bool drop_author = false, bool drop_media_captions = false, bool noforwards = false, DateTime? schedule_date = null, InputPeer send_as = null)
public static Task<UpdatesBase> Messages_ForwardMessages(this Client client, InputPeer from_peer, int[] id, long[] random_id, InputPeer to_peer, bool silent = false, bool background = false, bool with_my_score = false, bool drop_author = false, bool drop_media_captions = false, bool noforwards = false, int? top_msg_id = null, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_ForwardMessages
{
flags = (Messages_ForwardMessages.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (with_my_score ? 0x100 : 0) | (drop_author ? 0x800 : 0) | (drop_media_captions ? 0x1000 : 0) | (noforwards ? 0x4000 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
flags = (Messages_ForwardMessages.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (with_my_score ? 0x100 : 0) | (drop_author ? 0x800 : 0) | (drop_media_captions ? 0x1000 : 0) | (noforwards ? 0x4000 : 0) | (top_msg_id != null ? 0x200 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
from_peer = from_peer,
id = id,
random_id = random_id,
to_peer = to_peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
schedule_date = schedule_date.GetValueOrDefault(),
send_as = send_as,
});
@ -1979,12 +1995,13 @@ namespace TL
/// <param name="id">Result ID from <a href="https://corefork.telegram.org/method/messages.getInlineBotResults">messages.getInlineBotResults</a></param>
/// <param name="schedule_date">Scheduled message date for scheduled messages</param>
/// <param name="send_as">Send this message as the specified peer</param>
public static Task<UpdatesBase> Messages_SendInlineBotResult(this Client client, InputPeer peer, long random_id, long query_id, string id, bool silent = false, bool background = false, bool clear_draft = false, bool hide_via = false, int? reply_to_msg_id = null, DateTime? schedule_date = null, InputPeer send_as = null)
public static Task<UpdatesBase> Messages_SendInlineBotResult(this Client client, InputPeer peer, long random_id, long query_id, string id, bool silent = false, bool background = false, bool clear_draft = false, bool hide_via = false, int? reply_to_msg_id = null, int? top_msg_id = null, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_SendInlineBotResult
{
flags = (Messages_SendInlineBotResult.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (hide_via ? 0x800 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
flags = (Messages_SendInlineBotResult.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (hide_via ? 0x800 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x200 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
top_msg_id = top_msg_id.GetValueOrDefault(),
random_id = random_id,
query_id = query_id,
id = id,
@ -2088,11 +2105,12 @@ namespace TL
/// <param name="peer">Destination of the message that should be sent</param>
/// <param name="message">The draft</param>
/// <param name="entities">Message <a href="https://corefork.telegram.org/api/entities">entities</a> for styled text</param>
public static Task<bool> Messages_SaveDraft(this Client client, InputPeer peer, string message, bool no_webpage = false, int? reply_to_msg_id = null, MessageEntity[] entities = null)
public static Task<bool> Messages_SaveDraft(this Client client, InputPeer peer, string message, bool no_webpage = false, int? reply_to_msg_id = null, int? top_msg_id = null, MessageEntity[] entities = null)
=> client.Invoke(new Messages_SaveDraft
{
flags = (Messages_SaveDraft.Flags)((no_webpage ? 0x2 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (entities != null ? 0x8 : 0)),
flags = (Messages_SaveDraft.Flags)((no_webpage ? 0x2 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x4 : 0) | (entities != null ? 0x8 : 0)),
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
top_msg_id = top_msg_id.GetValueOrDefault(),
peer = peer,
message = message,
entities = entities,
@ -2369,10 +2387,12 @@ namespace TL
/// <param name="limit">Maximum number of results to return, <a href="https://corefork.telegram.org/api/offsets">see pagination</a></param>
/// <param name="max_id">Maximum message ID to return, <a href="https://corefork.telegram.org/api/offsets">see pagination</a></param>
/// <param name="min_id">Minimum message ID to return, <a href="https://corefork.telegram.org/api/offsets">see pagination</a></param>
public static Task<Messages_MessagesBase> Messages_GetUnreadMentions(this Client client, InputPeer peer, int offset_id = default, int add_offset = default, int limit = int.MaxValue, int max_id = default, int min_id = default)
public static Task<Messages_MessagesBase> Messages_GetUnreadMentions(this Client client, InputPeer peer, int offset_id = default, int add_offset = default, int limit = int.MaxValue, int max_id = default, int min_id = default, int? top_msg_id = null)
=> client.Invoke(new Messages_GetUnreadMentions
{
flags = (Messages_GetUnreadMentions.Flags)(top_msg_id != null ? 0x1 : 0),
peer = peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
offset_id = offset_id,
add_offset = add_offset,
limit = limit,
@ -2382,10 +2402,12 @@ namespace TL
/// <summary>Mark mentions as read <para>See <a href="https://corefork.telegram.org/method/messages.readMentions"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/messages.readMentions#possible-errors">details</a>)</para></summary>
/// <param name="peer">Dialog</param>
public static Task<Messages_AffectedHistory> Messages_ReadMentions(this Client client, InputPeer peer)
public static Task<Messages_AffectedHistory> Messages_ReadMentions(this Client client, InputPeer peer, int? top_msg_id = null)
=> client.Invoke(new Messages_ReadMentions
{
flags = (Messages_ReadMentions.Flags)(top_msg_id != null ? 0x1 : 0),
peer = peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
});
/// <summary>Get live location history of a certain user <para>See <a href="https://corefork.telegram.org/method/messages.getRecentLocations"/></para></summary>
@ -2411,12 +2433,13 @@ namespace TL
/// <param name="multi_media">The medias to send: note that they must be separately uploaded using <a href="https://corefork.telegram.org/method/messages.uploadMedia">messages.uploadMedia</a> first, using raw <c>inputMediaUploaded*</c> constructors is not supported.</param>
/// <param name="schedule_date">Scheduled message date for scheduled messages</param>
/// <param name="send_as">Send this message as the specified peer</param>
public static Task<UpdatesBase> Messages_SendMultiMedia(this Client client, InputPeer peer, InputSingleMedia[] multi_media, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, bool update_stickersets_order = false, int? reply_to_msg_id = null, DateTime? schedule_date = null, InputPeer send_as = null)
public static Task<UpdatesBase> Messages_SendMultiMedia(this Client client, InputPeer peer, InputSingleMedia[] multi_media, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, bool update_stickersets_order = false, int? reply_to_msg_id = null, int? top_msg_id = null, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_SendMultiMedia
{
flags = (Messages_SendMultiMedia.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (update_stickersets_order ? 0x8000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
flags = (Messages_SendMultiMedia.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (update_stickersets_order ? 0x8000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x200 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
top_msg_id = top_msg_id.GetValueOrDefault(),
multi_media = multi_media,
schedule_date = schedule_date.GetValueOrDefault(),
send_as = send_as,
@ -2575,10 +2598,12 @@ namespace TL
/// <summary>Get the number of results that would be found by a <a href="https://corefork.telegram.org/method/messages.search">messages.search</a> call with the same parameters <para>See <a href="https://corefork.telegram.org/method/messages.getSearchCounters"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/messages.getSearchCounters#possible-errors">details</a>)</para></summary>
/// <param name="peer">Peer where to search</param>
/// <param name="filters">Search filters</param>
public static Task<Messages_SearchCounter[]> Messages_GetSearchCounters(this Client client, InputPeer peer, params MessagesFilter[] filters)
public static Task<Messages_SearchCounter[]> Messages_GetSearchCounters(this Client client, InputPeer peer, MessagesFilter[] filters, int? top_msg_id = null)
=> client.Invoke(new Messages_GetSearchCounters
{
flags = (Messages_GetSearchCounters.Flags)(top_msg_id != null ? 0x1 : 0),
peer = peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
filters = filters,
});
@ -2783,10 +2808,12 @@ namespace TL
/// <summary><a href="https://corefork.telegram.org/api/pin">Unpin</a> all pinned messages <para>See <a href="https://corefork.telegram.org/method/messages.unpinAllMessages"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/messages.unpinAllMessages#possible-errors">details</a>)</para></summary>
/// <param name="peer">Chat where to unpin</param>
public static Task<Messages_AffectedHistory> Messages_UnpinAllMessages(this Client client, InputPeer peer)
public static Task<Messages_AffectedHistory> Messages_UnpinAllMessages(this Client client, InputPeer peer, int? top_msg_id = null)
=> client.Invoke(new Messages_UnpinAllMessages
{
flags = (Messages_UnpinAllMessages.Flags)(top_msg_id != null ? 0x1 : 0),
peer = peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
});
/// <summary><para>⚠ <b>This method is only for basic Chat</b>. See <see href="https://github.com/wiz0u/WTelegramClient/blob/master/README.md#terminology">Terminology</see> to understand what this means<br/>Search for a similar method name starting with <c>Channels_</c> if you're dealing with a <see cref="Channel"/></para> Delete a <a href="https://corefork.telegram.org/api/channel">chat</a> <para>See <a href="https://corefork.telegram.org/method/messages.deleteChat"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/messages.deleteChat#possible-errors">details</a>)</para></summary>
@ -3149,10 +3176,12 @@ namespace TL
/// <param name="limit">Maximum number of results to return, <a href="https://corefork.telegram.org/api/offsets">see pagination</a></param>
/// <param name="max_id">Only return reactions for messages up until this message ID</param>
/// <param name="min_id">Only return reactions for messages starting from this message ID</param>
public static Task<Messages_MessagesBase> Messages_GetUnreadReactions(this Client client, InputPeer peer, int offset_id = default, int add_offset = default, int limit = int.MaxValue, int max_id = default, int min_id = default)
public static Task<Messages_MessagesBase> Messages_GetUnreadReactions(this Client client, InputPeer peer, int offset_id = default, int add_offset = default, int limit = int.MaxValue, int max_id = default, int min_id = default, int? top_msg_id = null)
=> client.Invoke(new Messages_GetUnreadReactions
{
flags = (Messages_GetUnreadReactions.Flags)(top_msg_id != null ? 0x1 : 0),
peer = peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
offset_id = offset_id,
add_offset = add_offset,
limit = limit,
@ -3162,10 +3191,12 @@ namespace TL
/// <summary>Mark <a href="https://corefork.telegram.org/api/reactions">message reactions »</a> as read <para>See <a href="https://corefork.telegram.org/method/messages.readReactions"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/messages.readReactions#possible-errors">details</a>)</para></summary>
/// <param name="peer">Peer</param>
public static Task<Messages_AffectedHistory> Messages_ReadReactions(this Client client, InputPeer peer)
public static Task<Messages_AffectedHistory> Messages_ReadReactions(this Client client, InputPeer peer, int? top_msg_id = null)
=> client.Invoke(new Messages_ReadReactions
{
flags = (Messages_ReadReactions.Flags)(top_msg_id != null ? 0x1 : 0),
peer = peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
});
/// <summary>View and search recently sent media.<br/>This method does not support pagination. <para>See <a href="https://corefork.telegram.org/method/messages.searchSentMedia"/></para></summary>
@ -3218,10 +3249,10 @@ namespace TL
/// <param name="platform">Short name of the application; 0-64 English letters, digits, and underscores</param>
/// <param name="reply_to_msg_id">Whether the inline message that will be sent by the bot on behalf of the user once the web app interaction is <a href="https://corefork.telegram.org/method/messages.sendWebViewResultMessage">terminated</a> should be sent in reply to this message ID.</param>
/// <param name="send_as">Open the web app as the specified peer, sending the resulting the message as the specified peer.</param>
public static Task<WebViewResult> Messages_RequestWebView(this Client client, InputPeer peer, InputUserBase bot, string platform, bool from_bot_menu = false, bool silent = false, string url = null, string start_param = null, DataJSON theme_params = null, int? reply_to_msg_id = null, InputPeer send_as = null)
public static Task<WebViewResult> Messages_RequestWebView(this Client client, InputPeer peer, InputUserBase bot, string platform, bool from_bot_menu = false, bool silent = false, string url = null, string start_param = null, DataJSON theme_params = null, int? reply_to_msg_id = null, int? top_msg_id = null, InputPeer send_as = null)
=> client.Invoke(new Messages_RequestWebView
{
flags = (Messages_RequestWebView.Flags)((from_bot_menu ? 0x10 : 0) | (silent ? 0x20 : 0) | (url != null ? 0x2 : 0) | (start_param != null ? 0x8 : 0) | (theme_params != null ? 0x4 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (send_as != null ? 0x2000 : 0)),
flags = (Messages_RequestWebView.Flags)((from_bot_menu ? 0x10 : 0) | (silent ? 0x20 : 0) | (url != null ? 0x2 : 0) | (start_param != null ? 0x8 : 0) | (theme_params != null ? 0x4 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x200 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
bot = bot,
url = url,
@ -3229,6 +3260,7 @@ namespace TL
theme_params = theme_params,
platform = platform,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
top_msg_id = top_msg_id.GetValueOrDefault(),
send_as = send_as,
});
@ -3239,14 +3271,15 @@ namespace TL
/// <param name="query_id">Web app interaction ID obtained from <a href="https://corefork.telegram.org/method/messages.requestWebView">messages.requestWebView</a></param>
/// <param name="reply_to_msg_id">Whether the inline message that will be sent by the bot on behalf of the user once the web app interaction is <a href="https://corefork.telegram.org/method/messages.sendWebViewResultMessage">terminated</a> should be sent in reply to this message ID.</param>
/// <param name="send_as">Open the web app as the specified peer</param>
public static Task<bool> Messages_ProlongWebView(this Client client, InputPeer peer, InputUserBase bot, long query_id, bool silent = false, int? reply_to_msg_id = null, InputPeer send_as = null)
public static Task<bool> Messages_ProlongWebView(this Client client, InputPeer peer, InputUserBase bot, long query_id, bool silent = false, int? reply_to_msg_id = null, int? top_msg_id = null, InputPeer send_as = null)
=> client.Invoke(new Messages_ProlongWebView
{
flags = (Messages_ProlongWebView.Flags)((silent ? 0x20 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (send_as != null ? 0x2000 : 0)),
flags = (Messages_ProlongWebView.Flags)((silent ? 0x20 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x200 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
bot = bot,
query_id = query_id,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
top_msg_id = top_msg_id.GetValueOrDefault(),
send_as = send_as,
});
@ -4123,6 +4156,7 @@ namespace TL
/// <summary>Get a list of sponsored messages <para>See <a href="https://corefork.telegram.org/method/channels.getSponsoredMessages"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/channels.getSponsoredMessages#possible-errors">details</a>)</para></summary>
/// <param name="channel">Peer</param>
/// <returns>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/messages.sponsoredMessagesEmpty">messages.sponsoredMessagesEmpty</a></returns>
public static Task<Messages_SponsoredMessages> Channels_GetSponsoredMessages(this Client client, InputChannelBase channel)
=> client.Invoke(new Channels_GetSponsoredMessages
{
@ -4167,6 +4201,101 @@ namespace TL
enabled = enabled,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.reorderUsernames"/></para></summary>
public static Task<bool> Channels_ReorderUsernames(this Client client, InputChannelBase channel, params string[] order)
=> client.Invoke(new Channels_ReorderUsernames
{
channel = channel,
order = order,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.toggleUsername"/></para></summary>
public static Task<bool> Channels_ToggleUsername(this Client client, InputChannelBase channel, string username, bool active)
=> client.Invoke(new Channels_ToggleUsername
{
channel = channel,
username = username,
active = active,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.deactivateAllUsernames"/></para></summary>
public static Task<bool> Channels_DeactivateAllUsernames(this Client client, InputChannelBase channel)
=> client.Invoke(new Channels_DeactivateAllUsernames
{
channel = channel,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.toggleForum"/></para></summary>
public static Task<UpdatesBase> Channels_ToggleForum(this Client client, InputChannelBase channel, bool enabled)
=> client.Invoke(new Channels_ToggleForum
{
channel = channel,
enabled = enabled,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.createForumTopic"/></para></summary>
public static Task<UpdatesBase> Channels_CreateForumTopic(this Client client, InputChannelBase channel, string title, long random_id, int? icon_color = null, long? icon_emoji_id = null, InputPeer send_as = null)
=> client.Invoke(new Channels_CreateForumTopic
{
flags = (Channels_CreateForumTopic.Flags)((icon_color != null ? 0x1 : 0) | (icon_emoji_id != null ? 0x8 : 0) | (send_as != null ? 0x4 : 0)),
channel = channel,
title = title,
icon_color = icon_color.GetValueOrDefault(),
icon_emoji_id = icon_emoji_id.GetValueOrDefault(),
random_id = random_id,
send_as = send_as,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.getForumTopics"/></para></summary>
public static Task<Messages_ForumTopics> Channels_GetForumTopics(this Client client, InputChannelBase channel, int offset_topic, DateTime offset_date = default, int offset_id = default, int limit = int.MaxValue, string q = null)
=> client.Invoke(new Channels_GetForumTopics
{
flags = (Channels_GetForumTopics.Flags)(q != null ? 0x1 : 0),
channel = channel,
q = q,
offset_date = offset_date,
offset_id = offset_id,
offset_topic = offset_topic,
limit = limit,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.getForumTopicsByID"/></para></summary>
public static Task<Messages_ForumTopics> Channels_GetForumTopicsByID(this Client client, InputChannelBase channel, params int[] topics)
=> client.Invoke(new Channels_GetForumTopicsByID
{
channel = channel,
topics = topics,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.editForumTopic"/></para></summary>
public static Task<UpdatesBase> Channels_EditForumTopic(this Client client, InputChannelBase channel, int topic_id, string title = null, long? icon_emoji_id = null, bool? closed = default)
=> client.Invoke(new Channels_EditForumTopic
{
flags = (Channels_EditForumTopic.Flags)((title != null ? 0x1 : 0) | (icon_emoji_id != null ? 0x2 : 0) | (closed != default ? 0x4 : 0)),
channel = channel,
topic_id = topic_id,
title = title,
icon_emoji_id = icon_emoji_id.GetValueOrDefault(),
closed = closed.GetValueOrDefault(),
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.updatePinnedForumTopic"/></para></summary>
public static Task<UpdatesBase> Channels_UpdatePinnedForumTopic(this Client client, InputChannelBase channel, int topic_id, bool pinned)
=> client.Invoke(new Channels_UpdatePinnedForumTopic
{
channel = channel,
topic_id = topic_id,
pinned = pinned,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.deleteTopicHistory"/></para></summary>
public static Task<Messages_AffectedHistory> Channels_DeleteTopicHistory(this Client client, InputChannelBase channel, int top_msg_id)
=> client.Invoke(new Channels_DeleteTopicHistory
{
channel = channel,
top_msg_id = top_msg_id,
});
/// <summary>Sends a custom request; for bots only <para>See <a href="https://corefork.telegram.org/method/bots.sendCustomRequest"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400,403 (<a href="https://corefork.telegram.org/method/bots.sendCustomRequest#possible-errors">details</a>)</para></summary>
/// <param name="custom_method">The method name</param>
/// <param name="params_">JSON-serialized method parameters</param>
@ -5592,12 +5721,11 @@ namespace TL.Methods
}
}
[TLDef(0x8D9D742B)]
[TLDef(0x3A5869EC)]
public class Account_GetTheme : IMethod<Theme>
{
public string format;
public InputThemeBase theme;
public long document_id;
}
[TLDef(0x7206E458)]
@ -5720,6 +5848,19 @@ namespace TL.Methods
[TLDef(0x18201AAE)]
public class Account_ClearRecentEmojiStatuses : IMethod<bool> { }
[TLDef(0xEF500EAB)]
public class Account_ReorderUsernames : IMethod<bool>
{
public string[] order;
}
[TLDef(0x58D6B376)]
public class Account_ToggleUsername : IMethod<bool>
{
public string username;
public bool active;
}
[TLDef(0x0D91A548)]
public class Users_GetUsers : IMethod<UserBase[]>
{
@ -6018,12 +6159,13 @@ namespace TL.Methods
}
}
[TLDef(0x0D9D75A4)]
[TLDef(0x1CC20387)]
public class Messages_SendMessage : IMethod<UpdatesBase>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int reply_to_msg_id;
[IfFlag(9)] public int top_msg_id;
public string message;
public long random_id;
[IfFlag(2)] public ReplyMarkup reply_markup;
@ -6040,6 +6182,7 @@ namespace TL.Methods
silent = 0x20,
background = 0x40,
clear_draft = 0x80,
has_top_msg_id = 0x200,
has_schedule_date = 0x400,
has_send_as = 0x2000,
noforwards = 0x4000,
@ -6047,12 +6190,13 @@ namespace TL.Methods
}
}
[TLDef(0xE25FF8E0)]
[TLDef(0x7547C966)]
public class Messages_SendMedia : IMethod<UpdatesBase>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int reply_to_msg_id;
[IfFlag(9)] public int top_msg_id;
public InputMedia media;
public string message;
public long random_id;
@ -6069,6 +6213,7 @@ namespace TL.Methods
silent = 0x20,
background = 0x40,
clear_draft = 0x80,
has_top_msg_id = 0x200,
has_schedule_date = 0x400,
has_send_as = 0x2000,
noforwards = 0x4000,
@ -6076,7 +6221,7 @@ namespace TL.Methods
}
}
[TLDef(0xCC30290B)]
[TLDef(0xC661BBC4)]
public class Messages_ForwardMessages : IMethod<UpdatesBase>
{
public Flags flags;
@ -6084,6 +6229,7 @@ namespace TL.Methods
public int[] id;
public long[] random_id;
public InputPeer to_peer;
[IfFlag(9)] public int top_msg_id;
[IfFlag(10)] public DateTime schedule_date;
[IfFlag(13)] public InputPeer send_as;
@ -6092,6 +6238,7 @@ namespace TL.Methods
silent = 0x20,
background = 0x40,
with_my_score = 0x100,
has_top_msg_id = 0x200,
has_schedule_date = 0x400,
drop_author = 0x800,
drop_media_captions = 0x1000,
@ -6476,12 +6623,13 @@ namespace TL.Methods
}
}
[TLDef(0x7AA11297)]
[TLDef(0xD3FBDCCB)]
public class Messages_SendInlineBotResult : IMethod<UpdatesBase>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int reply_to_msg_id;
[IfFlag(9)] public int top_msg_id;
public long random_id;
public long query_id;
public string id;
@ -6494,6 +6642,7 @@ namespace TL.Methods
silent = 0x20,
background = 0x40,
clear_draft = 0x80,
has_top_msg_id = 0x200,
has_schedule_date = 0x400,
hide_via = 0x800,
has_send_as = 0x2000,
@ -6590,11 +6739,12 @@ namespace TL.Methods
public InputDialogPeerBase[] peers;
}
[TLDef(0xBC39E14B)]
[TLDef(0xB4331E3F)]
public class Messages_SaveDraft : IMethod<bool>
{
public Flags flags;
[IfFlag(0)] public int reply_to_msg_id;
[IfFlag(2)] public int top_msg_id;
public InputPeer peer;
public string message;
[IfFlag(3)] public MessageEntity[] entities;
@ -6603,6 +6753,7 @@ namespace TL.Methods
{
has_reply_to_msg_id = 0x1,
no_webpage = 0x2,
has_top_msg_id = 0x4,
has_entities = 0x8,
}
}
@ -6839,21 +6990,35 @@ namespace TL.Methods
public bool unfave;
}
[TLDef(0x46578472)]
[TLDef(0xF107E790)]
public class Messages_GetUnreadMentions : IMethod<Messages_MessagesBase>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int top_msg_id;
public int offset_id;
public int add_offset;
public int limit;
public int max_id;
public int min_id;
[Flags] public enum Flags : uint
{
has_top_msg_id = 0x1,
}
}
[TLDef(0x0F0189D3)]
[TLDef(0x36E5BF4D)]
public class Messages_ReadMentions : IMethod<Messages_AffectedHistory>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int top_msg_id;
[Flags] public enum Flags : uint
{
has_top_msg_id = 0x1,
}
}
[TLDef(0x702A40E0)]
@ -6864,12 +7029,13 @@ namespace TL.Methods
public long hash;
}
[TLDef(0xF803138F)]
[TLDef(0xB6F11A1C)]
public class Messages_SendMultiMedia : IMethod<UpdatesBase>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int reply_to_msg_id;
[IfFlag(9)] public int top_msg_id;
public InputSingleMedia[] multi_media;
[IfFlag(10)] public DateTime schedule_date;
[IfFlag(13)] public InputPeer send_as;
@ -6880,6 +7046,7 @@ namespace TL.Methods
silent = 0x20,
background = 0x40,
clear_draft = 0x80,
has_top_msg_id = 0x200,
has_schedule_date = 0x400,
has_send_as = 0x2000,
noforwards = 0x4000,
@ -7003,11 +7170,18 @@ namespace TL.Methods
public string lang_code;
}
[TLDef(0x732EEF00)]
[TLDef(0x00AE7CC1)]
public class Messages_GetSearchCounters : IMethod<Messages_SearchCounter[]>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int top_msg_id;
public MessagesFilter[] filters;
[Flags] public enum Flags : uint
{
has_top_msg_id = 0x1,
}
}
[TLDef(0x198FB446)]
@ -7170,10 +7344,17 @@ namespace TL.Methods
public int read_max_id;
}
[TLDef(0xF025BC8B)]
[TLDef(0xEE22B9A8)]
public class Messages_UnpinAllMessages : IMethod<Messages_AffectedHistory>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int top_msg_id;
[Flags] public enum Flags : uint
{
has_top_msg_id = 0x1,
}
}
[TLDef(0x5BD0EE50)]
@ -7470,21 +7651,35 @@ namespace TL.Methods
}
}
[TLDef(0xE85BAE1A)]
[TLDef(0x3223495B)]
public class Messages_GetUnreadReactions : IMethod<Messages_MessagesBase>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int top_msg_id;
public int offset_id;
public int add_offset;
public int limit;
public int max_id;
public int min_id;
[Flags] public enum Flags : uint
{
has_top_msg_id = 0x1,
}
}
[TLDef(0x82E251D7)]
[TLDef(0x54AA7F8E)]
public class Messages_ReadReactions : IMethod<Messages_AffectedHistory>
{
public Flags flags;
public InputPeer peer;
[IfFlag(0)] public int top_msg_id;
[Flags] public enum Flags : uint
{
has_top_msg_id = 0x1,
}
}
[TLDef(0x107E31A0)]
@ -7514,7 +7709,7 @@ namespace TL.Methods
public bool enabled;
}
[TLDef(0xFC87A53C)]
[TLDef(0x178B480B)]
public class Messages_RequestWebView : IMethod<WebViewResult>
{
public Flags flags;
@ -7525,6 +7720,7 @@ namespace TL.Methods
[IfFlag(2)] public DataJSON theme_params;
public string platform;
[IfFlag(0)] public int reply_to_msg_id;
[IfFlag(9)] public int top_msg_id;
[IfFlag(13)] public InputPeer send_as;
[Flags] public enum Flags : uint
@ -7535,11 +7731,12 @@ namespace TL.Methods
has_start_param = 0x8,
from_bot_menu = 0x10,
silent = 0x20,
has_top_msg_id = 0x200,
has_send_as = 0x2000,
}
}
[TLDef(0xEA5FBCCE)]
[TLDef(0x7FF34309)]
public class Messages_ProlongWebView : IMethod<bool>
{
public Flags flags;
@ -7547,12 +7744,14 @@ namespace TL.Methods
public InputUserBase bot;
public long query_id;
[IfFlag(0)] public int reply_to_msg_id;
[IfFlag(9)] public int top_msg_id;
[IfFlag(13)] public InputPeer send_as;
[Flags] public enum Flags : uint
{
has_reply_to_msg_id = 0x1,
silent = 0x20,
has_top_msg_id = 0x200,
has_send_as = 0x2000,
}
}
@ -8226,6 +8425,110 @@ namespace TL.Methods
public bool enabled;
}
[TLDef(0xB45CED1D)]
public class Channels_ReorderUsernames : IMethod<bool>
{
public InputChannelBase channel;
public string[] order;
}
[TLDef(0x50F24105)]
public class Channels_ToggleUsername : IMethod<bool>
{
public InputChannelBase channel;
public string username;
public bool active;
}
[TLDef(0x0A245DD3)]
public class Channels_DeactivateAllUsernames : IMethod<bool>
{
public InputChannelBase channel;
}
[TLDef(0xA4298B29)]
public class Channels_ToggleForum : IMethod<UpdatesBase>
{
public InputChannelBase channel;
public bool enabled;
}
[TLDef(0xF40C0224)]
public class Channels_CreateForumTopic : IMethod<UpdatesBase>
{
public Flags flags;
public InputChannelBase channel;
public string title;
[IfFlag(0)] public int icon_color;
[IfFlag(3)] public long icon_emoji_id;
public long random_id;
[IfFlag(2)] public InputPeer send_as;
[Flags] public enum Flags : uint
{
has_icon_color = 0x1,
has_send_as = 0x4,
has_icon_emoji_id = 0x8,
}
}
[TLDef(0x0DE560D1)]
public class Channels_GetForumTopics : IMethod<Messages_ForumTopics>
{
public Flags flags;
public InputChannelBase channel;
[IfFlag(0)] public string q;
public DateTime offset_date;
public int offset_id;
public int offset_topic;
public int limit;
[Flags] public enum Flags : uint
{
has_q = 0x1,
}
}
[TLDef(0xB0831EB9)]
public class Channels_GetForumTopicsByID : IMethod<Messages_ForumTopics>
{
public InputChannelBase channel;
public int[] topics;
}
[TLDef(0x6C883E2D)]
public class Channels_EditForumTopic : IMethod<UpdatesBase>
{
public Flags flags;
public InputChannelBase channel;
public int topic_id;
[IfFlag(0)] public string title;
[IfFlag(1)] public long icon_emoji_id;
[IfFlag(2)] public bool closed;
[Flags] public enum Flags : uint
{
has_title = 0x1,
has_icon_emoji_id = 0x2,
has_closed = 0x4,
}
}
[TLDef(0x6C2D9026)]
public class Channels_UpdatePinnedForumTopic : IMethod<UpdatesBase>
{
public InputChannelBase channel;
public int topic_id;
public bool pinned;
}
[TLDef(0x34435F2D)]
public class Channels_DeleteTopicHistory : IMethod<Messages_AffectedHistory>
{
public InputChannelBase channel;
public int top_msg_id;
}
[TLDef(0xAA2769ED)]
public class Bots_SendCustomRequest : IMethod<DataJSON>
{

View file

@ -6,7 +6,7 @@ namespace TL
{
public static class Layer
{
public const int Version = 146; // fetched 14/09/2022 16:18:39
public const int Version = 148; // fetched 01/11/2022 17:33:23
internal const int SecretChats = 101;
internal const int MTProto2 = 73;
internal const uint VectorCtor = 0x1CB5C415;
@ -119,7 +119,7 @@ namespace TL
[0x36C6019A] = typeof(PeerChat),
[0xA2A5371E] = typeof(PeerChannel),
[0xD3BC4B7A] = typeof(UserEmpty),
[0x5D99ADEE] = typeof(User),
[0x8F97C628] = typeof(User),
[0x4F11BAE1] = null,//UserProfilePhotoEmpty
[0x82D1F706] = typeof(UserProfilePhoto),
[0x09D05049] = null,//UserStatusEmpty
@ -131,7 +131,7 @@ namespace TL
[0x29562865] = typeof(ChatEmpty),
[0x41CBF256] = typeof(Chat),
[0x6592A1A7] = typeof(ChatForbidden),
[0x8261AC61] = typeof(Channel),
[0x83259464] = typeof(Channel),
[0x17D493D5] = typeof(ChannelForbidden),
[0xC9D31138] = typeof(ChatFull),
[0xF2355507] = typeof(ChannelFull),
@ -191,6 +191,8 @@ namespace TL
[0x47DD8079] = typeof(MessageActionWebViewDataSentMe),
[0xB4C38CB5] = typeof(MessageActionWebViewDataSent),
[0xABA0F5C6] = typeof(MessageActionGiftPremium),
[0x0D999256] = typeof(MessageActionTopicCreate),
[0xB18A431C] = typeof(MessageActionTopicEdit),
[0xA8EDD0F5] = typeof(Dialog),
[0x71BD134C] = typeof(DialogFolder),
[0x2331B22D] = typeof(PhotoEmpty),
@ -211,6 +213,7 @@ namespace TL
[0x193B4417] = typeof(InputNotifyUsers),
[0x4A95E84E] = typeof(InputNotifyChats),
[0xB1DB7C7E] = typeof(InputNotifyBroadcasts),
[0x5C467992] = typeof(InputNotifyForumTopic),
[0xDF1F002B] = typeof(InputPeerNotifySettings),
[0xA83B0426] = typeof(PeerNotifySettings),
[0xA518110D] = typeof(PeerSettings),
@ -260,7 +263,7 @@ namespace TL
[0x83487AF0] = typeof(UpdateChatUserTyping),
[0x07761198] = typeof(UpdateChatParticipants),
[0xE5BDF8DE] = typeof(UpdateUserStatus),
[0xC3F202E0] = typeof(UpdateUserName),
[0xA7848924] = typeof(UpdateUserName),
[0xF227868C] = typeof(UpdateUserPhoto),
[0x12BCBD9A] = typeof(UpdateNewEncryptedMessage),
[0x1710F156] = typeof(UpdateEncryptedChatTyping),
@ -295,7 +298,7 @@ namespace TL
[0xE40370A3] = typeof(UpdateEditMessage),
[0x691E9052] = typeof(UpdateInlineBotCallbackQuery),
[0xB75F99A9] = typeof(UpdateReadChannelOutbox),
[0xEE2BB969] = typeof(UpdateDraftMessage),
[0x1B49EC6D] = typeof(UpdateDraftMessage),
[0x571D2742] = typeof(UpdateReadFeaturedStickers),
[0x9A422C20] = typeof(UpdateRecentStickers),
[0xA229DD06] = typeof(UpdateConfig),
@ -311,7 +314,7 @@ namespace TL
[0x46560264] = typeof(UpdateLangPackTooLong),
[0x56022F4D] = typeof(UpdateLangPack),
[0xE511996D] = typeof(UpdateFavedStickers),
[0x44BDD535] = typeof(UpdateChannelReadMessagesContents),
[0xEA29055D] = typeof(UpdateChannelReadMessagesContents),
[0x7084A7BE] = typeof(UpdateContactsReset),
[0xB23FC698] = typeof(UpdateChannelAvailableMessages),
[0xE16459C3] = typeof(UpdateDialogUnreadMark),
@ -348,7 +351,7 @@ namespace TL
[0x4D712F2E] = typeof(UpdateBotCommands),
[0x7063C3DB] = typeof(UpdatePendingJoinRequests),
[0x11DFA986] = typeof(UpdateBotChatInviteRequester),
[0x154798C3] = typeof(UpdateMessageReactions),
[0x5E1B3CB8] = typeof(UpdateMessageReactions),
[0x17B7A20B] = typeof(UpdateAttachMenuBots),
[0x1592B79D] = typeof(UpdateWebViewResultSent),
[0x14B85813] = typeof(UpdateBotMenuButton),
@ -360,6 +363,7 @@ namespace TL
[0x6F7863F4] = typeof(UpdateRecentReactions),
[0x86FCCF85] = typeof(UpdateMoveStickerSetToTop),
[0x5A73A98C] = typeof(UpdateMessageExtendedMedia),
[0xF694B0AE] = typeof(UpdateChannelPinnedTopic),
[0xA56C2A3E] = typeof(Updates_State),
[0x5D75A138] = typeof(Updates_DifferenceEmpty),
[0x00F49CA0] = typeof(Updates_Difference),
@ -410,6 +414,7 @@ namespace TL
[0xB4C83B4C] = typeof(NotifyUsers),
[0xC007CEC3] = typeof(NotifyChats),
[0xD612E8EF] = typeof(NotifyBroadcasts),
[0x226E6308] = typeof(NotifyForumTopic),
[0x16BF744E] = typeof(SendMessageTypingAction),
[0xFD5EC8F5] = typeof(SendMessageCancelAction),
[0xA187D66F] = typeof(SendMessageRecordVideoAction),
@ -486,8 +491,9 @@ namespace TL
[0xC88B3B02] = typeof(InputStickerSetPremiumGifts),
[0x04C4D4CE] = typeof(InputStickerSetEmojiGenericAnimations),
[0x29D0F5EE] = typeof(InputStickerSetEmojiDefaultStatuses),
[0x44C1F8E9] = typeof(InputStickerSetEmojiDefaultTopicIcons),
[0x2DD14EDC] = typeof(StickerSet),
[0xB60A24A6] = typeof(Messages_StickerSet),
[0x6E153F16] = typeof(Messages_StickerSet),
[0xD3F924EB] = null,//Messages_StickerSetNotModified
[0xC27AC8C7] = typeof(BotCommand),
[0x8F300B57] = typeof(BotInfo),
@ -613,7 +619,7 @@ namespace TL
[0x35E410A8] = typeof(Messages_StickerSetInstallResultArchive),
[0x6410A5D2] = typeof(StickerSetCovered),
[0x3407E51B] = typeof(StickerSetMultiCovered),
[0x1AED5EE5] = typeof(StickerSetFullCovered),
[0x40D13C0E] = typeof(StickerSetFullCovered),
[0xAED6DBB2] = typeof(MaskCoords),
[0x4A992157] = typeof(InputStickeredMediaPhoto),
[0x0438865B] = typeof(InputStickeredMediaDocument),
@ -750,6 +756,12 @@ namespace TL
[0xCB2AC766] = typeof(ChannelAdminLogEventActionToggleNoForwards),
[0x278F2868] = typeof(ChannelAdminLogEventActionSendMessage),
[0xBE4E0EF8] = typeof(ChannelAdminLogEventActionChangeAvailableReactions),
[0xF04FB3A9] = typeof(ChannelAdminLogEventActionChangeUsernames),
[0x02CC6383] = typeof(ChannelAdminLogEventActionToggleForum),
[0x58707D28] = typeof(ChannelAdminLogEventActionCreateTopic),
[0xF06FE208] = typeof(ChannelAdminLogEventActionEditTopic),
[0xAE168909] = typeof(ChannelAdminLogEventActionDeleteTopic),
[0x5D8D353B] = typeof(ChannelAdminLogEventActionPinTopic),
[0x1FAD68CD] = typeof(ChannelAdminLogEvent),
[0xED8AF74D] = typeof(Channels_AdminLogResults),
[0xEA107AE4] = typeof(ChannelAdminLogEventsFilter),
@ -953,7 +965,8 @@ namespace TL
[0xE9EFFC7D] = typeof(Account_ResetPasswordRequestedWait),
[0xE926D63E] = typeof(Account_ResetPasswordOk),
[0x3A836DF8] = typeof(SponsoredMessage),
[0x65A4C7D5] = typeof(Messages_SponsoredMessages),
[0xC9EE1D87] = typeof(Messages_SponsoredMessages),
[0x1839490F] = null,//Messages_SponsoredMessagesEmpty
[0xC9B0539F] = typeof(SearchResultsCalendarPeriod),
[0x147EE23C] = typeof(Messages_SearchResultsCalendar),
[0x7F648B67] = typeof(SearchResultPosition),
@ -1028,6 +1041,11 @@ namespace TL
[0xB81C7034] = typeof(SendAsPeer),
[0xAD628CC8] = typeof(MessageExtendedMediaPreview),
[0xEE479C64] = typeof(MessageExtendedMedia),
[0xFCFEB29C] = typeof(StickerKeyword),
[0xB4073647] = typeof(Username),
[0x023F109B] = typeof(ForumTopicDeleted),
[0x71701DA9] = typeof(ForumTopic),
[0x367617D3] = typeof(Messages_ForumTopics),
// from TL.Secret:
[0xBB718624] = typeof(Layer66.SendMessageUploadRoundAction),
[0xE50511D8] = typeof(Layer45.DecryptedMessageMediaWebPage),
@ -1130,6 +1148,7 @@ namespace TL
[typeof(DialogFilter)] = 0x363293AE, //dialogFilterDefault
[typeof(Help_CountriesList)] = 0x93CC1F32, //help.countriesListNotModified
[typeof(BotCommandScope)] = 0x2F6CB2AB, //botCommandScopeDefault
[typeof(Messages_SponsoredMessages)] = 0x1839490F, //messages.sponsoredMessagesEmpty
[typeof(Messages_AvailableReactions)] = 0x9F071957, //messages.availableReactionsNotModified
[typeof(AttachMenuBots)] = 0xF1D88A5C, //attachMenuBotsNotModified
[typeof(BotMenuButtonBase)] = 0x7533A588, //botMenuButtonDefault

View file

@ -59,14 +59,16 @@ namespace TL
writer.Write(ctorNb);
IEnumerable<FieldInfo> fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public);
if (tlDef.inheritBefore) fields = fields.GroupBy(f => f.DeclaringType).Reverse().SelectMany(g => g);
uint flags = 0;
ulong flags = 0;
IfFlagAttribute ifFlag;
foreach (var field in fields)
{
if (((ifFlag = field.GetCustomAttribute<IfFlagAttribute>()) != null) && (flags & (1U << ifFlag.Bit)) == 0) continue;
if (((ifFlag = field.GetCustomAttribute<IfFlagAttribute>()) != null) && (flags & (1UL << ifFlag.Bit)) == 0) continue;
object value = field.GetValue(obj);
writer.WriteTLValue(value, field.FieldType);
if (field.FieldType.IsEnum && field.Name == "flags") flags = (uint)value;
if (field.FieldType.IsEnum)
if (field.Name == "flags") flags = (uint)value;
else if (field.Name == "flags2") flags |= (ulong)(uint)value << 32;
}
}
@ -83,14 +85,16 @@ namespace TL
var obj = Activator.CreateInstance(type, true);
IEnumerable<FieldInfo> fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public);
if (tlDef.inheritBefore) fields = fields.GroupBy(f => f.DeclaringType).Reverse().SelectMany(g => g);
uint flags = 0;
ulong flags = 0;
IfFlagAttribute ifFlag;
foreach (var field in fields)
{
if (((ifFlag = field.GetCustomAttribute<IfFlagAttribute>()) != null) && (flags & (1U << ifFlag.Bit)) == 0) continue;
if (((ifFlag = field.GetCustomAttribute<IfFlagAttribute>()) != null) && (flags & (1UL << ifFlag.Bit)) == 0) continue;
object value = reader.ReadTLValue(field.FieldType);
field.SetValue(obj, value);
if (field.FieldType.IsEnum && field.Name == "flags") flags = (uint)value;
if (field.FieldType.IsEnum)
if (field.Name == "flags") flags = (uint)value;
else if (field.Name == "flags2") flags |= (ulong)(uint)value << 32;
if (reader.Client?.CollectAccessHash == true) reader.Client.CollectField(field, obj, value);
}
return (IObject)obj;