Added Role.IsEveryone and Role.Members
This commit is contained in:
@@ -9,7 +9,7 @@ namespace Discord.Collections
|
|||||||
internal Roles(DiscordClient client, object writerLock)
|
internal Roles(DiscordClient client, object writerLock)
|
||||||
: base(client, writerLock) { }
|
: base(client, writerLock) { }
|
||||||
|
|
||||||
internal Role GetOrAdd(string id, string serverId) => GetOrAdd(id, () => new Role(_client, id, serverId));
|
internal Role GetOrAdd(string id, string serverId, bool isEveryone) => GetOrAdd(id, () => new Role(_client, id, serverId, isEveryone));
|
||||||
internal new Role TryRemove(string id) => base.TryRemove(id);
|
internal new Role TryRemove(string id) => base.TryRemove(id);
|
||||||
|
|
||||||
protected override void OnCreated(Role item)
|
protected override void OnCreated(Role item)
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ namespace Discord
|
|||||||
case "GUILD_ROLE_CREATE":
|
case "GUILD_ROLE_CREATE":
|
||||||
{
|
{
|
||||||
var data = e.Payload.ToObject<GuildRoleCreateEvent>(_serializer);
|
var data = e.Payload.ToObject<GuildRoleCreateEvent>(_serializer);
|
||||||
var role = _roles.GetOrAdd(data.Data.Id, data.GuildId);
|
var role = _roles.GetOrAdd(data.Data.Id, data.GuildId, false);
|
||||||
role.Update(data.Data);
|
role.Update(data.Data);
|
||||||
RaiseRoleUpdated(role);
|
RaiseRoleUpdated(role);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
@@ -20,13 +22,21 @@ namespace Discord
|
|||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public Server Server => _client.Servers[ServerId];
|
public Server Server => _client.Servers[ServerId];
|
||||||
|
|
||||||
internal Role(DiscordClient client, string id, string serverId)
|
/// <summary> Returns true if this is the role representing all users in a server. </summary>
|
||||||
|
public bool IsEveryone { get; }
|
||||||
|
/// <summary> Returns a list of the ids of all members in this role. </summary>
|
||||||
|
public IEnumerable<string> MemberIds { get { return IsEveryone ? Server.UserIds : Server.Members.Where(x => x.RoleIds.Contains(Id)).Select(x => x.UserId); } }
|
||||||
|
/// <summary> Returns a list of all members in this role. </summary>
|
||||||
|
public IEnumerable<Member> Members { get { return IsEveryone ? Server.Members : Server.Members.Where(x => x.RoleIds.Contains(Id)); } }
|
||||||
|
|
||||||
|
internal Role(DiscordClient client, string id, string serverId, bool isEveryone)
|
||||||
{
|
{
|
||||||
_client = client;
|
_client = client;
|
||||||
Id = id;
|
Id = id;
|
||||||
ServerId = serverId;
|
ServerId = serverId;
|
||||||
Permissions = new PackedPermissions(true);
|
Permissions = new PackedPermissions(true);
|
||||||
}
|
IsEveryone = isEveryone;
|
||||||
|
}
|
||||||
|
|
||||||
internal void Update(API.RoleInfo model)
|
internal void Update(API.RoleInfo model)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user