From c5676a1688677a28516fa83146f1e325f1b6f060 Mon Sep 17 00:00:00 2001 From: HelpfulStranger999 Date: Sun, 25 Mar 2018 13:25:49 -0500 Subject: [PATCH 1/5] Cleaned up and refactored slightly --- src/Discord.Net.Commands/Info/CommandInfo.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Commands/Info/CommandInfo.cs b/src/Discord.Net.Commands/Info/CommandInfo.cs index f0d406e8d..6e74c8abc 100644 --- a/src/Discord.Net.Commands/Info/CommandInfo.cs +++ b/src/Discord.Net.Commands/Info/CommandInfo.cs @@ -165,11 +165,11 @@ namespace Discord.Commands switch (RunMode) { case RunMode.Sync: //Always sync - return await ExecuteAsyncInternalAsync(context, args, services).ConfigureAwait(false); + return await ExecuteInternalAsync(context, args, services).ConfigureAwait(false); case RunMode.Async: //Always async var t2 = Task.Run(async () => { - await ExecuteAsyncInternalAsync(context, args, services).ConfigureAwait(false); + await ExecuteInternalAsync(context, args, services).ConfigureAwait(false); }); break; } @@ -181,7 +181,7 @@ namespace Discord.Commands } } - private async Task ExecuteAsyncInternalAsync(ICommandContext context, object[] args, IServiceProvider services) + private async Task ExecuteInternalAsync(ICommandContext context, object[] args, IServiceProvider services) { await Module.Service._cmdLogger.DebugAsync($"Executing {GetLogText(context)}").ConfigureAwait(false); try From 4c36ad5e846f6c643d0541784bcd89664ef663b7 Mon Sep 17 00:00:00 2001 From: HelpfulStranger999 Date: Mon, 26 Mar 2018 14:39:21 -0500 Subject: [PATCH 2/5] Resolves #971 --- src/Discord.Net.Core/CDN.cs | 2 ++ src/Discord.Net.Core/Entities/Users/IUser.cs | 6 ++++++ src/Discord.Net.Rest/Entities/Users/RestUser.cs | 11 ++++++++++- .../Entities/Users/SocketUser.cs | 10 +++++++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.Core/CDN.cs b/src/Discord.Net.Core/CDN.cs index f23f55238..6c7a4af89 100644 --- a/src/Discord.Net.Core/CDN.cs +++ b/src/Discord.Net.Core/CDN.cs @@ -13,6 +13,8 @@ namespace Discord string extension = FormatToExtension(format, avatarId); return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{extension}?size={size}"; } + public static string GetUserDefaultAvatarUrl(ushort discrim) + => $"{DiscordConfig.CDNUrl}embed/avatars/{discrim}.png"; public static string GetGuildIconUrl(ulong guildId, string iconId) => iconId != null ? $"{DiscordConfig.CDNUrl}icons/{guildId}/{iconId}.jpg" : null; public static string GetGuildSplashUrl(ulong guildId, string splashId) diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index e3f270f6f..9d06ca12a 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -8,6 +8,10 @@ namespace Discord string AvatarId { get; } /// Gets the url to this user's avatar. string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); + /// Get the url to this user's custom avatar. + string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); + /// Get the url to this user's default avatar. + string GetDefaultAvatarUrl(); /// Gets the per-username unique id for this user. string Discriminator { get; } /// Gets the per-username unique id for this user. @@ -16,6 +20,8 @@ namespace Discord bool IsBot { get; } /// Returns true if this user is a webhook user. bool IsWebhook { get; } + /// Returns true if this user has set a custom avatar. + bool HasCustomAvatar { get; } /// Gets the username for this user. string Username { get; } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index c6cf6103a..f9eac20cc 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; using System.Threading.Tasks; using Model = Discord.API.User; @@ -9,6 +9,7 @@ namespace Discord.Rest public class RestUser : RestEntity, IUser, IUpdateable { public bool IsBot { get; private set; } + public bool HasCustomeAvatar { get; private set; } public string Username { get; private set; } public ushort DiscriminatorValue { get; private set; } public string AvatarId { get; private set; } @@ -19,6 +20,7 @@ namespace Discord.Rest public virtual IActivity Activity => null; public virtual UserStatus Status => UserStatus.Offline; public virtual bool IsWebhook => false; + public bool HasCustomAvatar => AvatarId != null; internal RestUser(BaseDiscordClient discord, ulong id) : base(discord, id) @@ -58,13 +60,20 @@ namespace Discord.Rest => UserHelper.CreateDMChannelAsync(this, Discord, options); public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => GetCustomAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); + + public string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + public string GetDefaultAvatarUrl() + => CDN.GetUserDefaultAvatarUrl(DiscriminatorValue); + public override string ToString() => $"{Username}#{Discriminator}"; private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; //IUser async Task IUser.GetOrCreateDMChannelAsync(RequestOptions options) => await GetOrCreateDMChannelAsync(options); + } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 58d5c62a1..aa0b22f9c 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -1,4 +1,4 @@ -using Discord.Rest; +using Discord.Rest; using System; using System.Threading.Tasks; using Model = Discord.API.User; @@ -20,6 +20,7 @@ namespace Discord.WebSocket public string Mention => MentionUtils.MentionUser(Id); public IActivity Activity => Presence.Activity; public UserStatus Status => Presence.Status; + public bool HasCustomAvatar => AvatarId != null; internal SocketUser(DiscordSocketClient discord, ulong id) : base(discord, id) @@ -59,10 +60,17 @@ namespace Discord.WebSocket => GlobalUser.DMChannel ?? await UserHelper.CreateDMChannelAsync(this, Discord, options) as IDMChannel; public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => GetCustomAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); + + public string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + public string GetDefaultAvatarUrl() + => CDN.GetUserDefaultAvatarUrl(DiscriminatorValue); + public override string ToString() => $"{Username}#{Discriminator}"; private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; internal SocketUser Clone() => MemberwiseClone() as SocketUser; + } } From 17c332f57faac5d9e6058c740a69dd2419634fab Mon Sep 17 00:00:00 2001 From: HelpfulStranger999 Date: Mon, 26 Mar 2018 14:49:40 -0500 Subject: [PATCH 3/5] Adds support for default avatars and resolves #971 --- src/Discord.Net.Core/Entities/Users/IUser.cs | 6 +++--- src/Discord.Net.Rest/Entities/Users/RestUser.cs | 7 +++---- src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs | 6 +++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index 9d06ca12a..817123625 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -6,10 +6,10 @@ namespace Discord { /// Gets the id of this user's avatar. string AvatarId { get; } - /// Gets the url to this user's avatar. + /// Gets the url to this user's custom avatar. string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); - /// Get the url to this user's custom avatar. - string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); + /// Get the url to this user's custom avatar, if set, else this user's default avatar. + string GetEffectiveAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); /// Get the url to this user's default avatar. string GetDefaultAvatarUrl(); /// Gets the per-username unique id for this user. diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index f9eac20cc..bc7890c9b 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -9,7 +9,6 @@ namespace Discord.Rest public class RestUser : RestEntity, IUser, IUpdateable { public bool IsBot { get; private set; } - public bool HasCustomeAvatar { get; private set; } public string Username { get; private set; } public ushort DiscriminatorValue { get; private set; } public string AvatarId { get; private set; } @@ -60,11 +59,11 @@ namespace Discord.Rest => UserHelper.CreateDMChannelAsync(this, Discord, options); public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) - => GetCustomAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); - - public string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + public string GetEffectiveAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => GetAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); + public string GetDefaultAvatarUrl() => CDN.GetUserDefaultAvatarUrl(DiscriminatorValue); diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index aa0b22f9c..3ac31207b 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -60,11 +60,11 @@ namespace Discord.WebSocket => GlobalUser.DMChannel ?? await UserHelper.CreateDMChannelAsync(this, Discord, options) as IDMChannel; public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) - => GetCustomAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); - - public string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + public string GetEffectiveAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => GetAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); + public string GetDefaultAvatarUrl() => CDN.GetUserDefaultAvatarUrl(DiscriminatorValue); From 086267487c3933f42d2165eefc96f2c106e141ea Mon Sep 17 00:00:00 2001 From: HelpfulStranger999 Date: Mon, 26 Mar 2018 15:20:31 -0500 Subject: [PATCH 4/5] Amendment --- src/Discord.Net.Core/CDN.cs | 2 -- src/Discord.Net.Core/Entities/Users/IUser.cs | 6 ------ src/Discord.Net.Rest/Entities/Users/RestUser.cs | 7 ------- src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs | 7 ------- 4 files changed, 22 deletions(-) diff --git a/src/Discord.Net.Core/CDN.cs b/src/Discord.Net.Core/CDN.cs index 6c7a4af89..f23f55238 100644 --- a/src/Discord.Net.Core/CDN.cs +++ b/src/Discord.Net.Core/CDN.cs @@ -13,8 +13,6 @@ namespace Discord string extension = FormatToExtension(format, avatarId); return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{extension}?size={size}"; } - public static string GetUserDefaultAvatarUrl(ushort discrim) - => $"{DiscordConfig.CDNUrl}embed/avatars/{discrim}.png"; public static string GetGuildIconUrl(ulong guildId, string iconId) => iconId != null ? $"{DiscordConfig.CDNUrl}icons/{guildId}/{iconId}.jpg" : null; public static string GetGuildSplashUrl(ulong guildId, string splashId) diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index 817123625..a99db1bc5 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -8,10 +8,6 @@ namespace Discord string AvatarId { get; } /// Gets the url to this user's custom avatar. string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); - /// Get the url to this user's custom avatar, if set, else this user's default avatar. - string GetEffectiveAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); - /// Get the url to this user's default avatar. - string GetDefaultAvatarUrl(); /// Gets the per-username unique id for this user. string Discriminator { get; } /// Gets the per-username unique id for this user. @@ -20,8 +16,6 @@ namespace Discord bool IsBot { get; } /// Returns true if this user is a webhook user. bool IsWebhook { get; } - /// Returns true if this user has set a custom avatar. - bool HasCustomAvatar { get; } /// Gets the username for this user. string Username { get; } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index bc7890c9b..f4580388d 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -19,7 +19,6 @@ namespace Discord.Rest public virtual IActivity Activity => null; public virtual UserStatus Status => UserStatus.Offline; public virtual bool IsWebhook => false; - public bool HasCustomAvatar => AvatarId != null; internal RestUser(BaseDiscordClient discord, ulong id) : base(discord, id) @@ -61,12 +60,6 @@ namespace Discord.Rest public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); - public string GetEffectiveAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) - => GetAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); - - public string GetDefaultAvatarUrl() - => CDN.GetUserDefaultAvatarUrl(DiscriminatorValue); - public override string ToString() => $"{Username}#{Discriminator}"; private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 3ac31207b..29b406d75 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -20,7 +20,6 @@ namespace Discord.WebSocket public string Mention => MentionUtils.MentionUser(Id); public IActivity Activity => Presence.Activity; public UserStatus Status => Presence.Status; - public bool HasCustomAvatar => AvatarId != null; internal SocketUser(DiscordSocketClient discord, ulong id) : base(discord, id) @@ -62,12 +61,6 @@ namespace Discord.WebSocket public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); - public string GetEffectiveAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) - => GetAvatarUrl(format, size) ?? GetDefaultAvatarUrl(); - - public string GetDefaultAvatarUrl() - => CDN.GetUserDefaultAvatarUrl(DiscriminatorValue); - public override string ToString() => $"{Username}#{Discriminator}"; private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; internal SocketUser Clone() => MemberwiseClone() as SocketUser; From a394224d1e1939857425910df1b96f5ed185f62a Mon Sep 17 00:00:00 2001 From: HelpfulStranger999 Date: Mon, 26 Mar 2018 15:32:07 -0500 Subject: [PATCH 5/5] Final amendment --- src/Discord.Net.Core/Entities/Users/IUser.cs | 2 +- src/Discord.Net.Rest/Entities/Users/RestUser.cs | 1 - src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index a99db1bc5..e3f270f6f 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -6,7 +6,7 @@ namespace Discord { /// Gets the id of this user's avatar. string AvatarId { get; } - /// Gets the url to this user's custom avatar. + /// Gets the url to this user's avatar. string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); /// Gets the per-username unique id for this user. string Discriminator { get; } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index f4580388d..09eccd020 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -66,6 +66,5 @@ namespace Discord.Rest //IUser async Task IUser.GetOrCreateDMChannelAsync(RequestOptions options) => await GetOrCreateDMChannelAsync(options); - } } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 29b406d75..cced717ac 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -64,6 +64,5 @@ namespace Discord.WebSocket public override string ToString() => $"{Username}#{Discriminator}"; private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})"; internal SocketUser Clone() => MemberwiseClone() as SocketUser; - } }