Rework Role.edit to not rely on previous role state
This commit is contained in:
parent
a372aadb2d
commit
2d7c709235
@ -23,7 +23,7 @@ DEALINGS IN THE SOFTWARE.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
from typing import Any, List, Optional, TypeVar, Union, overload, TYPE_CHECKING
|
from typing import Any, Dict, List, Optional, TypeVar, Union, overload, TYPE_CHECKING
|
||||||
|
|
||||||
from .permissions import Permissions
|
from .permissions import Permissions
|
||||||
from .errors import InvalidArgument
|
from .errors import InvalidArgument
|
||||||
@ -339,25 +339,18 @@ class Role(Hashable):
|
|||||||
payload = [{"id": z[0], "position": z[1]} for z in zip(roles, change_range)]
|
payload = [{"id": z[0], "position": z[1]} for z in zip(roles, change_range)]
|
||||||
await http.move_role_position(self.guild.id, payload, reason=reason)
|
await http.move_role_position(self.guild.id, payload, reason=reason)
|
||||||
|
|
||||||
@overload
|
|
||||||
async def edit(
|
async def edit(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
reason: Optional[str] = ...,
|
name: str = MISSING,
|
||||||
name: str = ...,
|
permissions: Permissions = MISSING,
|
||||||
permissions: Permissions = ...,
|
colour: Union[Colour, int] = MISSING,
|
||||||
colour: Union[Colour, int] = ...,
|
color: Union[Colour, int] = MISSING,
|
||||||
hoist: bool = ...,
|
hoist: bool = MISSING,
|
||||||
mentionable: bool = ...,
|
mentionable: bool = MISSING,
|
||||||
position: int = ...,
|
position: int = MISSING,
|
||||||
|
reason: Optional[str] = MISSING,
|
||||||
) -> None:
|
) -> None:
|
||||||
...
|
|
||||||
|
|
||||||
@overload
|
|
||||||
async def edit(self) -> None:
|
|
||||||
...
|
|
||||||
|
|
||||||
async def edit(self, *, reason=None, **fields) -> None:
|
|
||||||
"""|coro|
|
"""|coro|
|
||||||
|
|
||||||
Edits the role.
|
Edits the role.
|
||||||
@ -399,26 +392,31 @@ class Role(Hashable):
|
|||||||
role was asked to be moved.
|
role was asked to be moved.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
position = fields.get('position')
|
if position is not MISSING:
|
||||||
if position is not None:
|
|
||||||
await self._move(position, reason=reason)
|
await self._move(position, reason=reason)
|
||||||
self.position = position
|
self.position = position
|
||||||
|
|
||||||
try:
|
payload: Dict[str, Any] = {}
|
||||||
colour = fields['colour']
|
if color is not MISSING:
|
||||||
except KeyError:
|
colour = color
|
||||||
colour = fields.get('color', self.colour)
|
|
||||||
|
|
||||||
if isinstance(colour, int):
|
if colour is not MISSING:
|
||||||
colour = Colour(value=colour)
|
if isinstance(colour, int):
|
||||||
|
payload['color'] = colour
|
||||||
|
else:
|
||||||
|
payload['color'] = colour.value
|
||||||
|
|
||||||
payload = {
|
if name is not MISSING:
|
||||||
'name': fields.get('name', self.name),
|
payload['name'] = name
|
||||||
'permissions': str(fields.get('permissions', self.permissions).value),
|
|
||||||
'color': colour.value,
|
if permissions is not MISSING:
|
||||||
'hoist': fields.get('hoist', self.hoist),
|
payload['permissions'] = permissions.value
|
||||||
'mentionable': fields.get('mentionable', self.mentionable),
|
|
||||||
}
|
if hoist is not MISSING:
|
||||||
|
payload['hoist'] = hoist
|
||||||
|
|
||||||
|
if mentionable is not MISSING:
|
||||||
|
payload['mentionable'] = mentionable
|
||||||
|
|
||||||
data = await self._state.http.edit_role(self.guild.id, self.id, reason=reason, **payload)
|
data = await self._state.http.edit_role(self.guild.id, self.id, reason=reason, **payload)
|
||||||
self._update(data)
|
self._update(data)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user