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/API/Client/Rest/UpdateMember.cs b/src/Discord.Net/API/Client/Rest/UpdateMember.cs
index ce1649bdd..24a25ce02 100644
--- a/src/Discord.Net/API/Client/Rest/UpdateMember.cs
+++ b/src/Discord.Net/API/Client/Rest/UpdateMember.cs
@@ -21,6 +21,8 @@ namespace Discord.API.Client.Rest
public ulong? VoiceChannelId { get; set; }
[JsonProperty("roles"), JsonConverter(typeof(LongStringArrayConverter))]
public ulong[] RoleIds { get; set; }
+ [JsonProperty("nick")]
+ public string Nickname { get; set; }
public UpdateMemberRequest(ulong guildId, ulong userId)
{
diff --git a/src/Discord.Net/Models/User.cs b/src/Discord.Net/Models/User.cs
index b2ab47135..728247c2b 100644
--- a/src/Discord.Net/Models/User.cs
+++ b/src/Discord.Net/Models/User.cs
@@ -247,7 +247,7 @@ namespace Discord
LastActivityAt = activity ?? DateTime.UtcNow;
}
- public Task Edit(bool? isMuted = null, bool? isDeafened = null, Channel voiceChannel = null, IEnumerable roles = null)
+ public Task Edit(bool? isMuted = null, bool? isDeafened = null, Channel voiceChannel = null, IEnumerable roles = null, string nickname = null)
{
if (Server == null) throw new InvalidOperationException("Unable to edit users in a private channel");
@@ -258,14 +258,25 @@ 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,
IsDeafened = isDeafened ?? IsServerDeafened,
VoiceChannelId = voiceChannel?.Id,
- RoleIds = roleIds
+ RoleIds = roleIds,
+ Nickname = nickname ?? Nickname
};
- return Client.ClientAPI.Send(request);
+ tasks.Add(Client.ClientAPI.Send(request));
+ return Task.WhenAll(tasks);
}
public Task Kick()