Merge branch 'fix-power-levels-dm-room' into 'master'

Grants admin rights when creating dm room

See merge request Neutrinet/matrix-alertbot!14
This commit is contained in:
HgO 2024-08-11 16:22:25 +00:00
commit 949ace768a
2 changed files with 33 additions and 2 deletions

View file

@ -236,7 +236,7 @@ class MatrixClientPool:
) -> None: ) -> None:
async with self._lock: async with self._lock:
if matrix_client is self.matrix_client: if matrix_client is self.matrix_client:
unactive_accounts = self.unactive_user_ids() unactive_user_ids = self.unactive_user_ids()
self.dm_rooms = await self.find_existing_dm_rooms( self.dm_rooms = await self.find_existing_dm_rooms(
account=account, matrix_client=matrix_client, config=config account=account, matrix_client=matrix_client, config=config
@ -262,13 +262,16 @@ class MatrixClientPool:
logger.info( logger.info(
f"Bot {account.id} | Creating direct room with user {user_id}" f"Bot {account.id} | Creating direct room with user {user_id}"
) )
invitations = unactive_accounts + [user_id] invitations = unactive_user_ids + [user_id]
room_user_ids = invitations + [account.id]
power_levels = {"users": dict.fromkeys(room_user_ids, 100)}
create_room_response = await matrix_client.room_create( create_room_response = await matrix_client.room_create(
visibility=RoomVisibility.private, visibility=RoomVisibility.private,
name=room_title, name=room_title,
invite=invitations, invite=invitations,
is_direct=True, is_direct=True,
preset=RoomPreset.private_chat, preset=RoomPreset.private_chat,
power_level_override=power_levels,
) )
if isinstance(create_room_response, RoomCreateError): if isinstance(create_room_response, RoomCreateError):
error = create_room_response.message error = create_room_response.message

View file

@ -476,6 +476,13 @@ class MatrixClientPoolTestCase(unittest.IsolatedAsyncioTestCase):
invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"], invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"],
is_direct=True, is_direct=True,
preset=RoomPreset.private_chat, preset=RoomPreset.private_chat,
power_level_override={
"users": {
"@fake_user:matrix.example.com": 100,
"@other_user:chat.example.com": 100,
"@fake_dm_user:example.com": 100,
}
},
) )
self.assertDictEqual( self.assertDictEqual(
{ {
@ -528,6 +535,13 @@ class MatrixClientPoolTestCase(unittest.IsolatedAsyncioTestCase):
invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"], invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"],
is_direct=True, is_direct=True,
preset=RoomPreset.private_chat, preset=RoomPreset.private_chat,
power_level_override={
"users": {
"@fake_user:matrix.example.com": 100,
"@other_user:chat.example.com": 100,
"@fake_dm_user:example.com": 100,
}
},
) )
self.assertDictEqual( self.assertDictEqual(
{ {
@ -581,6 +595,13 @@ class MatrixClientPoolTestCase(unittest.IsolatedAsyncioTestCase):
invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"], invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"],
is_direct=True, is_direct=True,
preset=RoomPreset.private_chat, preset=RoomPreset.private_chat,
power_level_override={
"users": {
"@fake_user:matrix.example.com": 100,
"@other_user:chat.example.com": 100,
"@fake_dm_user:example.com": 100,
}
},
) )
self.assertDictEqual( self.assertDictEqual(
{ {
@ -631,6 +652,13 @@ class MatrixClientPoolTestCase(unittest.IsolatedAsyncioTestCase):
invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"], invite=["@other_user:chat.example.com", "@fake_dm_user:example.com"],
is_direct=True, is_direct=True,
preset=RoomPreset.private_chat, preset=RoomPreset.private_chat,
power_level_override={
"users": {
"@fake_user:matrix.example.com": 100,
"@other_user:chat.example.com": 100,
"@fake_dm_user:example.com": 100,
}
},
) )
self.assertDictEqual( self.assertDictEqual(
{ {