Allow disabling state event relaying by setting format to empty string. Fixes #130
This commit is contained in:
+3
-1
@@ -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."
|
||||||
|
|||||||
@@ -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,
|
||||||
"<$sender_display_name> $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,
|
||||||
|
|||||||
Reference in New Issue
Block a user