Fix role comparison
This commit is contained in:
19
src/Discord.Net.Core/Extensions/RoleExtensions.cs
Normal file
19
src/Discord.Net.Core/Extensions/RoleExtensions.cs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Discord
|
||||||
|
{
|
||||||
|
public static class RoleExtensions
|
||||||
|
{
|
||||||
|
internal static int Compare(this IRole r1, IRole r2) {
|
||||||
|
if(r2 == null)
|
||||||
|
return 1;
|
||||||
|
var result = r1.Position.CompareTo(r2.Position);
|
||||||
|
// As per Discord's documentation, a tie is broken by ID
|
||||||
|
if(result != 0)
|
||||||
|
return result;
|
||||||
|
return r1.Id.CompareTo(r2.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -55,6 +55,6 @@ namespace Discord.Rest { [DebuggerDisplay(@"{DebuggerDisplay,nq}")]
|
|||||||
|
|
||||||
//IRole
|
//IRole
|
||||||
IGuild IRole.Guild => Guild;
|
IGuild IRole.Guild => Guild;
|
||||||
public int CompareTo(IRole role) => Position.CompareTo(role.Position);
|
public int CompareTo(IRole role) => this.Compare(role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,6 @@ namespace Discord.WebSocket
|
|||||||
|
|
||||||
//IRole
|
//IRole
|
||||||
IGuild IRole.Guild => Guild;
|
IGuild IRole.Guild => Guild;
|
||||||
public int CompareTo(IRole role) => Position.CompareTo(role.Position);
|
public int CompareTo(IRole role) => this.CompareTo(role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user