Add option to invite new members to additional rooms

This commit is contained in:
Panoramic 2024-07-29 12:00:52 +03:00
parent 82266ff3de
commit 171bd7e52a
3 changed files with 22 additions and 2 deletions

View File

@ -48,6 +48,9 @@ vetting:
max_no_votes: 0 max_no_votes: 0
# Minimum power level to automatically invite users from vetting room # Minimum power level to automatically invite users from vetting room
power_level_invite: 10 power_level_invite: 10
# List of additional rooms to invite vetted members to
# The bot must be in these rooms and have the invite permission
additional_rooms: []
# Logging setup # Logging setup
logging: logging:

View File

@ -212,16 +212,15 @@ class Callbacks:
if row is None: if row is None:
return return
# Invite the user
user_id = row[0] user_id = row[0]
# Invite user to main space
logger.info("Inviting new user (%s) to the main space.", user_id) logger.info("Inviting new user (%s) to the main space.", user_id)
resp = await self.client.room_invite(self.config.main_space_id, user_id) resp = await self.client.room_invite(self.config.main_space_id, user_id)
if isinstance(resp, RoomInviteError): if isinstance(resp, RoomInviteError):
text = f"Failed inviting user: {resp}" text = f"Failed inviting user: {resp}"
logger.error(text, stack_info=True) logger.error(text, stack_info=True)
else: else:
text = f"Invited {user_id}." text = f"Invited {user_id}."
logger.info(text) logger.info(text)
@ -229,6 +228,20 @@ class Callbacks:
self.client, self.config.vetting_room_id, text, notice=True self.client, self.config.vetting_room_id, text, notice=True
) )
# Invite user to additional rooms
for room_id in self.config.additional_rooms:
resp = await self.client.room_invite(room_id, user_id)
if isinstance(resp, RoomInviteError):
logger.error(
"Couldn't invite %s to %s: %s",
user_id,
room_id,
resp,
stack_info=True,
)
else:
logger.info("Invited %s to %s", user_id, room_id)
async def unknown(self, room: MatrixRoom, event: UnknownEvent) -> None: async def unknown(self, room: MatrixRoom, event: UnknownEvent) -> None:
"""Callback for when an event with a type that is unknown to matrix-nio is received. """Callback for when an event with a type that is unknown to matrix-nio is received.

View File

@ -138,6 +138,10 @@ class Config:
self._get_cfg(["vetting", "power_level_invite"], required=True) self._get_cfg(["vetting", "power_level_invite"], required=True)
) )
self.additional_rooms: tuple[str] = tuple(
self._get_cfg(["vetting", "additional_rooms"], required=False, default=[])
)
def _get_cfg( def _get_cfg(
self, self,
path: List[str], path: List[str],