Añadido escapado de carácteres para Markdown

This commit is contained in:
Joan Cano
2023-03-02 11:25:24 +01:00
parent b6c8c6bd24
commit f453ea820f
3 changed files with 5 additions and 13 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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'])