more cleanup
This commit is contained in:
+16
-3
@@ -6,6 +6,7 @@ import time
|
|||||||
import re
|
import re
|
||||||
import fnmatch
|
import fnmatch
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import asyncpg.exceptions
|
||||||
|
|
||||||
from mautrix.client import (
|
from mautrix.client import (
|
||||||
Client,
|
Client,
|
||||||
@@ -128,10 +129,23 @@ class CommunityBot(Plugin):
|
|||||||
if not self.config["track_users"]:
|
if not self.config["track_users"]:
|
||||||
return "user tracking is disabled"
|
return "user tracking is disabled"
|
||||||
|
|
||||||
|
try:
|
||||||
space_members_obj = await self.client.get_joined_members(
|
space_members_obj = await self.client.get_joined_members(
|
||||||
self.config["parent_room"]
|
self.config["parent_room"]
|
||||||
)
|
)
|
||||||
space_members_list = space_members_obj.keys()
|
space_members_list = space_members_obj.keys()
|
||||||
|
except asyncpg.exceptions.UniqueViolationError as e:
|
||||||
|
# If we hit a duplicate key error, log it and retry once
|
||||||
|
self.log.warning(f"Duplicate key error during member sync, retrying: {e}")
|
||||||
|
await asyncio.sleep(1) # Brief delay before retry
|
||||||
|
space_members_obj = await self.client.get_joined_members(
|
||||||
|
self.config["parent_room"]
|
||||||
|
)
|
||||||
|
space_members_list = space_members_obj.keys()
|
||||||
|
except Exception as e:
|
||||||
|
self.log.error(f"Failed to get space members: {e}")
|
||||||
|
return {"added": [], "dropped": []}
|
||||||
|
|
||||||
table_users = await self.database.fetch("SELECT mxid FROM user_events")
|
table_users = await self.database.fetch("SELECT mxid FROM user_events")
|
||||||
table_user_list = [row["mxid"] for row in table_users]
|
table_user_list = [row["mxid"] for row in table_users]
|
||||||
untracked_users = set(space_members_list) - set(table_user_list)
|
untracked_users = set(space_members_list) - set(table_user_list)
|
||||||
@@ -884,7 +898,6 @@ class CommunityBot(Plugin):
|
|||||||
self.log.info(
|
self.log.info(
|
||||||
"no admins or moderators configured, skipping power level sync"
|
"no admins or moderators configured, skipping power level sync"
|
||||||
)
|
)
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
power_levels = await self.client.get_state_event(
|
power_levels = await self.client.get_state_event(
|
||||||
self.config["parent_room"], EventType.ROOM_POWER_LEVELS
|
self.config["parent_room"], EventType.ROOM_POWER_LEVELS
|
||||||
@@ -916,10 +929,10 @@ class CommunityBot(Plugin):
|
|||||||
self.log.debug("successfully migrated admin/mod config to parent room")
|
self.log.debug("successfully migrated admin/mod config to parent room")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.error(
|
self.log.error(
|
||||||
f"Failed to send power levels to {self.config["parent_room"]}: {e}"
|
f"Failed to send power levels to {self.config['parent_room']}: {e}"
|
||||||
)
|
)
|
||||||
await evt.respond(
|
await evt.respond(
|
||||||
f"Failed to send power levels to {self.config["parent_room"]}: {e}"
|
f"Failed to send power levels to {self.config['parent_room']}: {e}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not self.config["track_users"]:
|
if not self.config["track_users"]:
|
||||||
|
|||||||
Reference in New Issue
Block a user