mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 14:30:17 +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
|
||||
guild_roles = RolesSet(self.guild_roles(guild_id=guild_id))
|
||||
logger.debug('Current guild roles: %s', guild_roles.ids())
|
||||
_roles = set(member_info.roles)
|
||||
if not guild_roles.has_roles(member_info.roles):
|
||||
guild_roles = RolesSet(
|
||||
self.guild_roles(guild_id=guild_id, use_cache=False)
|
||||
)
|
||||
if not guild_roles.has_roles(member_info.roles):
|
||||
role_ids = set(member_info.roles).difference(guild_roles.ids())
|
||||
raise RuntimeError(
|
||||
f'Discord user {user_id} has unknown roles: {role_ids}'
|
||||
)
|
||||
return guild_roles.subset(member_info.roles)
|
||||
logger.warning(f'Discord user {user_id} has unknown roles: {role_ids}')
|
||||
for _r in role_ids:
|
||||
_roles.remove(_r)
|
||||
return guild_roles.subset(_roles)
|
||||
|
||||
@classmethod
|
||||
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}
|
||||
client = DiscordClientStub(TEST_BOT_TOKEN, mock_redis)
|
||||
# when/then
|
||||
with self.assertRaises(RuntimeError):
|
||||
client.guild_member_roles(TEST_GUILD_ID, TEST_USER_ID)
|
||||
roles = 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
|
||||
# def test_should_raise_exception_if_member_info_is_invalid(
|
||||
|
Loading…
x
Reference in New Issue
Block a user