diff --git a/src/Discord.Net.Core/CDN.cs b/src/Discord.Net.Core/CDN.cs
index f23f55238..52b9a2878 100644
--- a/src/Discord.Net.Core/CDN.cs
+++ b/src/Discord.Net.Core/CDN.cs
@@ -13,6 +13,10 @@ namespace Discord
string extension = FormatToExtension(format, avatarId);
return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{extension}?size={size}";
}
+ public static string GetDefaultUserAvatarUrl(ushort discriminator)
+ {
+ return $"{DiscordConfig.CDNUrl}embed/avatars/{discriminator % 5}.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)
@@ -37,11 +41,16 @@ namespace Discord
format = imageId.StartsWith("a_") ? ImageFormat.Gif : ImageFormat.Png;
switch (format)
{
- case ImageFormat.Gif: return "gif";
- case ImageFormat.Jpeg: return "jpeg";
- case ImageFormat.Png: return "png";
- case ImageFormat.WebP: return "webp";
- default: throw new ArgumentException(nameof(format));
+ case ImageFormat.Gif:
+ return "gif";
+ case ImageFormat.Jpeg:
+ return "jpeg";
+ case ImageFormat.Png:
+ return "png";
+ case ImageFormat.WebP:
+ return "webp";
+ default:
+ throw new ArgumentException(nameof(format));
}
}
}
diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs
index e3f270f6f..c5cce7a25 100644
--- a/src/Discord.Net.Core/Entities/Users/IUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/IUser.cs
@@ -8,6 +8,8 @@ namespace Discord
string AvatarId { get; }
/// Gets the url to this user's avatar.
string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128);
+ /// Gets 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.
diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs
index c6cf6103a..c484986b1 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;
@@ -60,6 +60,9 @@ namespace Discord.Rest
public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> CDN.GetUserAvatarUrl(Id, AvatarId, size, format);
+ public string GetDefaultAvatarUrl()
+ => CDN.GetDefaultUserAvatarUrl(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 58d5c62a1..00899d47e 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;
@@ -37,23 +37,23 @@ namespace Discord.WebSocket
{
var newVal = ushort.Parse(model.Discriminator.Value);
if (newVal != DiscriminatorValue)
- {
+ {
DiscriminatorValue = ushort.Parse(model.Discriminator.Value);
hasChanges = true;
}
}
if (model.Bot.IsSpecified && model.Bot.Value != IsBot)
- {
+ {
IsBot = model.Bot.Value;
hasChanges = true;
}
if (model.Username.IsSpecified && model.Username.Value != Username)
- {
+ {
Username = model.Username.Value;
hasChanges = true;
}
return hasChanges;
- }
+ }
public async Task GetOrCreateDMChannelAsync(RequestOptions options = null)
=> GlobalUser.DMChannel ?? await UserHelper.CreateDMChannelAsync(this, Discord, options) as IDMChannel;
@@ -61,6 +61,9 @@ namespace Discord.WebSocket
public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> CDN.GetUserAvatarUrl(Id, AvatarId, size, format);
+ public string GetDefaultAvatarUrl()
+ => CDN.GetDefaultUserAvatarUrl(DiscriminatorValue);
+
public override string ToString() => $"{Username}#{Discriminator}";
private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})";
internal SocketUser Clone() => MemberwiseClone() as SocketUser;