Skip to content

Commit

Permalink
feat: add banner to ClientUser.edit (#2396)
Browse files Browse the repository at this point in the history
Signed-off-by: Brandon <Brandon.k@live.de>
Signed-off-by: plun1331 <plun1331@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: plun1331 <plun1331@gmail.com>
  • Loading branch information
3 people committed Mar 17, 2024
1 parent 0c68e5f commit 530f3d4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Expand Up @@ -10,6 +10,11 @@ possible (see our [Version Guarantees] for more info).

These changes are available on the `master` branch, but have not yet been released.

### Added

- Added `banner` parameter to `ClientUser.edit`.
([#2396](https://github.com/Pycord-Development/pycord/pull/2396))

### Fixed

- Fixed the type-hinting of `Member.move_to` and `Member.edit` to reflect actual
Expand Down
23 changes: 19 additions & 4 deletions discord/user.py
Expand Up @@ -422,31 +422,41 @@ def _update(self, data: UserPayload) -> None:

# TODO: Username might not be able to edit anymore.
async def edit(
self, *, username: str = MISSING, avatar: bytes = MISSING
self,
*,
username: str = MISSING,
avatar: bytes = MISSING,
banner: bytes = MISSING,
) -> ClientUser:
"""|coro|
Edits the current profile of the client.
.. note::
To upload an avatar, a :term:`py:bytes-like object` must be passed in that
To upload an avatar or banner, a :term:`py:bytes-like object` must be passed in that
represents the image being uploaded. If this is done through a file
then the file must be opened via ``open('some_filename', 'rb')`` and
the :term:`py:bytes-like object` is given through the use of ``fp.read()``.
The only image formats supported for uploading is JPEG and PNG.
The only image formats supported for uploading are JPEG, PNG, and GIF.
.. versionchanged:: 2.0
The edit is no longer in-place, instead the newly edited client user is returned.
.. versionchanged:: 2.6
The ``banner`` keyword-only parameter was added.
Parameters
----------
username: :class:`str`
The new username you wish to change to.
avatar: :class:`bytes`
A :term:`py:bytes-like object` representing the image to upload.
Could be ``None`` to denote no avatar.
banner: :class:`bytes`
A :term:`py:bytes-like object` representing the image to upload.
Could be ``None`` to denote no banner.
Returns
-------
Expand All @@ -458,7 +468,7 @@ async def edit(
HTTPException
Editing your profile failed.
InvalidArgument
Wrong image format passed for ``avatar``.
Wrong image format passed for ``avatar`` or ``banner``.
"""
payload: dict[str, Any] = {}
if username is not MISSING:
Expand All @@ -469,6 +479,11 @@ async def edit(
elif avatar is not MISSING:
payload["avatar"] = _bytes_to_base64_data(avatar)

if banner is None:
payload["banner"] = None
elif banner is not MISSING:
payload["banner"] = _bytes_to_base64_data(banner)

data: UserPayload = await self._state.http.edit_profile(payload)
return ClientUser(state=self._state, data=data)

Expand Down

0 comments on commit 530f3d4

Please sign in to comment.