Browse Source

Added Role.IsEveryone and Role.Members

tags/docs-0.9
RogueException 9 years ago
parent
commit
d3fa8563f4
3 changed files with 14 additions and 4 deletions
  1. +1
    -1
      src/Discord.Net/Collections/Roles.cs
  2. +1
    -1
      src/Discord.Net/DiscordClient.cs
  3. +12
    -2
      src/Discord.Net/Models/Role.cs

+ 1
- 1
src/Discord.Net/Collections/Roles.cs View File

@@ -9,7 +9,7 @@ namespace Discord.Collections
internal Roles(DiscordClient client, object 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);

protected override void OnCreated(Role item)


+ 1
- 1
src/Discord.Net/DiscordClient.cs View File

@@ -473,7 +473,7 @@ namespace Discord
case "GUILD_ROLE_CREATE":
{
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);
RaiseRoleUpdated(role);
}


+ 12
- 2
src/Discord.Net/Models/Role.cs View File

@@ -1,4 +1,6 @@
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;

namespace Discord
{
@@ -20,13 +22,21 @@ namespace Discord
[JsonIgnore]
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;
Id = id;
ServerId = serverId;
Permissions = new PackedPermissions(true);
}
IsEveryone = isEveryone;
}

internal void Update(API.RoleInfo model)
{


Loading…
Cancel
Save