Add support for changing Nicknames!pull/58/head
@@ -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; | |||||
} | |||||
} | |||||
} |
@@ -601,6 +601,7 @@ | |||||
<Compile Include="..\Discord.Net\TaskManager.cs"> | <Compile Include="..\Discord.Net\TaskManager.cs"> | ||||
<Link>TaskManager.cs</Link> | <Link>TaskManager.cs</Link> | ||||
</Compile> | </Compile> | ||||
<Compile Include="API\Client\Rest\UpdateOwnNick.cs" /> | |||||
<Compile Include="Properties\AssemblyInfo.cs" /> | <Compile Include="Properties\AssemblyInfo.cs" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -21,6 +21,8 @@ namespace Discord.API.Client.Rest | |||||
public ulong? VoiceChannelId { get; set; } | public ulong? VoiceChannelId { get; set; } | ||||
[JsonProperty("roles"), JsonConverter(typeof(LongStringArrayConverter))] | [JsonProperty("roles"), JsonConverter(typeof(LongStringArrayConverter))] | ||||
public ulong[] RoleIds { get; set; } | public ulong[] RoleIds { get; set; } | ||||
[JsonProperty("nick")] | |||||
public string Nickname { get; set; } | |||||
public UpdateMemberRequest(ulong guildId, ulong userId) | public UpdateMemberRequest(ulong guildId, ulong userId) | ||||
{ | { | ||||
@@ -247,7 +247,7 @@ namespace Discord | |||||
LastActivityAt = activity ?? DateTime.UtcNow; | LastActivityAt = activity ?? DateTime.UtcNow; | ||||
} | } | ||||
public Task Edit(bool? isMuted = null, bool? isDeafened = null, Channel voiceChannel = null, IEnumerable<Role> roles = null) | |||||
public Task Edit(bool? isMuted = null, bool? isDeafened = null, Channel voiceChannel = null, IEnumerable<Role> roles = null, string nickname = null) | |||||
{ | { | ||||
if (Server == null) throw new InvalidOperationException("Unable to edit users in a private channel"); | if (Server == null) throw new InvalidOperationException("Unable to edit users in a private channel"); | ||||
@@ -258,14 +258,25 @@ namespace Discord | |||||
.Distinct() | .Distinct() | ||||
.ToArray(); | .ToArray(); | ||||
var tasks = new List<Task>(); | |||||
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) | var request = new UpdateMemberRequest(Server.Id, Id) | ||||
{ | { | ||||
IsMuted = isMuted ?? IsServerMuted, | IsMuted = isMuted ?? IsServerMuted, | ||||
IsDeafened = isDeafened ?? IsServerDeafened, | IsDeafened = isDeafened ?? IsServerDeafened, | ||||
VoiceChannelId = voiceChannel?.Id, | 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() | public Task Kick() | ||||