From 03eff698291b16077163bfe153860276a2a48d28 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 13 Jun 2021 20:21:43 +0200 Subject: [PATCH] Simplify update message sending --- freqtrade/rpc/telegram.py | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index ba9c6c0f6..921fdfe59 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -10,12 +10,12 @@ 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, cast +from typing import Any, Callable, Dict, List, Union import arrow from tabulate import tabulate -from telegram import (InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ParseMode, - ReplyKeyboardMarkup, Update) +from telegram import (CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, + ParseMode, ReplyKeyboardMarkup, Update) from telegram.error import BadRequest, NetworkError, TelegramError from telegram.ext import CallbackContext, CallbackQueryHandler, CommandHandler, Updater from telegram.utils.helpers import escape_markdown @@ -180,8 +180,8 @@ class Telegram(RPCHandler): for handle in handles: self._updater.dispatcher.add_handler(handle) - for handle in callbacks: - self._updater.dispatcher.add_handler(handle) + for callback in callbacks: + self._updater.dispatcher.add_handler(callback) self._updater.start_polling( bootstrap_retries=-1, @@ -422,9 +422,7 @@ class Telegram(RPCHandler): lines = message.split("\n") message = "\n".join(lines[:-1] + [lines[1]] + [lines[-1]]) if(messages_count == 1 and update.callback_query): - query = update.callback_query - self._update_msg(chat_id=query.message.chat_id, - message_id=query.message.message_id, + self._update_msg(query=update.callback_query, msg=f"
{message}
", parse_mode=ParseMode.HTML, callback_path="update_status_table", reload_able=True) @@ -469,8 +467,7 @@ class Telegram(RPCHandler): tablefmt='simple') message = f'Daily Profit over the last {timescale} days:\n
{stats_tab}
' if(update.callback_query): - query = update.callback_query - self._update_msg(chat_id=query.message.chat_id, message_id=query.message.message_id, + self._update_msg(query=update.callback_query, msg=message, parse_mode=ParseMode.HTML, callback_path="update_daily", reload_able=True) else: @@ -548,8 +545,7 @@ class Telegram(RPCHandler): markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n" f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`") if(update.callback_query): - query = update.callback_query - self._update_msg(chat_id=query.message.chat_id, message_id=query.message.message_id, + 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) @@ -640,8 +636,7 @@ class Telegram(RPCHandler): f"\t`{result['symbol']}: " f"{round_coin_value(result['value'], result['symbol'], False)}`\n") if(update.callback_query): - query = update.callback_query - self._update_msg(chat_id=query.message.chat_id, message_id=query.message.message_id, + 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) @@ -841,8 +836,7 @@ class Telegram(RPCHandler): output += stat_line if(sent_messages == 0 and update.callback_query): - query = update.callback_query - self._update_msg(chat_id=query.message.chat_id, message_id=query.message.message_id, + self._update_msg(query=update.callback_query, msg=output, parse_mode=ParseMode.HTML, callback_path="update_performance", reload_able=True) else: @@ -868,8 +862,7 @@ class Telegram(RPCHandler): message = "
{}
".format(message) logger.debug(message) if(update.callback_query): - query = update.callback_query - self._update_msg(chat_id=query.message.chat_id, message_id=query.message.message_id, + self._update_msg(query=update.callback_query, msg=message, parse_mode=ParseMode.HTML, callback_path="update_count", reload_able=True) else: @@ -1106,7 +1099,7 @@ class Telegram(RPCHandler): f"*Current state:* `{val['state']}`" ) - def _update_msg(self, chat_id: str, message_id: str, msg: str, callback_path: str = "", + def _update_msg(self, query: CallbackQuery, msg: str, callback_path: str = "", reload_able: bool = False, parse_mode: str = ParseMode.MARKDOWN) -> None: if reload_able: reply_markup = InlineKeyboardMarkup([ @@ -1115,6 +1108,11 @@ class Telegram(RPCHandler): else: reply_markup = InlineKeyboardMarkup([[]]) msg += "\nUpdated: {}".format(datetime.now().ctime()) + if not query.message: + return + chat_id = query.message.chat_id + message_id = query.message.message_id + try: try: self._updater.bot.edit_message_text(