|
|
|
|
@ -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(
|
|
|
|
|
|