fix: don't create asset with null hash in user banner #1776
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request Type
Description
The
banner
field in the Discord APIUser
object is both nullable and can be missing.When a User is fetched with
force=True
to obtain thebanner
value, due to how the data is processed, an Asset with hash=None may be erroneously created whose url points toNone.png
.This fix makes User correctly process the null
banner
such that User.banner would becomeNone
in that case, rather thanAsset(hash=None)
. The similar Member object processedbanner
correctly and is not affected by this bug.Changes
banner
field check ininteractions.models.discord.user:User
fromif "banner" in data
toif data.get("banner", None)
.banner
value to its default ofNone
.Related Issues
Test Scenarios
Select a user with no banner.
Asset(_url='https://cdn.discordapp.com/banners/<id>/None', hash=None)
None
Python Compatibility
3.10.x
3.11.x
Checklist
pre-commit
code linter over all edited files