diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index ddab6a11f..137d075b5 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -191,8 +191,8 @@ class Telegram(RPCHandler): r"/mix_tags", r"/daily$", r"/daily \d+$", - r"/profit$", - r"/profit \d+", + r"/profit([_ ]long|[_ ]short)?$", + r"/profit([_ ]long|[_ ]short)? \d+$", r"/stats$", r"/count$", r"/locks$", @@ -1126,6 +1126,11 @@ class Telegram(RPCHandler): timescale = None try: if context.args: + if not direction: + arg = context.args[0].lower() + if arg in ("short", "long"): + direction = arg + context.args.pop(0) # Remove direction from args timescale = int(context.args[0]) - 1 today_start = datetime.combine(date.today(), datetime.min.time()) start_date = today_start - timedelta(days=timescale) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 531b3046d..3aa802f3d 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -3006,11 +3006,28 @@ async def test_telegram_profit_long_short_handle( assert msg_mock.call_count == 1 assert "No long trades yet." in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() + + # Test support with "/profit long" + context = MagicMock() + context.args = ["long"] + await telegram._profit(update=update, context=context) + assert msg_mock.call_count == 1 + assert "No long trades yet." in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + await telegram._profit_short(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert "No short trades yet." in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() + # Test support with "/profit short" + context = MagicMock() + context.args = ["short"] + await telegram._profit(update=update, context=context) + assert msg_mock.call_count == 1 + assert "No short trades yet." in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + # When there are trades create_mock_trades_usdt(fee)