diff --git a/src/Discord.Net/Models/User.cs b/src/Discord.Net/Models/User.cs index 365ebd04c..c87aa80f4 100644 --- a/src/Discord.Net/Models/User.cs +++ b/src/Discord.Net/Models/User.cs @@ -239,7 +239,7 @@ namespace Discord if (Server == null) throw new InvalidOperationException("Unable to edit users in a private channel"); //Modify the roles collection and filter out the everyone role - var roleIds = roles == null ? null : Roles.Where(x => !x.IsEveryone).Select(x => x.Id); + var roleIds = roles == null ? null : Roles.Where(x => !x.IsEveryone).Select(x => x.Id).Distinct(); var request = new UpdateMemberRequest(Server.Id, Id) { @@ -327,6 +327,15 @@ namespace Discord return _roles.ContainsKey(role.Id); } + + public Task AddRoles(params Role[] roles) + { + return Edit(roles: Roles.Concat(roles)); + } + public Task RemoveRoles(params Role[] roles) + { + return Edit(roles: Roles.Except(roles)); + } #endregion public override bool Equals(object obj) => obj is User && (obj as User).Id == Id;