mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 22:40:16 +02:00
Merge branch 'unknown_discord_group_patch' into 'master'
Discord: Don't fail on unknown groups, simply remove them. See merge request allianceauth/allianceauth!1504
This commit is contained in:
commit
903074080e
@ -588,16 +588,17 @@ class DiscordClient:
|
|||||||
return None # User is no longer a member
|
return None # User is no longer a member
|
||||||
guild_roles = RolesSet(self.guild_roles(guild_id=guild_id))
|
guild_roles = RolesSet(self.guild_roles(guild_id=guild_id))
|
||||||
logger.debug('Current guild roles: %s', guild_roles.ids())
|
logger.debug('Current guild roles: %s', guild_roles.ids())
|
||||||
|
_roles = set(member_info.roles)
|
||||||
if not guild_roles.has_roles(member_info.roles):
|
if not guild_roles.has_roles(member_info.roles):
|
||||||
guild_roles = RolesSet(
|
guild_roles = RolesSet(
|
||||||
self.guild_roles(guild_id=guild_id, use_cache=False)
|
self.guild_roles(guild_id=guild_id, use_cache=False)
|
||||||
)
|
)
|
||||||
if not guild_roles.has_roles(member_info.roles):
|
if not guild_roles.has_roles(member_info.roles):
|
||||||
role_ids = set(member_info.roles).difference(guild_roles.ids())
|
role_ids = set(member_info.roles).difference(guild_roles.ids())
|
||||||
raise RuntimeError(
|
logger.warning(f'Discord user {user_id} has unknown roles: {role_ids}')
|
||||||
f'Discord user {user_id} has unknown roles: {role_ids}'
|
for _r in role_ids:
|
||||||
)
|
_roles.remove(_r)
|
||||||
return guild_roles.subset(member_info.roles)
|
return guild_roles.subset(_roles)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _is_member_unknown_error(cls, r: requests.Response) -> bool:
|
def _is_member_unknown_error(cls, r: requests.Response) -> bool:
|
||||||
|
@ -899,8 +899,8 @@ class TestGuildMemberRoles(NoSocketsTestCase):
|
|||||||
mock_guild_roles.return_value = {role_a, role_b}
|
mock_guild_roles.return_value = {role_a, role_b}
|
||||||
client = DiscordClientStub(TEST_BOT_TOKEN, mock_redis)
|
client = DiscordClientStub(TEST_BOT_TOKEN, mock_redis)
|
||||||
# when/then
|
# when/then
|
||||||
with self.assertRaises(RuntimeError):
|
roles = client.guild_member_roles(TEST_GUILD_ID, TEST_USER_ID)
|
||||||
client.guild_member_roles(TEST_GUILD_ID, TEST_USER_ID)
|
self.assertEqual(roles, RolesSet([role_a]))
|
||||||
|
|
||||||
# TODO: Re-enable after adding Discord general error handling
|
# TODO: Re-enable after adding Discord general error handling
|
||||||
# def test_should_raise_exception_if_member_info_is_invalid(
|
# def test_should_raise_exception_if_member_info_is_invalid(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user