Implemented IComparable<IRole> on IGuildUser
This commit is contained in:
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
|||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
/// <summary> A Guild-User pairing. </summary>
|
/// <summary> A Guild-User pairing. </summary>
|
||||||
public interface IGuildUser : IUser, IVoiceState, IComparable<IGuildUser>
|
public interface IGuildUser : IUser, IVoiceState, IComparable<IGuildUser>, IComparable<IRole>
|
||||||
{
|
{
|
||||||
/// <summary> Gets when this user joined this guild. </summary>
|
/// <summary> Gets when this user joined this guild. </summary>
|
||||||
DateTimeOffset? JoinedAt { get; }
|
DateTimeOffset? JoinedAt { get; }
|
||||||
|
|||||||
@@ -22,10 +22,15 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal static int Compare(this IGuildUser u1, IGuildUser u2) {
|
internal static int Compare(this IGuildUser u1, IGuildUser u2) {
|
||||||
|
// These should never be empty since the everyone role is always present
|
||||||
var r1 = u1.GetRoles().Max();
|
var r1 = u1.GetRoles().Max();
|
||||||
var r2 = u2.GetRoles().Max();
|
var r2 = u2.GetRoles().Max();
|
||||||
var result = r1.CompareTo(r2);
|
var result = r1.CompareTo(r2);
|
||||||
return result != 0 ? result : u1.Id.CompareTo(u2.Id);
|
return result != 0 ? result : u1.Id.CompareTo(u2.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static int Compare(this IGuildUser user, IRole role) {
|
||||||
|
return user.GetRoles().Max().CompareTo(role);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ namespace Discord.Rest
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int CompareTo(IGuildUser user) => this.Compare(user);
|
public int CompareTo(IGuildUser user) => this.Compare(user);
|
||||||
|
public int CompareTo(IRole role) => this.Compare(role);
|
||||||
|
|
||||||
//IVoiceState
|
//IVoiceState
|
||||||
bool IVoiceState.IsSelfDeafened => false;
|
bool IVoiceState.IsSelfDeafened => false;
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ namespace Discord.WebSocket
|
|||||||
ulong IGuildUser.GuildId => Guild.Id;
|
ulong IGuildUser.GuildId => Guild.Id;
|
||||||
IReadOnlyCollection<ulong> IGuildUser.RoleIds => RoleIds;
|
IReadOnlyCollection<ulong> IGuildUser.RoleIds => RoleIds;
|
||||||
public int CompareTo(IGuildUser user) => this.Compare(user);
|
public int CompareTo(IGuildUser user) => this.Compare(user);
|
||||||
|
public int CompareTo(IRole role) => this.Compare(role);
|
||||||
|
|
||||||
//IUser
|
//IUser
|
||||||
Task<IDMChannel> IUser.GetDMChannelAsync(CacheMode mode, RequestOptions options)
|
Task<IDMChannel> IUser.GetDMChannelAsync(CacheMode mode, RequestOptions options)
|
||||||
|
|||||||
Reference in New Issue
Block a user