feat: add nested webhook message support

This commit is contained in:
Matthias
2025-08-31 08:30:19 +02:00
parent 2542102280
commit 48bd5cb2c0

View File

@@ -81,6 +81,20 @@ class Webhook(RPCHandler):
return None
return valuedict
def recursive_format(self, obj: dict | list | str, msg: RPCSendMsg):
"""
Format the given object using the provided message.
"""
match obj:
case dict():
return {k: self.recursive_format(v, msg) for k, v in obj.items()}
case list():
return [self.recursive_format(item, msg) for item in obj]
case str():
return obj.format(**msg)
case _:
return obj
def send_msg(self, msg: RPCSendMsg) -> None:
"""Send a message to telegram channel"""
try:
@@ -90,7 +104,7 @@ class Webhook(RPCHandler):
logger.debug("Message type '%s' not configured for webhooks", msg["type"])
return
payload = {key: value.format(**msg) for (key, value) in valuedict.items()}
payload = self.recursive_format(valuedict, msg)
self._send_msg(payload)
except KeyError as exc:
logger.exception(