diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs
index b1b430178..1cfe6c8bf 100644
--- a/src/Discord.Net.WebSocket/BaseSocketClient.cs
+++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs
@@ -47,7 +47,7 @@ namespace Discord.WebSocket
///
/// Gets the current logged-in user.
///
- public new SocketSelfUser CurrentUser { get => base.CurrentUser as SocketSelfUser; protected set => base.CurrentUser = value; }
+ public virtual new SocketSelfUser CurrentUser { get => base.CurrentUser as SocketSelfUser; protected set => base.CurrentUser = value; }
///
/// Gets a collection of guilds that the user is currently in.
///
diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs
index ea50a571e..e6d05b525 100644
--- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs
+++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs
@@ -40,7 +40,9 @@ namespace Discord.WebSocket
///
/// Provides access to a REST-only client with a shared state from this client.
///
- public override DiscordSocketRestClient Rest => _shards[0].Rest;
+ public override DiscordSocketRestClient Rest => _shards?[0].Rest;
+
+ public override SocketSelfUser CurrentUser { get => _shards?.FirstOrDefault(x => x.CurrentUser != null)?.CurrentUser; protected set => throw new InvalidOperationException(); }
/// Creates a new REST/WebSocket Discord client.
public DiscordShardedClient() : this(null, new DiscordSocketConfig()) { }
@@ -330,14 +332,6 @@ namespace Discord.WebSocket
}
return Task.Delay(0);
};
- if (isPrimary)
- {
- client.Ready += () =>
- {
- CurrentUser = client.CurrentUser;
- return Task.Delay(0);
- };
- }
client.Connected += () => _shardConnectedEvent.InvokeAsync(client);
client.Disconnected += (exception) => _shardDisconnectedEvent.InvokeAsync(exception, client);
diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs
index 5103bf7c3..c419bb764 100644
--- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs
+++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs
@@ -193,11 +193,6 @@ namespace Discord.WebSocket
base.Dispose(disposing);
}
- ///
- internal override async Task OnLoginAsync(TokenType tokenType, string token)
- {
- await Rest.OnLoginAsync(tokenType, token);
- }
///
internal override async Task OnLogoutAsync()
{