Skip to content

Commit 9307f07

Browse files
paring-chanAndroz2091파링
authored
fix: serve a default avatar for users with no custom avatar (#33)
Originally proposed by @paring-chan. The null-safety part of the original PR is already handled differently on main; this commit ports just the default-avatar fallback so every user gets a usable avatar_url in the response. Discord's defaults are: - discriminator-era users: embed/avatars/{discriminator % 5}.png - new username system (discriminator '0'): embed/avatars/{(user_id >> 22) % 6}.png Co-authored-by: Androz2091 <androz2091@gmail.com> Co-authored-by: 파링 <paring@email>
1 parent f9ef112 commit 9307f07

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

src/app.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,20 @@ def get_avatar(package_id, user_id):
307307
return make_response('', 500)
308308

309309
avatar_hash = user.get('avatar')
310-
avatar_extension = 'gif' if avatar_hash and avatar_hash.startswith('a_') else 'webp'
311-
avatar_url = f'https://cdn.discordapp.com/avatars/{user_id}/{avatar_hash}.{avatar_extension}' if avatar_hash else None
310+
if avatar_hash:
311+
avatar_extension = 'gif' if avatar_hash.startswith('a_') else 'webp'
312+
avatar_url = f'https://cdn.discordapp.com/avatars/{user_id}/{avatar_hash}.{avatar_extension}'
313+
else:
314+
# Discord's built-in default avatars. Legacy users have a
315+
# discriminator (e.g. "1234") and pick from 5 defaults; new
316+
# users have discriminator "0" and the index is derived from
317+
# the snowflake.
318+
discriminator = user.get('discriminator')
319+
if discriminator and discriminator != '0':
320+
index = int(discriminator) % 5
321+
else:
322+
index = (int(user_id) >> 22) % 6
323+
avatar_url = f'https://cdn.discordapp.com/embed/avatars/{index}.png'
312324

313325
return jsonify({
314326
'user_id': user_id,

0 commit comments

Comments
 (0)