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;