Files
Discord.Net/src/Discord.Net.Core/Extensions/GuildUserExtensions.cs
james7132 97a6bf6b6e Add IGuildUser.Hirearchy, added docstrings
Property can be renamed as needed.
2016-10-29 23:05:56 +00:00

41 lines
1.5 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Discord
{
public static class GuildUserExtensions
{
public static Task AddRolesAsync(this IGuildUser user, params IRole[] roles)
=> AddRolesAsync(user, (IEnumerable<IRole>)roles);
public static Task AddRolesAsync(this IGuildUser user, IEnumerable<IRole> roles)
=> user.ModifyAsync(x => x.RoleIds = user.RoleIds.Concat(roles.Select(y => y.Id)).ToArray());
public static Task RemoveRolesAsync(this IGuildUser user, params IRole[] roles)
=> RemoveRolesAsync(user, (IEnumerable<IRole>)roles);
public static Task RemoveRolesAsync(this IGuildUser user, IEnumerable<IRole> roles)
=> user.ModifyAsync(x => x.RoleIds = user.RoleIds.Except(roles.Select(y => y.Id)).ToArray());
public static IEnumerable<IRole> GetRoles(this IGuildUser user) {
var guild = user.Guild;
return user.RoleIds.Select(r => guild.GetRole(r));
}
internal static int GetHirearchy(this IGuildUser user) {
if(user == null)
return -1;
if(user.Id == user.Guild.OwnerId)
return int.MaxValue;
return user.GetRoles().Max(r => r.Position);
}
internal static int CompareRole(this IGuildUser user, IRole role) {
if(user == null)
return -1;
if(role == null)
return 1;
return -user.Hirearchy.CompareTo(role.Position);
}
}
}