diff --git a/src/Discord.Net.Net45/API/Client/Rest/UpdateOwnNick.cs b/src/Discord.Net.Net45/API/Client/Rest/UpdateOwnNick.cs
new file mode 100644
index 000000000..f936d9506
--- /dev/null
+++ b/src/Discord.Net.Net45/API/Client/Rest/UpdateOwnNick.cs
@@ -0,0 +1,23 @@
+using Newtonsoft.Json;
+
+namespace Discord.API.Client.Rest
+{
+ [JsonObject(MemberSerialization.OptIn)]
+ public class UpdateOwnNick : IRestRequest
+ {
+ string IRestRequest.Method => "PATCH";
+ string IRestRequest.Endpoint => $"guilds/{GuildId}/members/@me/nick";
+ object IRestRequest.Payload => this;
+
+ public ulong GuildId { get; set; }
+
+ [JsonProperty("nick")]
+ public string Nickname { get; set; }
+
+ public UpdateOwnNick(ulong guildId, string nickname)
+ {
+ GuildId = guildId;
+ Nickname = nickname;
+ }
+ }
+}
diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj
index 56cd26bf7..f3b59e9cf 100644
--- a/src/Discord.Net.Net45/Discord.Net.csproj
+++ b/src/Discord.Net.Net45/Discord.Net.csproj
@@ -601,6 +601,7 @@
TaskManager.cs
+
diff --git a/src/Discord.Net/Models/User.cs b/src/Discord.Net/Models/User.cs
index 486c999b2..728247c2b 100644
--- a/src/Discord.Net/Models/User.cs
+++ b/src/Discord.Net/Models/User.cs
@@ -258,6 +258,15 @@ namespace Discord
.Distinct()
.ToArray();
+ var tasks = new List();
+ if (nickname != null && this == Server.CurrentUser)
+ {
+ var task = Client.ClientAPI.Send(new UpdateOwnNick(Server.Id, nickname));
+ if (isMuted == null && isDeafened == null && voiceChannel == null && roles == null)
+ return task;
+ tasks.Add(task);
+ nickname = null;
+ }
var request = new UpdateMemberRequest(Server.Id, Id)
{
IsMuted = isMuted ?? IsServerMuted,
@@ -266,7 +275,8 @@ namespace Discord
RoleIds = roleIds,
Nickname = nickname ?? Nickname
};
- return Client.ClientAPI.Send(request);
+ tasks.Add(Client.ClientAPI.Send(request));
+ return Task.WhenAll(tasks);
}
public Task Kick()