| @@ -94,5 +94,41 @@ namespace Discord | |||
| /// </summary> | |||
| public override string ToString() => Title; | |||
| private string DebuggerDisplay => $"{Title} ({Type})"; | |||
| public static bool operator ==(Embed left, Embed right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(Embed left, Embed right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as Embed); | |||
| public bool Equals(Embed embed) | |||
| => GetHashCode() == embed.GetHashCode(); | |||
| public override int GetHashCode() | |||
| { | |||
| var hashCode = new HashCode(); | |||
| hashCode.Add(Type); | |||
| hashCode.Add(Title); | |||
| hashCode.Add(Description); | |||
| hashCode.Add(Timestamp); | |||
| hashCode.Add(Color); | |||
| hashCode.Add(Image); | |||
| hashCode.Add(Video); | |||
| hashCode.Add(Author); | |||
| hashCode.Add(Footer); | |||
| hashCode.Add(Provider); | |||
| hashCode.Add(Thumbnail); | |||
| foreach (var field in Fields) | |||
| { | |||
| hashCode.Add(field); | |||
| } | |||
| return hashCode.ToHashCode(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| using System; | |||
| using System.Diagnostics; | |||
| namespace Discord | |||
| @@ -41,5 +42,21 @@ namespace Discord | |||
| /// | |||
| /// </returns> | |||
| public override string ToString() => Name; | |||
| public static bool operator ==(EmbedAuthor? left, EmbedAuthor? right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedAuthor? left, EmbedAuthor? right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedAuthor?); | |||
| public bool Equals(EmbedAuthor embedAuthor) | |||
| => GetHashCode() == embedAuthor.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Name, Url, IconUrl); | |||
| } | |||
| } | |||
| @@ -481,6 +481,40 @@ namespace Discord | |||
| return new Embed(EmbedType.Rich, Title, Description, Url, Timestamp, Color, _image, null, Author?.Build(), Footer?.Build(), null, _thumbnail, fields.ToImmutable()); | |||
| } | |||
| public static bool operator ==(EmbedBuilder left, EmbedBuilder right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedBuilder left, EmbedBuilder right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedBuilder); | |||
| public bool Equals(EmbedBuilder embedBuilder) | |||
| => GetHashCode() == embedBuilder.GetHashCode(); | |||
| public override int GetHashCode() | |||
| { | |||
| var hashCode = new HashCode(); | |||
| hashCode.Add(_title); | |||
| hashCode.Add(_description); | |||
| hashCode.Add(_image); | |||
| hashCode.Add(_thumbnail); | |||
| hashCode.Add(Timestamp); | |||
| hashCode.Add(Color); | |||
| hashCode.Add(Author); | |||
| hashCode.Add(Footer); | |||
| hashCode.Add(Url); | |||
| foreach (var field in _fields) | |||
| { | |||
| hashCode.Add(field); | |||
| } | |||
| return hashCode.ToHashCode(); | |||
| } | |||
| } | |||
| /// <summary> | |||
| @@ -597,6 +631,22 @@ namespace Discord | |||
| /// </exception> | |||
| public EmbedField Build() | |||
| => new EmbedField(Name, Value.ToString(), IsInline); | |||
| public static bool operator ==(EmbedFieldBuilder left, EmbedFieldBuilder right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedFieldBuilder left, EmbedFieldBuilder right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedFieldBuilder); | |||
| public bool Equals(EmbedFieldBuilder embedFieldBuilder) | |||
| => GetHashCode() == embedFieldBuilder.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Name, Value, IsInline); | |||
| } | |||
| /// <summary> | |||
| @@ -697,6 +747,22 @@ namespace Discord | |||
| /// </returns> | |||
| public EmbedAuthor Build() | |||
| => new EmbedAuthor(Name, Url, IconUrl, null); | |||
| public static bool operator ==(EmbedAuthorBuilder left, EmbedAuthorBuilder right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedAuthorBuilder left, EmbedAuthorBuilder right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedAuthorBuilder); | |||
| public bool Equals(EmbedAuthorBuilder embedAuthorBuilder) | |||
| => GetHashCode() == embedAuthorBuilder.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Name, Url, IconUrl); | |||
| } | |||
| /// <summary> | |||
| @@ -777,5 +843,21 @@ namespace Discord | |||
| /// </returns> | |||
| public EmbedFooter Build() | |||
| => new EmbedFooter(Text, IconUrl, null); | |||
| public static bool operator ==(EmbedFooterBuilder left, EmbedFooterBuilder right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedFooterBuilder left, EmbedFooterBuilder right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedFooterBuilder); | |||
| public bool Equals(EmbedFooterBuilder embedFooterBuilder) | |||
| => GetHashCode() == embedFooterBuilder.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Text, IconUrl); | |||
| } | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| using System; | |||
| using System.Diagnostics; | |||
| namespace Discord | |||
| @@ -36,5 +37,21 @@ namespace Discord | |||
| /// A string that resolves to <see cref="EmbedField.Name"/>. | |||
| /// </returns> | |||
| public override string ToString() => Name; | |||
| public static bool operator ==(EmbedField? left, EmbedField? right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedField? left, EmbedField? right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedField?); | |||
| public bool Equals(EmbedField embedField) | |||
| => GetHashCode() == embedField.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Name, Value, Inline); | |||
| } | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| using System; | |||
| using System.Diagnostics; | |||
| namespace Discord | |||
| @@ -43,5 +44,21 @@ namespace Discord | |||
| /// A string that resolves to <see cref="Discord.EmbedFooter.Text"/>. | |||
| /// </returns> | |||
| public override string ToString() => Text; | |||
| public static bool operator ==(EmbedFooter? left, EmbedFooter? right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedFooter? left, EmbedFooter? right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedFooter?); | |||
| public bool Equals(EmbedFooter embedFooter) | |||
| => GetHashCode() == embedFooter.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Text, IconUrl, ProxyUrl); | |||
| } | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| using System; | |||
| using System.Diagnostics; | |||
| namespace Discord | |||
| @@ -53,5 +54,21 @@ namespace Discord | |||
| /// A string that resolves to <see cref="Discord.EmbedImage.Url"/> . | |||
| /// </returns> | |||
| public override string ToString() => Url; | |||
| public static bool operator ==(EmbedImage? left, EmbedImage? right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedImage? left, EmbedImage? right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedImage?); | |||
| public bool Equals(EmbedImage embedImage) | |||
| => GetHashCode() == embedImage.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Height, Width, Url, ProxyUrl); | |||
| } | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| using System; | |||
| using System.Diagnostics; | |||
| namespace Discord | |||
| @@ -53,5 +54,21 @@ namespace Discord | |||
| /// A string that resolves to <see cref="Discord.EmbedThumbnail.Url" />. | |||
| /// </returns> | |||
| public override string ToString() => Url; | |||
| public static bool operator ==(EmbedThumbnail? left, EmbedThumbnail? right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedThumbnail? left, EmbedThumbnail? right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedThumbnail?); | |||
| public bool Equals(EmbedThumbnail embedThumbnail) | |||
| => GetHashCode() == embedThumbnail.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Width, Height, Url, ProxyUrl); | |||
| } | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| using System; | |||
| using System.Diagnostics; | |||
| namespace Discord | |||
| @@ -47,5 +48,21 @@ namespace Discord | |||
| /// A string that resolves to <see cref="Url"/>. | |||
| /// </returns> | |||
| public override string ToString() => Url; | |||
| public static bool operator ==(EmbedVideo? left, EmbedVideo? right) | |||
| => left is null ? right is null | |||
| : left.Equals(right); | |||
| public static bool operator !=(EmbedVideo? left, EmbedVideo? right) | |||
| => !(left == right); | |||
| public override bool Equals(object obj) | |||
| => obj is not null && GetType() == obj.GetType() && Equals(obj as EmbedVideo?); | |||
| public bool Equals(EmbedVideo embedVideo) | |||
| => GetHashCode() == embedVideo.GetHashCode(); | |||
| public override int GetHashCode() | |||
| => HashCode.Combine(Width, Height, Url); | |||
| } | |||
| } | |||