mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
Fix bug with cache superfluously incrementing role position
This commit is contained in:
parent
cc32fb364b
commit
51142743bc
@ -432,27 +432,11 @@ class Guild(Hashable):
|
|||||||
return member, before, after
|
return member, before, after
|
||||||
|
|
||||||
def _add_role(self, role: Role, /) -> None:
|
def _add_role(self, role: Role, /) -> None:
|
||||||
# roles get added to the bottom (position 1, pos 0 is @everyone)
|
|
||||||
# so since self.roles has the @everyone role, we can't increment
|
|
||||||
# its position because it's stuck at position 0. Luckily x += False
|
|
||||||
# is equivalent to adding 0. So we cast the position to a bool and
|
|
||||||
# increment it.
|
|
||||||
for r in self._roles.values():
|
|
||||||
r.position += not r.is_default()
|
|
||||||
|
|
||||||
self._roles[role.id] = role
|
self._roles[role.id] = role
|
||||||
|
|
||||||
def _remove_role(self, role_id: int, /) -> Role:
|
def _remove_role(self, role_id: int, /) -> Role:
|
||||||
# this raises KeyError if it fails..
|
# this raises KeyError if it fails..
|
||||||
role = self._roles.pop(role_id)
|
return self._roles.pop(role_id)
|
||||||
|
|
||||||
# since it didn't, we can change the positions now
|
|
||||||
# basically the same as above except we only decrement
|
|
||||||
# the position if we're above the role we deleted.
|
|
||||||
for r in self._roles.values():
|
|
||||||
r.position -= r.position > role.position
|
|
||||||
|
|
||||||
return role
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _create_unavailable(cls, *, state: ConnectionState, guild_id: int, data: Optional[Dict[str, Any]]) -> Guild:
|
def _create_unavailable(cls, *, state: ConnectionState, guild_id: int, data: Optional[Dict[str, Any]]) -> Guild:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user