feat: add nested webhook message support
This commit is contained in:
@@ -81,6 +81,20 @@ class Webhook(RPCHandler):
|
|||||||
return None
|
return None
|
||||||
return valuedict
|
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:
|
def send_msg(self, msg: RPCSendMsg) -> None:
|
||||||
"""Send a message to telegram channel"""
|
"""Send a message to telegram channel"""
|
||||||
try:
|
try:
|
||||||
@@ -90,7 +104,7 @@ class Webhook(RPCHandler):
|
|||||||
logger.debug("Message type '%s' not configured for webhooks", msg["type"])
|
logger.debug("Message type '%s' not configured for webhooks", msg["type"])
|
||||||
return
|
return
|
||||||
|
|
||||||
payload = {key: value.format(**msg) for (key, value) in valuedict.items()}
|
payload = self.recursive_format(valuedict, msg)
|
||||||
self._send_msg(payload)
|
self._send_msg(payload)
|
||||||
except KeyError as exc:
|
except KeyError as exc:
|
||||||
logger.exception(
|
logger.exception(
|
||||||
|
|||||||
Reference in New Issue
Block a user