From f453ea820f891de59aa744b5e3fd42cdf41707ed Mon Sep 17 00:00:00 2001 From: Joan Cano Date: Thu, 2 Mar 2023 11:25:24 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=B1adido=20escapado=20de=20car=C3=A1cteres?= =?UTF-8?q?=20para=20Markdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wallamanta/alert.py | 7 +++---- wallamanta/helpers.py | 6 ------ wallamanta/worker.py | 5 ++--- 3 files changed, 5 insertions(+), 13 deletions(-) delete mode 100644 wallamanta/helpers.py diff --git a/wallamanta/alert.py b/wallamanta/alert.py index 646eacb..03406cd 100644 --- a/wallamanta/alert.py +++ b/wallamanta/alert.py @@ -3,7 +3,6 @@ import os import threading import logging import prettytable -import helpers from worker import Worker from telegram import Update @@ -38,7 +37,7 @@ Ejemplo 2: `/add cpu;10;30;;intel,core 2 duo,celeron;;;100`\n Los campos opcionales que se dejen vacíos tomarán el valor configurado en el archivo `\.env`\n Lista los productos con `/list` o obtén la información de uno en concreto con `/list nombre del producto`\n Borra un producto con `/remove nombre del producto`""" - await update.message.reply_markdown_v2(helpers.telegram_escape_characters(message)) + await update.message.reply_markdown_v2(telegram.helpers.escape_markdown(message)) async def add_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: message = """Tienes que pasar el número correcto de parámetros: `/add producto;precio_mínimo;precio_máximo,excluir_título(opcional, separado por comas);excluir_descripción_y_título(opciona, separado por comas);latitud(opcional);longitud(opcional),distancia(opcional)`\n @@ -89,7 +88,7 @@ Los campos opcionales que se dejen vacíos tomarán el valor configurado en el a message = f"Añadido {product_name} a seguimiento" else: message = f"{product_name} ya está en seguimiento!" - await update.message.reply_markdown_v2(helpers.telegram_escape_characters(message)) + await update.message.reply_markdown_v2(telegram.helpers.escape_markdown(message)) async def remove_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: product_to_remove = update.message.text[len('/remove '):] @@ -124,7 +123,7 @@ async def list_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> No table.align['Máx'] = 'r' for product in products: table.add_row([product['product_name'], f"{product['min_price']}€", f"{product['max_price']}€"]) - await update.message.reply_markdown_v2(f'```{helpers.telegram_escape_characters(table)}```') + await update.message.reply_markdown_v2(f'```{telegram.helpers.escape_markdown(table)}```') def main()->None: products = parse_json_file() diff --git a/wallamanta/helpers.py b/wallamanta/helpers.py deleted file mode 100644 index b28557e..0000000 --- a/wallamanta/helpers.py +++ /dev/null @@ -1,6 +0,0 @@ -TELEGRAM_ESCAPE_CHARACTERS = ['_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!'] - -def telegram_escape_characters(text): - for character in TELEGRAM_ESCAPE_CHARACTERS: - text = text.replace(character, f'\{character}') - return text \ No newline at end of file diff --git a/wallamanta/worker.py b/wallamanta/worker.py index 9ad4a48..9b4be2b 100644 --- a/wallamanta/worker.py +++ b/wallamanta/worker.py @@ -4,7 +4,6 @@ import telegram import os import logging import json -import helpers TELEGRAM_CHANNEL_ID = os.getenv("TELEGRAM_CHANNEL_ID") TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN") @@ -77,11 +76,11 @@ class Worker: if not self.has_excluded_words(article['title'].lower(), article['description'].lower(), product['exclude']) and not self.is_title_key_word_excluded(article['title'].lower(), product['title_keyword_exclude']): try: text = f"*Artículo*: {article['title']}\n*Descripción*: {article['description']}\n*Precio*: {article['price']} {article['currency']}\n[Ir al anuncio](https://es.wallapop.com/item/{article['web_slug']})".replace(".", "\.") - url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage?chat_id={TELEGRAM_CHANNEL_ID}&text={helpers.telegram_escape_characters(text)}&parse_mode=MarkdownV2" + url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage?chat_id={TELEGRAM_CHANNEL_ID}&text={telegram.helpers.escape_markdown(text)}&parse_mode=MarkdownV2" logging.info(requests.get(url).json()) except: text = f"*Artículo*: {article['title']}\n*Descripción*: {article['description']}\n*Precio*: {article['price']} {article['currency']}\n[Ir al anuncio](https://es.wallapop.com/item/{article['web_slug']})".replace(".", "\.") - url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage?chat_id={TELEGRAM_CHANNEL_ID}&text={helpers.telegram_escape_characters(text)}&parse_mode=MarkdownV2" + url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage?chat_id={TELEGRAM_CHANNEL_ID}&text={telegram.helpers.escape_markdown(text)}&parse_mode=MarkdownV2" requests.get(url) time.sleep(1) # Avoid Telegram flood restriction list.insert(0, article['id'])