diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
index 471b8ac9c..1f50ae596 100644
--- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
@@ -38,6 +38,10 @@ namespace Discord
/// Removes roles from this user in this guild.
Task RemoveRolesAsync(IEnumerable roles);
/// Adds and removes roles from this user in this guild.
- Task ChangeRolesAsync(IEnumerable add = null, IEnumerable remove = null);
+ Task ModifyRolesAsync(IEnumerable add = null, IEnumerable remove = null);
+ /// Replaces roles from this user in this guild.
+ Task ModifyRolesAsync(params IRole[] roles);
+ /// Replaces roles from this user in this guild.
+ Task ModifyRolesAsync(IEnumerable roles);
}
}
diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
index 5bc2d34b4..670b163dc 100644
--- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
+++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
@@ -83,14 +83,14 @@ namespace Discord.Rest
UpdateRoles(args.RoleIds.Value.ToArray());
}
public Task AddRolesAsync(params IRole[] roles)
- => ChangeRolesAsync(add: roles);
+ => ModifyRolesAsync(add: roles);
public Task AddRolesAsync(IEnumerable roles)
- => ChangeRolesAsync(add: roles);
+ => ModifyRolesAsync(add: roles);
public Task RemoveRolesAsync(params IRole[] roles)
- => ChangeRolesAsync(remove: roles);
+ => ModifyRolesAsync(remove: roles);
public Task RemoveRolesAsync(IEnumerable roles)
- => ChangeRolesAsync(remove: roles);
- public async Task ChangeRolesAsync(IEnumerable add = null, IEnumerable remove = null)
+ => ModifyRolesAsync(remove: roles);
+ public async Task ModifyRolesAsync(IEnumerable add = null, IEnumerable remove = null)
{
IEnumerable roleIds = RoleIds;
if (remove != null)
@@ -99,6 +99,12 @@ namespace Discord.Rest
roleIds = roleIds.Concat(add.Select(x => x.Id));
await ModifyAsync(x => x.RoleIds = roleIds.ToArray()).ConfigureAwait(false);
}
+ /// Replaces roles from this user in this guild.
+ Task ModifyRolesAsync(params IRole[] roles)
+ => ModifyRolesAsync(roles as IEnumerable);
+ /// Replaces roles from this user in this guild.
+ Task ModifyRolesAsync(IEnumerable roles)
+ => ModifyAsync(x => x.Roles = new Optional>(roles));
public Task KickAsync(RequestOptions options = null)
=> UserHelper.KickAsync(this, Discord, options);
diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs
index e0c95e9d8..a57a9eeac 100644
--- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs
+++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs
@@ -108,14 +108,14 @@ namespace Discord.WebSocket
public Task KickAsync(RequestOptions options = null)
=> UserHelper.KickAsync(this, Discord, options);
public Task AddRolesAsync(params IRole[] roles)
- => ChangeRolesAsync(add: roles);
+ => ModifyRolesAsync(add: roles);
public Task AddRolesAsync(IEnumerable roles)
- => ChangeRolesAsync(add: roles);
+ => ModifyRolesAsync(add: roles);
public Task RemoveRolesAsync(params IRole[] roles)
- => ChangeRolesAsync(remove: roles);
+ => ModifyRolesAsync(remove: roles);
public Task RemoveRolesAsync(IEnumerable roles)
- => ChangeRolesAsync(remove: roles);
- public async Task ChangeRolesAsync(IEnumerable add = null, IEnumerable remove = null)
+ => ModifyRolesAsync(remove: roles);
+ public async Task ModifyRolesAsync(IEnumerable add = null, IEnumerable remove = null)
{
IEnumerable roleIds = _roleIds;
if (remove != null)
@@ -124,6 +124,12 @@ namespace Discord.WebSocket
roleIds = roleIds.Concat(add.Select(x => x.Id));
await ModifyAsync(x => x.RoleIds = roleIds.ToArray()).ConfigureAwait(false);
}
+ /// Replaces roles from this user in this guild.
+ Task ModifyRolesAsync(params IRole[] roles)
+ => ModifyRolesAsync(roles as IEnumerable);
+ /// Replaces roles from this user in this guild.
+ Task ModifyRolesAsync(IEnumerable roles)
+ => ModifyAsync(x => x.Roles = new Optional>(roles));
public ChannelPermissions GetPermissions(IGuildChannel channel)
=> new ChannelPermissions(Permissions.ResolveChannel(Guild, this, channel, GuildPermissions.RawValue));