
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.