mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2025-05-23 11:16:59 -04:00
Update avatar resolving for users without discriminator
This commit is contained in:
parent
c3abeadf01
commit
bd4cfcdaf6
3 changed files with 7 additions and 5 deletions
|
@ -47,8 +47,8 @@ public static class ImageCdn
|
||||||
? $"https://cdn.discordapp.com/avatars/{userId}/{avatarHash}.gif?size={size}"
|
? $"https://cdn.discordapp.com/avatars/{userId}/{avatarHash}.gif?size={size}"
|
||||||
: $"https://cdn.discordapp.com/avatars/{userId}/{avatarHash}.png?size={size}";
|
: $"https://cdn.discordapp.com/avatars/{userId}/{avatarHash}.png?size={size}";
|
||||||
|
|
||||||
public static string GetFallbackUserAvatarUrl(int discriminator) =>
|
public static string GetFallbackUserAvatarUrl(int index = 0) =>
|
||||||
$"https://cdn.discordapp.com/embed/avatars/{discriminator % 5}.png";
|
$"https://cdn.discordapp.com/embed/avatars/{index}.png";
|
||||||
|
|
||||||
public static string GetMemberAvatarUrl(Snowflake guildId, Snowflake userId, string avatarHash, int size = 512) =>
|
public static string GetMemberAvatarUrl(Snowflake guildId, Snowflake userId, string avatarHash, int size = 512) =>
|
||||||
avatarHash.StartsWith("a_", StringComparison.Ordinal)
|
avatarHash.StartsWith("a_", StringComparison.Ordinal)
|
||||||
|
|
|
@ -12,7 +12,7 @@ public record Guild(Snowflake Id, string Name, string IconUrl) : IHasId
|
||||||
public static Guild DirectMessages { get; } = new(
|
public static Guild DirectMessages { get; } = new(
|
||||||
Snowflake.Zero,
|
Snowflake.Zero,
|
||||||
"Direct Messages",
|
"Direct Messages",
|
||||||
ImageCdn.GetFallbackUserAvatarUrl(0)
|
ImageCdn.GetFallbackUserAvatarUrl()
|
||||||
);
|
);
|
||||||
|
|
||||||
public static Guild Parse(JsonElement json)
|
public static Guild Parse(JsonElement json)
|
||||||
|
@ -25,7 +25,7 @@ public record Guild(Snowflake Id, string Name, string IconUrl) : IHasId
|
||||||
.GetPropertyOrNull("icon")?
|
.GetPropertyOrNull("icon")?
|
||||||
.GetNonWhiteSpaceStringOrNull()?
|
.GetNonWhiteSpaceStringOrNull()?
|
||||||
.Pipe(h => ImageCdn.GetGuildIconUrl(id, h)) ??
|
.Pipe(h => ImageCdn.GetGuildIconUrl(id, h)) ??
|
||||||
ImageCdn.GetFallbackUserAvatarUrl(0);
|
ImageCdn.GetFallbackUserAvatarUrl();
|
||||||
|
|
||||||
return new Guild(id, name, iconUrl);
|
return new Guild(id, name, iconUrl);
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,12 +45,14 @@ public partial record User
|
||||||
var name = json.GetProperty("username").GetNonNullString();
|
var name = json.GetProperty("username").GetNonNullString();
|
||||||
var displayName = json.GetPropertyOrNull("global_name")?.GetNonWhiteSpaceStringOrNull() ?? name;
|
var displayName = json.GetPropertyOrNull("global_name")?.GetNonWhiteSpaceStringOrNull() ?? name;
|
||||||
|
|
||||||
|
var avatarIndex = discriminator % 5 ?? (int)((id.Value >> 22) % 6);
|
||||||
|
|
||||||
var avatarUrl =
|
var avatarUrl =
|
||||||
json
|
json
|
||||||
.GetPropertyOrNull("avatar")?
|
.GetPropertyOrNull("avatar")?
|
||||||
.GetNonWhiteSpaceStringOrNull()?
|
.GetNonWhiteSpaceStringOrNull()?
|
||||||
.Pipe(h => ImageCdn.GetUserAvatarUrl(id, h)) ??
|
.Pipe(h => ImageCdn.GetUserAvatarUrl(id, h)) ??
|
||||||
ImageCdn.GetFallbackUserAvatarUrl(discriminator ?? 0);
|
ImageCdn.GetFallbackUserAvatarUrl(avatarIndex);
|
||||||
|
|
||||||
return new User(id, isBot, discriminator, name, displayName, avatarUrl);
|
return new User(id, isBot, discriminator, name, displayName, avatarUrl);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue