Browse Source

Merge pull request #57 from Lirusaito/master

Add support for changing Nicknames!
pull/58/head
RogueException 9 years ago
parent
commit
c6e919fb72
4 changed files with 40 additions and 3 deletions
  1. +23
    -0
      src/Discord.Net.Net45/API/Client/Rest/UpdateOwnNick.cs
  2. +1
    -0
      src/Discord.Net.Net45/Discord.Net.csproj
  3. +2
    -0
      src/Discord.Net/API/Client/Rest/UpdateMember.cs
  4. +14
    -3
      src/Discord.Net/Models/User.cs

+ 23
- 0
src/Discord.Net.Net45/API/Client/Rest/UpdateOwnNick.cs View File

@@ -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;
}
}
}

+ 1
- 0
src/Discord.Net.Net45/Discord.Net.csproj View File

@@ -601,6 +601,7 @@
<Compile Include="..\Discord.Net\TaskManager.cs">
<Link>TaskManager.cs</Link>
</Compile>
<Compile Include="API\Client\Rest\UpdateOwnNick.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>


+ 2
- 0
src/Discord.Net/API/Client/Rest/UpdateMember.cs View File

@@ -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)
{


+ 14
- 3
src/Discord.Net/Models/User.cs View File

@@ -247,7 +247,7 @@ namespace Discord
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");

@@ -258,14 +258,25 @@ namespace Discord
.Distinct()
.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)
{
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()


Loading…
Cancel
Save