async def METHOD_NAME(
    self, *, name: str = MISSING, roles: List[Snowflake] = MISSING, reason: Optional[str] = None
) -> Emoji:
    """|coro|
    Edits the custom emoji.
    You must have :attr:`~Permissions.manage_guild_expressions` permission to
    do this.
    .. versionchanged:: 2.0
        The newly updated emoji is returned.
    Parameters
    ----------
    name: :class:`str`
        The new emoji name.
    roles: Optional[List[:class:`~disnake.abc.Snowflake`]]
        A list of roles that can use this emoji. An empty list can be passed to make it available to everyone.
        An emoji cannot have both subscription roles (see :attr:`RoleTags.integration_id`) and
        non-subscription roles, and emojis can't be converted between premium and non-premium
        after creation.
    reason: Optional[:class:`str`]
        The reason for editing this emoji. Shows up on the audit log.
    Raises
    ------
    Forbidden
        You are not allowed to edit emojis.
    HTTPException
        An error occurred editing the emoji.
    Returns
    -------
    :class:`Emoji`
        The newly updated emoji.
    """
    payload = {}
    if name is not MISSING:
        payload["name"] = name
    if roles is not MISSING:
        payload["roles"] = [role.id for role in roles]
    data = await self._state.http.edit_custom_emoji(
        self.guild.id, self.id, payload=payload, reason=reason
    )
    return Emoji(guild=self.guild, data=data, state=self._state)