Telegram – Programando un bot (En Python)
Programando un bot de Telegram con Python. ¿Qué podría salir mal?
¡Buenas!, hoy vengo a traer la noticia que Telegram ha añadido el sistema de bots, cuya API se comunica con los servidores de Telegram vía el protocolo HTTP y transmiten los paquetes en formato JSON, a partir de eso, la comunidad ha generado una API para Python que es Telebot (Existen mas alternativas en mas lenguajes, pero creo que esta es la mas completa a día de hoy).
Su instalación es bien sencilla.
Utilizando PIP:
pip install pyTelegramBotAPI
Desde el repositorio:
git clone https://github.com/eternnoir/pyTelegramBotAPI.git
cd pyTelegramBotAPI
python setup.py install
A partir de que se haya instalado la API, empezaremos a trabajar con ella:
import telebot # Importamos las librería
TOKEN = '<token string>' # Ponemos nuestro Token generado con el @BotFather
tb = telebot.TeleBot(TOKEN) # Combinamos la declaración del Token con la función de la API
Las funciones que nos podemos encontrar en esta API son varias:
- Enviar un simple mensaje:
tb.send_message(chatid, text) # Ejemplo tb.send_message('109556849', 'Hola mundo!')
- Enviar una simple foto:
photo = open('/home/lordsergio/Gatito_Feliz.jpg', 'rb')
tb.send_photo(chat_id, photo)
- Enviar un documento PDF:
doc = open('/home/lordsergio/Documentos/deberes_de_verano.pdf', 'rb')
# Es la función equivalente a enviar un archivo desde telegram.
tb.send_document(chat_id, doc)
tb.send_message(109556849, 'Disfruta de tu verano ;)')
- Enviar un vídeo:
video = open('/home/lordsergio/Vídeos/Reportaje_sobre_UNIX.mp4', 'rb')
tb.send_video(chat_id, video)
- Enviar un audio:
audio = open('/home/lordsergio/Música/Audios/1.ogg', 'rb')
tb.send_audio(chat_id, audio)
# No tengo muy claro si lo enviá como una nota de audio o como cuando enviar una canción desde Telegram :(
- Enviar un Sticker:
sti = open('/tmp/sti.webp', 'rb') tb.send_sticker(chat_id, sti)
- Enviar una Localización:
tb.send_location(chat_id, latitud, longitud)
- Reenviar un mensaje (Cualquier tipo de mensaje):
tb.forward_message(to_chat_id, from_chat_id, message_id)
- Enviar acciones de chat:
tb.send_chat_action(chat_id, action_string)
# Están disponibles todas estas acciones
# typing, upload_photo, record_video, upload_video, record_audio, upload_audio, upload_document, find_location (Me gustaría que existiera una acción de "Durmiendo...", estaría gracioso :D).
- Obtener Actualizaciones:
tb.get_update()
- Crear un teclado de acciones:
from telebot import types
markup = types.ReplyKeyboardMarkup()
markup.add('a', 'v', 'd')
tb.send_message(chat_id, message, None, None, markup) # or use row method
markup = types.ReplyKeyboardMarkup()
markup.row('a', 'v')
markup.row('c', 'd', 'e')
tb.send_message(chat_id, message, None, None, markup)
- Probar si funciona la API:
tb.get_me()
Las características de los Bots (cosa a tener muy en cuenta), es que tienen un espacio limitado en la nube y no cómo en las cuentas normales. Salvo que no este ajustado desde el comando de privacidad. Si añades a tu Bot a un grupo, no recibirá los mensajes ni tampoco podrán iniciar una conversación mediante el nombre de usuario.
Por lo que me he podido pelear con esta API, descubrí que el primer mensaje es clave para que el Bot pueda enviar mensajes mas tarde, recomendación, iniciar una conversación con el Bot.
Me parece curiosa esta API, por el simple hecho de que puedes crear una IA (o usar proyectos existentes de IA) mas o menos inteligente. Estaría bien que algún lector crease una IA potente con esta API.
La información la he obtenido de la propia API que han creado los desarrolladores que están contribuyendo en el desarrollo el y mantenimiento de la API.