diff --git a/freqtrade/rpc/webhook.py b/freqtrade/rpc/webhook.py index dda01c033..d39c378dc 100644 --- a/freqtrade/rpc/webhook.py +++ b/freqtrade/rpc/webhook.py @@ -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(