mirror of
https://github.com/brandons209/Red-bot-Cogs.git
synced 2024-06-17 18:05:00 +12:00
50 lines
1.5 KiB
Python
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)
|