namespace Myriad.Types { public record Channel { public enum ChannelType { GuildText = 0, Dm = 1, GuildVoice = 2, GroupDm = 3, GuildCategory = 4, GuildNews = 5, GuildStore = 6, GuildNewsThread = 10, GuildPublicThread = 11, GuildPrivateThread = 12, GuildStageVoice = 13 } public ulong Id { get; init; } public ChannelType Type { get; init; } public ulong? GuildId { get; init; } public int? Position { get; init; } public string? Name { get; init; } public string? Topic { get; init; } public bool? Nsfw { get; init; } public ulong? ParentId { get; init; } public Overwrite[]? PermissionOverwrites { get; init; } public User[]? Recipients { get; init; } // NOTE: this may be null for stub channel objects public record Overwrite { public ulong Id { get; init; } public OverwriteType Type { get; init; } public PermissionSet Allow { get; init; } public PermissionSet Deny { get; init; } } public enum OverwriteType { Role = 0, Member = 1 } } }