Skip to content

Commit 48bd5cb

Browse files
committed
feat: add nested webhook message support
1 parent 2542102 commit 48bd5cb

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

freqtrade/rpc/webhook.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,20 @@ def _get_value_dict(self, msg: RPCSendMsg) -> dict[str, Any] | None:
8181
return None
8282
return valuedict
8383

84+
def recursive_format(self, obj: dict | list | str, msg: RPCSendMsg):
85+
"""
86+
Format the given object using the provided message.
87+
"""
88+
match obj:
89+
case dict():
90+
return {k: self.recursive_format(v, msg) for k, v in obj.items()}
91+
case list():
92+
return [self.recursive_format(item, msg) for item in obj]
93+
case str():
94+
return obj.format(**msg)
95+
case _:
96+
return obj
97+
8498
def send_msg(self, msg: RPCSendMsg) -> None:
8599
"""Send a message to telegram channel"""
86100
try:
@@ -90,7 +104,7 @@ def send_msg(self, msg: RPCSendMsg) -> None:
90104
logger.debug("Message type '%s' not configured for webhooks", msg["type"])
91105
return
92106

93-
payload = {key: value.format(**msg) for (key, value) in valuedict.items()}
107+
payload = self.recursive_format(valuedict, msg)
94108
self._send_msg(payload)
95109
except KeyError as exc:
96110
logger.exception(

0 commit comments

Comments
 (0)