MozillaItalia / MozItaReBot

riscrittura del bot di Mozilla Italia
6 stars 2 forks source link

Aggiornare markdown #41

Open dag7dev opened 1 year ago

dag7dev commented 1 year ago

Con Lorenzo ci siamo resi conto che non siamo riusciti a formattare per bene i testi in markdown nelle stringhe json del bot.

Attualmente il bot scrive del testo all'utente senza formattazione, questo perché abbiamo utilizzato come ParseMode, Markdown e non Markdown_V2 Bisogna cambiare quel "Markdown" in MarkdownV2, ma quest'ultimo ha regole di escape particolari.

Idealmente dovremmo avere le stringhe nel json solamente in Markdown (normale), mentre nella fase di processing, durante la funzione _reply, le stringhe dovrebbero essere opportunamente modificate in modo da renderle compatibile con MarkdownV2.

Per capire di cosa sto parlando e bisognerebbe modificare: https://github.com/MozillaItalia/MozItaReBot/blob/7596be6ac402860b7f258054de699383eb280d33/src/commands.py#L22

Mte90 commented 1 year ago

Maggiori informazioni perchè non mi era chiaro:

Prendendo da https://github.com/MozillaItalia/MozItaReBot/blob/master/json/frasi.json#L38 abbiamo una stringa come:

Puoi scrivere quando vuoi un parere sui servizi offerti da Mozilla Italia entrando nel gruppo '__Home__' e discutendone con noi.\nNon preoccuparti, nessuno ti giudicherà o aggredirà, troverai persone pronte a comprendere i tuoi problemi e ad accogliere i tuoi suggerimenti segnalandoli - __quando possibile__ - a Mozilla.

Non mi è chiaro ad esempio cosa va cambiato qui o quali sono le differenze tra i due markdown. Immagino che cambiare il metodo predefinito nella funzione in markdownv2 non sia sufficiente ma non so dove altro bisogna intervenire e come.

dag7dev commented 1 year ago

Per le differenze tra i due markdown, rimando alla documentazione: https://core.telegram.org/bots/api#markdownv2-style , se scrolli giù c'è anche la legacy.

La stringa non va cambiata, va cambiata la funzione in Python, e in particolar modo "parse_mode" deve diventare MarkdownV2.

Se lo fai, ti accorgerai che Telegram si arrabbia perché "stai usando dei caratteri riservati che devi escapizzare" (come illustrato nel MarkdownV2 sulla doc ufficiale).

Mte90 commented 1 year ago

Quindi dobbiamo modificare il codice per generare un markdownv2 e poi va pulito per quelli che non supporta telegram.