Luski.Net/Luski.net/Structures/Public/Role.cs

34 lines
1.1 KiB
C#

using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Luski.Shared.PublicServers.V1.Enums;
namespace Luski.net.Structures.Public;
public class Role
{
public required PublicServer Server { get; init; } = default!;
public required long ID { get; init; } = default!;
public required string Name { get; init; } = default!;
public required int Index { get; init; } = default!;
public required Color Color { get; init; } = default!;
public required string Description { get; init; } = default!;
public required string DisplayName { get; init; } = default!;
public required ServerPermission ServerPermissions { get; init; } = default!;
public required long[] MembersListID { get; init; } = default!;
private List<SocketUser>? RawUsers = null;
public async Task<SocketUser[]> GetMembers()
{
if (RawUsers is null)
{
RawUsers = new();
foreach (long m in MembersListID)
{
RawUsers.Add(await Server.GetUser<SocketUser>(m, CancellationToken.None));
}
}
return RawUsers!.ToArray();
}
}