@@ -28,6 +28,7 @@ | |||||
public static string ServerBan(string serverId, string userId) => $"guilds/{serverId}/bans/{userId}"; | public static string ServerBan(string serverId, string userId) => $"guilds/{serverId}/bans/{userId}"; | ||||
public static string ServerRoles(string serverId) => $"guilds/{serverId}/roles"; | public static string ServerRoles(string serverId) => $"guilds/{serverId}/roles"; | ||||
public static string ServerRole(string serverId, string roleId) => $"guilds/{serverId}/roles/{roleId}"; | public static string ServerRole(string serverId, string roleId) => $"guilds/{serverId}/roles/{roleId}"; | ||||
public static string ServerPrune(string serverId, int days) => $"guilds/{serverId}/prune?days={days}"; | |||||
public const string Invites = "invite"; | public const string Invites = "invite"; | ||||
public static string Invite(string inviteId) => $"invite/{inviteId}"; | public static string Invite(string inviteId) => $"invite/{inviteId}"; | ||||
@@ -82,6 +82,12 @@ namespace Discord.API | |||||
public IEnumerable<string> Roles; | public IEnumerable<string> Roles; | ||||
} | } | ||||
public class PruneUsersResponse | |||||
{ | |||||
[JsonProperty("pruned")] | |||||
public int? Pruned; | |||||
} | |||||
//Events | //Events | ||||
internal sealed class MemberAddEvent : MemberInfo { } | internal sealed class MemberAddEvent : MemberInfo { } | ||||
internal sealed class MemberUpdateEvent : MemberInfo { } | internal sealed class MemberUpdateEvent : MemberInfo { } | ||||
@@ -136,7 +136,7 @@ namespace Discord | |||||
return _rest.Delete(Endpoints.Invite(inviteId)); | return _rest.Delete(Endpoints.Invite(inviteId)); | ||||
} | } | ||||
//Members | |||||
//Users | |||||
public Task EditUser(string serverId, string userId, bool? mute = null, bool? deaf = null, IEnumerable<string> roles = null) | public Task EditUser(string serverId, string userId, bool? mute = null, bool? deaf = null, IEnumerable<string> roles = null) | ||||
{ | { | ||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | ||||
@@ -145,27 +145,39 @@ namespace Discord | |||||
var request = new EditMemberRequest { Mute = mute, Deaf = deaf, Roles = roles }; | var request = new EditMemberRequest { Mute = mute, Deaf = deaf, Roles = roles }; | ||||
return _rest.Patch(Endpoints.ServerMember(serverId, userId), request); | return _rest.Patch(Endpoints.ServerMember(serverId, userId), request); | ||||
} | } | ||||
public Task Kick(string serverId, string userId) | |||||
public Task KickUser(string serverId, string userId) | |||||
{ | { | ||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | ||||
if (userId == null) throw new ArgumentNullException(nameof(userId)); | if (userId == null) throw new ArgumentNullException(nameof(userId)); | ||||
return _rest.Delete(Endpoints.ServerMember(serverId, userId)); | return _rest.Delete(Endpoints.ServerMember(serverId, userId)); | ||||
} | } | ||||
public Task Ban(string serverId, string userId) | |||||
public Task BanUser(string serverId, string userId) | |||||
{ | { | ||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | ||||
if (userId == null) throw new ArgumentNullException(nameof(userId)); | if (userId == null) throw new ArgumentNullException(nameof(userId)); | ||||
return _rest.Put(Endpoints.ServerBan(serverId, userId)); | return _rest.Put(Endpoints.ServerBan(serverId, userId)); | ||||
} | } | ||||
public Task Unban(string serverId, string userId) | |||||
public Task UnbanUser(string serverId, string userId) | |||||
{ | { | ||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | ||||
if (userId == null) throw new ArgumentNullException(nameof(userId)); | if (userId == null) throw new ArgumentNullException(nameof(userId)); | ||||
return _rest.Delete(Endpoints.ServerBan(serverId, userId)); | return _rest.Delete(Endpoints.ServerBan(serverId, userId)); | ||||
} | } | ||||
public async Task<int> PruneUsers(string serverId, int days, bool simulate) | |||||
{ | |||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | |||||
if (days <= 0) throw new ArgumentOutOfRangeException(nameof(days)); | |||||
PruneUsersResponse response; | |||||
if (simulate) | |||||
response = await _rest.Get<PruneUsersResponse>(Endpoints.ServerPrune(serverId, days)); | |||||
else | |||||
response = await _rest.Post<PruneUsersResponse>(Endpoints.ServerPrune(serverId, days)); | |||||
return response.Pruned ?? 0; | |||||
} | |||||
//Messages | //Messages | ||||
public Task<SendMessageResponse> SendMessage(string channelId, string message, IEnumerable<string> mentionedUserIds = null, string nonce = null, bool isTTS = false) | public Task<SendMessageResponse> SendMessage(string channelId, string message, IEnumerable<string> mentionedUserIds = null, string nonce = null, bool isTTS = false) | ||||
@@ -38,7 +38,7 @@ namespace Discord | |||||
if (user.Server == null) throw new ArgumentException("Unable to ban a user in a private chat."); | if (user.Server == null) throw new ArgumentException("Unable to ban a user in a private chat."); | ||||
CheckReady(); | CheckReady(); | ||||
return _api.Ban(user.Server.Id, user.Id); | |||||
return _api.BanUser(user.Server.Id, user.Id); | |||||
} | } | ||||
/// <summary> Unbans a user from the provided server. </summary> | /// <summary> Unbans a user from the provided server. </summary> | ||||
@@ -48,7 +48,7 @@ namespace Discord | |||||
if (userId == null) throw new ArgumentNullException(nameof(userId)); | if (userId == null) throw new ArgumentNullException(nameof(userId)); | ||||
CheckReady(); | CheckReady(); | ||||
try { await _api.Unban(server.Id, userId).ConfigureAwait(false); } | |||||
try { await _api.UnbanUser(server.Id, userId).ConfigureAwait(false); } | |||||
catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { } | catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { } | ||||
} | } | ||||
} | } |
@@ -173,6 +173,15 @@ namespace Discord | |||||
return _api.EditUser(user.Server?.Id, user.Id, mute: mute, deaf: deaf, roles: roles.Select(x => x.Id)); | return _api.EditUser(user.Server?.Id, user.Id, mute: mute, deaf: deaf, roles: roles.Select(x => x.Id)); | ||||
} | } | ||||
public Task<int> PruneUsers(string serverId, int days, bool simulate = false) | |||||
{ | |||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId)); | |||||
if (days <= 0) throw new ArgumentOutOfRangeException(nameof(days)); | |||||
CheckReady(); | |||||
return _api.PruneUsers(serverId, days, simulate); | |||||
} | |||||
public Task<EditUserResponse> EditProfile(string currentPassword = "", | public Task<EditUserResponse> EditProfile(string currentPassword = "", | ||||
string username = null, string email = null, string password = null, | string username = null, string email = null, string password = null, | ||||
ImageType avatarType = ImageType.Png, byte[] avatar = null) | ImageType avatarType = ImageType.Png, byte[] avatar = null) | ||||