diff --git a/src/Discord.Net/DiscordClient.Users.cs b/src/Discord.Net/DiscordClient.Users.cs
index ac6755417..fae87ed90 100644
--- a/src/Discord.Net/DiscordClient.Users.cs
+++ b/src/Discord.Net/DiscordClient.Users.cs
@@ -108,9 +108,12 @@ namespace Discord
RaiseEvent(nameof(ProfileUpdated), () => ProfileUpdated(this, EventArgs.Empty));
}
- /// Returns the current logged-in user.
- public User CurrentUser => _currentUser;
- private User _currentUser;
+ /// Returns the current logged-in user in a private channel.
+ internal User PrivateUser => _privateUser;
+ private User _privateUser;
+
+ /// Returns information about the currently logged-in account.
+ public GlobalUser CurrentUser => _privateUser.GlobalUser;
/// Returns a collection of all users this client can currently see.
internal GlobalUsers GlobalUsers => _globalUsers;
@@ -244,7 +247,7 @@ namespace Discord
CheckReady();
return _api.EditUser(currentPassword: currentPassword,
- username: username ?? _currentUser?.Name, email: email ?? _currentUser?.GlobalUser.Email, password: password,
+ username: username ?? _privateUser?.Name, email: email ?? _privateUser?.GlobalUser.Email, password: password,
avatarType: avatarType, avatar: avatar);
}
diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs
index 27a3f342d..18b0e41a1 100644
--- a/src/Discord.Net/DiscordClient.cs
+++ b/src/Discord.Net/DiscordClient.cs
@@ -270,7 +270,7 @@ namespace Discord
_servers.Clear();
_globalUsers.Clear();
- _currentUser = null;
+ _privateUser = null;
}
public T AddService(T obj)
@@ -309,9 +309,9 @@ namespace Discord
{
base.OnReceivedEvent(e).Wait(); //This cannot be an await, or we'll get later messages before we're ready
var data = e.Payload.ToObject(_serializer);
- _currentUser = _users.GetOrAdd(data.User.Id, null);
- _currentUser.Update(data.User);
- _currentUser.GlobalUser.Update(data.User);
+ _privateUser = _users.GetOrAdd(data.User.Id, null);
+ _privateUser.Update(data.User);
+ _privateUser.GlobalUser.Update(data.User);
foreach (var model in data.Guilds)
{
if (!model.Unavailable)
diff --git a/src/Discord.Net/Models/Channel.cs b/src/Discord.Net/Models/Channel.cs
index 98f2f1c9e..ce4df6e80 100644
--- a/src/Discord.Net/Models/Channel.cs
+++ b/src/Discord.Net/Models/Channel.cs
@@ -168,7 +168,7 @@ namespace Discord
{
_members = new Dictionary()
{
- { _client.CurrentUserId, _client.CurrentUser },
+ { _client.CurrentUserId, _client.PrivateUser },
{ _recipient.Id, _recipient.Value }
};
}
diff --git a/src/Discord.Net/Models/GlobalUser.cs b/src/Discord.Net/Models/GlobalUser.cs
index 6eb3a24ae..59e041296 100644
--- a/src/Discord.Net/Models/GlobalUser.cs
+++ b/src/Discord.Net/Models/GlobalUser.cs
@@ -3,11 +3,10 @@ using Newtonsoft.Json;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
-using System.Threading;
namespace Discord
{
- internal sealed class GlobalUser : CachedObject
+ public sealed class GlobalUser : CachedObject
{
private readonly ConcurrentDictionary _users;
@@ -22,7 +21,7 @@ namespace Discord
/// Returns the private messaging channel with this user, if one exists.
[JsonIgnore]
- public Channel PrivateChannel
+ internal Channel PrivateChannel
{
get { return _privateChannel; }
internal set
@@ -36,7 +35,7 @@ namespace Discord
/// Returns a collection of all server-specific data for every server this user is a member of.
[JsonIgnore]
- public IEnumerable Memberships => _users.Select(x => _client.Users[Id, x.Key]);
+ internal IEnumerable Memberships => _users.Select(x => _client.Users[Id, x.Key]);
internal GlobalUser(DiscordClient client, string id)
: base(client, id)
diff --git a/src/Discord.Net/Models/Message.cs b/src/Discord.Net/Models/Message.cs
index a9d045414..4245fa28a 100644
--- a/src/Discord.Net/Models/Message.cs
+++ b/src/Discord.Net/Models/Message.cs
@@ -244,7 +244,7 @@ namespace Discord
}
else
{
- var me = _client.CurrentUser;
+ var me = _client.PrivateUser;
IsMentioningMe = MentionedUsers?.Contains(me) ?? false;
}
}