Enviar por Telegram textos en HTML o Markdown

Se pueden enviar textos con formato HTML o Markdown, pero con muchas limitaciones.

La API de telegram nos indica que los Bots admiten el formato básico de los mensajes. Puede utilizar texto en negrita, cursiva, subrayado y tachado, así como enlaces en línea y código preformateado en los mensajes de sus bots. Los clientes de Telegram los renderizarán en consecuencia. Puede utilizar formato de estilo Markdown o HTML.

Las etiquetas soportadas actualmente son:

<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>
<b>bold <i>italic bold <s>italic bold strikethrough</s> <u>underline italic bold</u></i> bold</b>
<a href="http://www.example.com/">inline URL</a>
<a href="tg://user?id=123456789">inline mention of a user</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre>

Este código Python envía un mensaje a un bot de telegram con etiquetas HTML soportadas actualmente por la Api.

import requests
import json
import datetime
import funciones_telegram as ft

url = "https://api.openweathermap.org/data/2.5/weather"

querystring = {"lat":"41.383745","lon":"2.046644","appid":"90eda4c96ac3f30dfa32f0b8bedf2956f9","units":"metric","lang":"38"}

headers = {
    'Cache-Control': 'no-cache'
    }

response = requests.request("GET", url, headers=headers, params=querystring)

data = json.loads(response.content)

hora_UTC = datetime.datetime.fromtimestamp(data['dt'])
amanecer = datetime.datetime.fromtimestamp(data['sys']["sunrise"])
atardecer = datetime.datetime.fromtimestamp(data['sys']["sunset"])

Latitud = str(data['coord']['lat'])
Longitud = str(data['coord']['lon'])
Nubes = data['weather'][0]['main']
Descripcion = data['weather'][0]['description']
Temperatura = str(data['main']['temp'])
Sensacion_termica = str(data['main']['feels_like'])
Temperatura_minima = str(data['main']['temp_min'])
Temperatura_maxima = str(data['main']['temp_max'])
Presion_atmosferica = str(data['main']['pressure'])
Humedad = str(data['main']['humidity'])
Visibilidad = str(data['visibility'])
Velocidad_viento = str(data['wind']['speed'])
Direccion_viento = str(data['wind']['deg'])
Abundancia_nubes = str(data['clouds']['all']) + ' %'
Hora_datos = hora_UTC.strftime('%d-%m-%Y %H:%M:%S')
Codigo_pais = data['sys']['country']
Hora_amanecer = amanecer.strftime('%H:%M:%S')
Hora_atardecer = atardecer.strftime('%H:%M:%S')
Poblacion = data['name']
Codigo_poblacion = str(data['id'])

m = '<b>Condiciones climatologicas</b>' + '\n'
m += '<b>Latitud: </b>' + Latitud + '\n'
m += '<b>Longitud: </b>' + Longitud + '\n'
m += '<b>Nubes: </b>' + Nubes + '\n'
m += '<b>Descripción: </b>' + Descripcion + '\n'
m += '<b>Temperatura: </b>' + Temperatura + '\n'
m += '<b>Sensación termica: </b>' + Sensacion_termica + '\n'
m += '<b>Temperatura minima: </b>' + Temperatura_minima + '\n'
m += '<b>Temperatura máxima: </b>' + Temperatura_maxima + '\n'
m += '<b>Presión atmosferica: </b>' + Presion_atmosferica + '\n'
m += '<b>Humedad: </b>' + Humedad + '\n'
m += '<b>Visibilidad: </b>' + Visibilidad + '\n'
m += '<b>Velocidad del viento: </b>' + Velocidad_viento + '\n'
m += '<b>Dirección del viento: </b>' + Direccion_viento + '\n'
m += '<b>Abundancia de nubes: </b>' + Abundancia_nubes + '\n'
m += '<b>Hora cálculo datos: </b>' + Hora_datos + '\n'
m += '<b>Código país: </b>' + Codigo_pais + '\n'
m += '<b>Hora amanecer: </b>' + Hora_amanecer + '\n'
m += '<b>Hora atardecer: </b>' + Hora_atardecer + '\n'
m += '<b>Población: </b>' + Poblacion + '\n'
m += '<b>Código población: </b>' + Codigo_poblacion + '\n'


ft.aviso_mensaje_html(m)

Este código llama a la Api de Open Weather Map y devuelve información meteorologica de las coordenadas enviadas.

Y la función que realiza en envío al bot de telegram:

def aviso_mensaje_html(Mensaje):
    r =requests.post('https://api.telegram.org/bot9987543:CCH0rnTYm3dEp3ryCWTMVXXkxcGemycBgxg/sendMessage',
              data={'chat_id': chat_id, 'text': Mensaje, 'parse_mode' : 'HTML'})
    print(r.text)

Para mensajes en HTML, “parse_mode” debe ser “HTML” y “Markdown” para formatos de texto en Markdown.

En la Api de telegram podrás encontrar más información de los formatos y etiquetas soportados actualmente, enlace.

Share

Comments are closed.