diff --git a/src/Client.cs b/src/Client.cs index 7c88cdc..80e4c42 100644 --- a/src/Client.cs +++ b/src/Client.cs @@ -46,6 +46,8 @@ namespace WTelegram public bool IsMainDC => (_dcSession?.DataCenter?.id ?? 0) == _session.MainDC; /// Has this Client established connection been disconnected? public bool Disconnected => _tcpClient != null && !(_tcpClient.Client?.Connected ?? false); + /// ID of the current logged-in user or 0 + public long UserId => _session.UserId; /// Used to indicate progression of file download/upload /// total size of file in bytes, or 0 if unknown diff --git a/src/TL.Helpers.cs b/src/TL.Helpers.cs index 5649e59..6dcd110 100644 --- a/src/TL.Helpers.cs +++ b/src/TL.Helpers.cs @@ -14,11 +14,19 @@ namespace TL InputPeer ToInputPeer(); } - partial class InputPeer { public static InputPeerSelf Self => new(); } - partial class InputUser { public static InputUserSelf Self => new(); } - partial class InputPeerChannel { public static implicit operator InputChannel(InputPeerChannel channel) => new() { channel_id = channel.channel_id, access_hash = channel.access_hash }; } - partial class InputPeerUser { public static implicit operator InputUser(InputPeerUser user) => new() { user_id = user.user_id, access_hash = user.access_hash }; } - partial class InputUser { public static implicit operator InputPeerUser(InputUser user) => new() { user_id = user.user_id, access_hash = user.access_hash }; } + partial class InputPeer { public static InputPeerSelf Self => new(); } + partial class InputPeerChannel { public static implicit operator InputChannel(InputPeerChannel channel) => new() { channel_id = channel.channel_id, access_hash = channel.access_hash }; } + partial class InputPeerUser { public static implicit operator InputUser(InputPeerUser user) => new() { user_id = user.user_id, access_hash = user.access_hash }; } + + partial class InputUserBase { public abstract long? UserId { get; } } + partial class InputUserSelf { public override long? UserId => null; } + partial class InputUserFromMessage { public override long? UserId => user_id; } + partial class InputUser + { + public override long? UserId => user_id; + public static InputUserSelf Self => new(); + public static implicit operator InputPeerUser(InputUser user) => new() { user_id = user.user_id, access_hash = user.access_hash }; + } partial class InputFileBase { diff --git a/src/TL.Schema.cs b/src/TL.Schema.cs index e97063b..6b14130 100644 --- a/src/TL.Schema.cs +++ b/src/TL.Schema.cs @@ -87,10 +87,10 @@ namespace TL /// Defines a user for subsequent interaction. Derived classes: , , See /// a null value means inputUserEmpty - public abstract class InputUserBase : IObject { } + public abstract partial class InputUserBase : IObject { } /// Defines the current user. See [TLDef(0xF7C1B13F)] - public class InputUserSelf : InputUserBase { } + public partial class InputUserSelf : InputUserBase { } /// Defines a user for further interaction. See [TLDef(0xF21158C6)] public partial class InputUser : InputUserBase @@ -102,7 +102,7 @@ namespace TL } /// Defines a min user that was seen in a certain message of a certain chat. See [TLDef(0x1DA448E2)] - public class InputUserFromMessage : InputUserBase + public partial class InputUserFromMessage : InputUserBase { /// The chat where the user was seen public InputPeer peer;