Allow disabling state event relaying by setting format to empty string. Fixes #130

This commit is contained in:
Tulir Asokan
2018-06-24 01:46:06 +03:00
parent 99f0c02766
commit 86bda1bb45
2 changed files with 15 additions and 4 deletions
+3 -1
View File
@@ -133,10 +133,12 @@ bridge:
m.video: "<b>$sender_displayname</b> sent a video: $message" m.video: "<b>$sender_displayname</b> sent a video: $message"
m.location: "<b>$sender_displayname</b> sent a location: $message" m.location: "<b>$sender_displayname</b> sent a location: $message"
# The format sto use when sending state events to Telegram via the relay bot. # The formats to use when sending state events to Telegram via the relay bot.
# #
# Variables from `message_formats` that have the `sender_` prefix are available without the prefix. # Variables from `message_formats` that have the `sender_` prefix are available without the prefix.
# In name_change events, `$prev_displayname` is the previous displayname. # In name_change events, `$prev_displayname` is the previous displayname.
#
# Set format to an empty string to disable the messages for that event.
state_event_formats: state_event_formats:
join: "<b>$displayname</b> joined the room." join: "<b>$displayname</b> joined the room."
leave: "<b>$displayname</b> left the room." leave: "<b>$displayname</b> left the room."
+12 -3
View File
@@ -618,14 +618,17 @@ class Portal:
else: else:
return "" return ""
async def _get_state_change_message(self, event, user, arguments={}): async def _get_state_change_message(self, event, user, arguments=None):
tpl = config[f"bridge.state_event_formats.{event}"] tpl = config[f"bridge.state_event_formats.{event}"]
if len(tpl) == 0:
# Empty format means they don't want the message
return None
displayname = await self.get_displayname(user) displayname = await self.get_displayname(user)
tpl_args = dict(mxid=user.mxid, tpl_args = dict(mxid=user.mxid,
username=user.mxid_localpart, username=user.mxid_localpart,
displayname=displayname) displayname=displayname)
tpl_args = {**tpl_args, **arguments} tpl_args = {**tpl_args, **(arguments or {})}
message = Template(tpl).safe_substitute(tpl_args) message = Template(tpl).safe_substitute(tpl_args)
return { return {
"format": "org.matrix.custom.html", "format": "org.matrix.custom.html",
@@ -637,6 +640,8 @@ class Portal:
message = await self._get_state_change_message( message = await self._get_state_change_message(
"name_change", user, "name_change", user,
dict(displayname=displayname, prev_displayname=prev_displayname)) dict(displayname=displayname, prev_displayname=prev_displayname))
if not message:
return
response = await self.bot.client.send_message( response = await self.bot.client.send_message(
self.peer, message, self.peer, message,
parse_mode=self._matrix_event_to_entities) parse_mode=self._matrix_event_to_entities)
@@ -651,6 +656,8 @@ class Portal:
if await user.needs_relaybot(self): if await user.needs_relaybot(self):
async with self.require_send_lock(self.bot.tgid): async with self.require_send_lock(self.bot.tgid):
message = await self._get_state_change_message("leave", user) message = await self._get_state_change_message("leave", user)
if not message:
return
response = await self.bot.client.send_message( response = await self.bot.client.send_message(
self.peer, message, self.peer, message,
parse_mode=self._matrix_event_to_entities) parse_mode=self._matrix_event_to_entities)
@@ -685,6 +692,8 @@ class Portal:
if await user.needs_relaybot(self): if await user.needs_relaybot(self):
async with self.require_send_lock(self.bot.tgid): async with self.require_send_lock(self.bot.tgid):
message = await self._get_state_change_message("join", user) message = await self._get_state_change_message("join", user)
if not message:
return
response = await self.bot.client.send_message( response = await self.bot.client.send_message(
self.peer, message, self.peer, message,
parse_mode=self._matrix_event_to_entities) parse_mode=self._matrix_event_to_entities)
@@ -705,7 +714,7 @@ class Portal:
body = message["formatted_body"] body = message["formatted_body"]
tpl = config["bridge.message_formats"].get(msgtype, tpl = config["bridge.message_formats"].get(msgtype,
"&lt;$sender_display_name&gt; $message") "<b>$sender_displayname</b>: $message")
displayname = await self.get_displayname(sender) displayname = await self.get_displayname(sender)
tpl_args = dict(sender_mxid=sender.mxid, tpl_args = dict(sender_mxid=sender.mxid,
sender_username=sender.mxid_localpart, sender_username=sender.mxid_localpart,