Brandon209-Red-bot-Cogs/personalroles/discord_new_features.py

50 lines
1.5 KiB
Python

# NOTE: this file contains backports or unintroduced features of next versions of dpy (as for 1.7.3)
# TODO: nuke this file when Red is changed its version to support required features
# from @fixator10
from discord import Role
from discord.http import Route
from discord.utils import _bytes_to_base64_data
async def edit_role_icon(bot, role: Role, reason=None, **fields):
"""|coro|
Changes specified role's icon
Parameters
-----------
role: :class:`discord.Role`
A role to edit
icon: :class:`bytes`
A :term:`py:bytes-like object` representing the image to upload.
unicode_emoji: :class:`str`
A unicode emoji to set
reason: Optional[:class:`str`]
The reason for editing this role. Shows up on the audit log.
Raises
-------
Forbidden
You do not have permissions to change the role.
HTTPException
Editing the role failed.
InvalidArgument
Wrong image format passed for ``icon``.
:param bot:
"""
if "unicode_emoji" in fields:
fields["icon"] = None
else:
try:
icon_bytes = fields["icon"]
except KeyError:
pass
else:
if icon_bytes is not None:
fields["icon"] = _bytes_to_base64_data(icon_bytes)
else:
fields["icon"] = None
r = Route("PATCH", "/guilds/{guild_id}/roles/{role_id}", guild_id=role.guild.id, role_id=role.id)
await bot.http.request(r, json=fields, reason=reason)