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
bannerfield in the Discord APIUserobject is both nullable and can be missing.When a User is fetched with
force=Trueto obtain thebannervalue, 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
bannersuch that User.banner would becomeNonein that case, rather thanAsset(hash=None). The similar Member object processedbannercorrectly and is not affected by this bug.Changes
bannerfield check ininteractions.models.discord.user:Userfromif "banner" in datatoif data.get("banner", None).bannervalue 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)NonePython Compatibility
3.10.x3.11.xChecklist
pre-commitcode linter over all edited files