diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 97d017417..0e3b6eecd 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -547,13 +547,13 @@ class Telegram(RPCHandler): return None return message - def _message_loudness(self, msg_type: RPCMessageType, exit_reason: str) -> str: + def _message_loudness(self, msg: RPCSendMsg) -> str: """Determine the loudness of the message - on, off or silent""" default_noti = "on" - msg_type = msg_type + msg_type = msg["type"] noti = "" - if msg_type in (RPCMessageType.EXIT, RPCMessageType.EXIT_FILL): + if msg["type"] == RPCMessageType.EXIT or msg["type"] == RPCMessageType.EXIT_FILL: sell_noti = ( self._config["telegram"].get("notification_settings", {}).get(str(msg_type), {}) ) @@ -563,7 +563,7 @@ class Telegram(RPCHandler): noti = sell_noti else: default_noti = sell_noti.get("*", default_noti) - noti = sell_noti.get(str(exit_reason), default_noti) + noti = sell_noti.get(str(msg["exit_reason"]), default_noti) else: noti = ( self._config["telegram"] @@ -575,7 +575,7 @@ class Telegram(RPCHandler): def send_msg(self, msg: RPCSendMsg) -> None: """Send a message to telegram channel""" - noti = self._message_loudness(msg["type"], msg.get("exit_reason", "")) + noti = self._message_loudness(msg) if noti == "off": logger.info(f"Notification '{msg['type']}' not sent.") diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index ee2eb4616..2d1f34fcd 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -2923,21 +2923,23 @@ def test_noficiation_settings(default_conf_usdt, mocker): } ) - assert telegram._message_loudness(RPCMessageType.ENTRY, "") == "silent" - assert telegram._message_loudness(RPCMessageType.ENTRY_FILL, "") == "on" - assert telegram._message_loudness(RPCMessageType.EXIT, "") == "on" - # Default to silent due to "*" definition - assert telegram._message_loudness(RPCMessageType.EXIT_FILL, "") == "silent" - assert telegram._message_loudness(RPCMessageType.PROTECTION_TRIGGER, "") == "off" - assert telegram._message_loudness(RPCMessageType.EXIT, "roi") == "silent" - assert telegram._message_loudness(RPCMessageType.EXIT, "partial_exit") == "off" - # Not given key defaults to on - assert telegram._message_loudness(RPCMessageType.EXIT, "cust_exit112") == "on" + loudness = telegram._message_loudness - assert telegram._message_loudness(RPCMessageType.EXIT_FILL, "roi") == "silent" - assert telegram._message_loudness(RPCMessageType.EXIT_FILL, "partial_exit") == "off" + assert loudness({"type": RPCMessageType.ENTRY, "exit_reason": ""}) == "silent" + assert loudness({"type": RPCMessageType.ENTRY_FILL, "exit_reason": ""}) == "on" + assert loudness({"type": RPCMessageType.EXIT, "exit_reason": ""}) == "on" # Default to silent due to "*" definition - assert telegram._message_loudness(RPCMessageType.EXIT_FILL, "cust_exit112") == "silent" + assert loudness({"type": RPCMessageType.EXIT_FILL, "exit_reason": ""}) == "silent" + assert loudness({"type": RPCMessageType.PROTECTION_TRIGGER, "exit_reason": ""}) == "off" + assert loudness({"type": RPCMessageType.EXIT, "exit_reason": "roi"}) == "silent" + assert loudness({"type": RPCMessageType.EXIT, "exit_reason": "partial_exit"}) == "off" + # Not given key defaults to on + assert loudness({"type": RPCMessageType.EXIT, "exit_reason": "cust_exit112"}) == "on" + + assert loudness({"type": RPCMessageType.EXIT_FILL, "exit_reason": "roi"}) == "silent" + assert loudness({"type": RPCMessageType.EXIT_FILL, "exit_reason": "partial_exit"}) == "off" + # Default to silent due to "*" definition + assert loudness({"type": RPCMessageType.EXIT_FILL, "exit_reason": "cust_exit112"}) == "silent" # Simplified setup for exit telegram._config["telegram"].update( @@ -2960,8 +2962,8 @@ def test_noficiation_settings(default_conf_usdt, mocker): } ) - assert telegram._message_loudness(RPCMessageType.EXIT_FILL, "roi") == "on" + assert loudness({"type": RPCMessageType.EXIT_FILL, "exit_reason": "roi"}) == "on" # All regular exits are off - assert telegram._message_loudness(RPCMessageType.EXIT, "roi") == "off" - assert telegram._message_loudness(RPCMessageType.EXIT, "partial_exit") == "off" - assert telegram._message_loudness(RPCMessageType.EXIT, "cust_exit112") == "off" + assert loudness({"type": RPCMessageType.EXIT, "exit_reason": "roi"}) == "off" + assert loudness({"type": RPCMessageType.EXIT, "exit_reason": "partial_exit"}) == "off" + assert loudness({"type": RPCMessageType.EXIT, "exit_reason": "cust_exit112"}) == "off"