diff --git a/DisCatSharp/Entities/Channel/DiscordGuildDirectoryChannel.cs b/DisCatSharp/Entities/Channel/DiscordGuildDirectoryChannel.cs index 7258d95fc..535cd9762 100644 --- a/DisCatSharp/Entities/Channel/DiscordGuildDirectoryChannel.cs +++ b/DisCatSharp/Entities/Channel/DiscordGuildDirectoryChannel.cs @@ -1,88 +1,96 @@ // This file is part of the DisCatSharp project, based off DSharpPlus. // // Copyright (c) 2021-2022 AITSYS // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using System; +using System.Collections.Generic; +using System.Linq; + +using Newtonsoft.Json; namespace DisCatSharp.Entities { /// /// Represents a discord guild directory channel. /// - public class DiscordGuildDirectoryChannel : SnowflakeObject, IEquatable + public class DiscordGuildDirectoryChannel : DiscordChannel, IEquatable { /// /// Initializes a new instance of the class. /// internal DiscordGuildDirectoryChannel() { } + [JsonIgnore] + public IReadOnlyList Entries => + this.Guild.ChannelsInternal.Values.Where(e => e.ParentId == this.Id).Select(x => x as DiscordGuildDirectoryEntry).ToList(); + #region Methods #endregion /// /// Checks whether this is equal to another object. /// /// Object to compare to. /// Whether the object is equal to this . public override bool Equals(object obj) => this.Equals(obj as DiscordGuildDirectoryChannel); /// /// Checks whether this is equal to another . /// /// to compare to. /// Whether the is equal to this . public bool Equals(DiscordGuildDirectoryChannel e) => e is not null && (ReferenceEquals(this, e) || this.Id == e.Id); /// /// Gets the hash code for this . /// /// The hash code for this . public override int GetHashCode() => this.Id.GetHashCode(); /// /// Gets whether the two objects are equal. /// /// First channel to compare. /// Second channel to compare. /// Whether the two channels are equal. public static bool operator ==(DiscordGuildDirectoryChannel e1, DiscordGuildDirectoryChannel e2) { var o1 = e1 as object; var o2 = e2 as object; return (o1 != null || o2 == null) && (o1 == null || o2 != null) && ((o1 == null && o2 == null) || e1.Id == e2.Id); } /// /// Gets whether the two objects are not equal. /// /// First channel to compare. /// Second channel to compare. /// Whether the two channels are not equal. public static bool operator !=(DiscordGuildDirectoryChannel e1, DiscordGuildDirectoryChannel e2) => !(e1 == e2); } } diff --git a/DisCatSharp/Entities/Channel/DiscordGuildDirectoryEntry.cs b/DisCatSharp/Entities/Channel/DiscordGuildDirectoryEntry.cs index 7fb01e454..a61a8aae1 100644 --- a/DisCatSharp/Entities/Channel/DiscordGuildDirectoryEntry.cs +++ b/DisCatSharp/Entities/Channel/DiscordGuildDirectoryEntry.cs @@ -1,116 +1,103 @@ // This file is part of the DisCatSharp project, based off DSharpPlus. // // Copyright (c) 2021-2022 AITSYS // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using System; using Newtonsoft.Json; namespace DisCatSharp.Entities { /// /// Represents a discord guild directory channel. /// - public class DiscordGuildDirectoryEntry : SnowflakeObject, IEquatable + public class DiscordGuildDirectoryEntry : DiscordChannel, IEquatable { /// /// Gets the description of the directory entry. /// [JsonProperty("description", NullValueHandling = NullValueHandling.Ignore)] public string Description { get; internal set; } /// /// Gets the primary category of the directory entry. /// [JsonProperty("primary_category_id", NullValueHandling = NullValueHandling.Ignore)] public DirectoryCategory PrimaryCategory { get; internal set; } - /// - /// Gets the guild id of the associated directory entry. - /// - [JsonProperty("guild_id", NullValueHandling = NullValueHandling.Ignore)] - public ulong GuildId { get; internal set; } - - /// - /// Gets the guild to which this directory entry belongs. - /// - [JsonIgnore] - public DiscordGuild Guild - => this.Discord.Guilds.TryGetValue(this.GuildId, out var guild) ? guild : null; - /// /// Initializes a new instance of the class. /// internal DiscordGuildDirectoryEntry() { } #region Methods #endregion /// /// Checks whether this is equal to another object. /// /// Object to compare to. /// Whether the object is equal to this . public override bool Equals(object obj) => this.Equals(obj as DiscordGuildDirectoryEntry); /// /// Checks whether this is equal to another . /// /// to compare to. /// Whether the is equal to this . public bool Equals(DiscordGuildDirectoryEntry e) => e is not null && (ReferenceEquals(this, e) || this.Id == e.Id); /// /// Gets the hash code for this . /// /// The hash code for this . public override int GetHashCode() => this.Id.GetHashCode(); /// /// Gets whether the two objects are equal. /// /// First channel to compare. /// Second channel to compare. /// Whether the two channels are equal. public static bool operator ==(DiscordGuildDirectoryEntry e1, DiscordGuildDirectoryEntry e2) { var o1 = e1 as object; var o2 = e2 as object; return (o1 != null || o2 == null) && (o1 == null || o2 != null) && ((o1 == null && o2 == null) || e1.Id == e2.Id); } /// /// Gets whether the two objects are not equal. /// /// First channel to compare. /// Second channel to compare. /// Whether the two channels are not equal. public static bool operator !=(DiscordGuildDirectoryEntry e1, DiscordGuildDirectoryEntry e2) => !(e1 == e2); } }