diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 921fdfe59..0fb322eb8 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -10,7 +10,7 @@ from datetime import date, datetime, timedelta from html import escape from itertools import chain from math import isnan -from typing import Any, Callable, Dict, List, Union +from typing import Any, Callable, Dict, List, Optional, Union import arrow from tabulate import tabulate @@ -421,14 +421,9 @@ class Telegram(RPCHandler): # insert separators line between Total lines = message.split("\n") message = "\n".join(lines[:-1] + [lines[1]] + [lines[-1]]) - if(messages_count == 1 and update.callback_query): - self._update_msg(query=update.callback_query, - msg=f"
{message}",
- parse_mode=ParseMode.HTML,
- callback_path="update_status_table", reload_able=True)
- else:
- self._send_msg(f"{message}", reload_able=True,
- callback_path="update_status_table", parse_mode=ParseMode.HTML)
+ self._send_msg(f"{message}", reload_able=True,
+ callback_path="update_status_table", parse_mode=ParseMode.HTML,
+ query=update.callback_query)
except RPCException as e:
self._send_msg(str(e))
@@ -466,13 +461,8 @@ class Telegram(RPCHandler):
],
tablefmt='simple')
message = f'Daily Profit over the last {timescale} days:\n{stats_tab}'
- if(update.callback_query):
- self._update_msg(query=update.callback_query,
- msg=message, parse_mode=ParseMode.HTML,
- callback_path="update_daily", reload_able=True)
- else:
- self._send_msg(msg=message, parse_mode=ParseMode.HTML, callback_path="update_daily",
- reload_able=True)
+ self._send_msg(message, parse_mode=ParseMode.HTML, callback_path="update_daily",
+ reload_able=True, query=update.callback_query)
except RPCException as e:
self._send_msg(str(e))
@@ -544,11 +534,8 @@ class Telegram(RPCHandler):
if stats['closed_trade_count'] > 0:
markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n"
f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`")
- if(update.callback_query):
- self._update_msg(query=update.callback_query,
- msg=markdown_msg, callback_path="update_profit", reload_able=True)
- else:
- self._send_msg(msg=markdown_msg, callback_path="update_profit", reload_able=True)
+ self._send_msg(markdown_msg, callback_path="update_profit", reload_able=True,
+ query=update.callback_query)
@authorized_only
def _stats(self, update: Update, context: CallbackContext) -> None:
@@ -635,11 +622,8 @@ class Telegram(RPCHandler):
f"\t`{result['stake']}: {result['total']: .8f}`\n"
f"\t`{result['symbol']}: "
f"{round_coin_value(result['value'], result['symbol'], False)}`\n")
- if(update.callback_query):
- self._update_msg(query=update.callback_query,
- msg=output, callback_path="update_balance", reload_able=True)
- else:
- self._send_msg(msg=output, callback_path="update_balance", reload_able=True)
+ self._send_msg(output, callback_path="update_balance", reload_able=True,
+ query=update.callback_query)
except RPCException as e:
self._send_msg(str(e))
@@ -820,7 +804,6 @@ class Telegram(RPCHandler):
try:
trades = self._rpc._rpc_performance()
output = "Performance:\n"
- sent_messages = 0
for i, trade in enumerate(trades):
stat_line = (
f"{i+1}.\t {trade['pair']}\t"
@@ -831,17 +814,12 @@ class Telegram(RPCHandler):
if len(output + stat_line) >= MAX_TELEGRAM_MESSAGE_LENGTH:
self._send_msg(output, parse_mode=ParseMode.HTML)
output = stat_line
- sent_messages += 1
else:
output += stat_line
- if(sent_messages == 0 and update.callback_query):
- self._update_msg(query=update.callback_query,
- msg=output, parse_mode=ParseMode.HTML,
- callback_path="update_performance", reload_able=True)
- else:
- self._send_msg(msg=output, parse_mode=ParseMode.HTML,
- callback_path="update_performance", reload_able=True)
+ self._send_msg(output, parse_mode=ParseMode.HTML,
+ callback_path="update_performance", reload_able=True,
+ query=update.callback_query)
except RPCException as e:
self._send_msg(str(e))
@@ -861,13 +839,9 @@ class Telegram(RPCHandler):
tablefmt='simple')
message = "{}".format(message)
logger.debug(message)
- if(update.callback_query):
- self._update_msg(query=update.callback_query,
- msg=message, parse_mode=ParseMode.HTML,
- callback_path="update_count", reload_able=True)
- else:
- self._send_msg(msg=message, parse_mode=ParseMode.HTML,
- callback_path="update_count", reload_able=True)
+ self._send_msg(message, parse_mode=ParseMode.HTML,
+ callback_path="update_count", reload_able=True,
+ query=update.callback_query)
except RPCException as e:
self._send_msg(str(e))
@@ -1140,7 +1114,8 @@ class Telegram(RPCHandler):
disable_notification: bool = False,
keyboard: List[List[Union[str, KeyboardButton, InlineKeyboardButton]]] = None,
callback_path: str = "",
- reload_able: bool = False) -> None:
+ reload_able: bool = False,
+ query: Optional[CallbackQuery] = None) -> None:
"""
Send given markdown message
:param msg: message
@@ -1148,6 +1123,10 @@ class Telegram(RPCHandler):
:param parse_mode: telegram parse mode
:return: None
"""
+ if query:
+ self._update_msg(query=query, msg=msg, parse_mode=parse_mode,
+ callback_path=callback_path, reload_able=reload_able)
+ return
if reload_able and self._config['telegram'].get('reload', True):
reply_markup = InlineKeyboardMarkup([
[InlineKeyboardButton("Refresh", callback_data=callback_path)]])