Buenas a tod@s, hoy os voy a enseñar como crear un pequeño bot para utilizarlo con Telegram.
Un bot es un usuario más dentro de un chat, pero que responde solo. Es decir, es un pequeño robot qué tiene imagen de usuario, nombre y capacidad de responder un mensaje o escribir mensajes automáticos según la pregunta qué se le haga.
En este ejemplo, vamos a crear un pequeño bot que responda a todo lo que se le escriba, además servirá de ejemplo para que podáis desarrollar vuestros propios bot utilizandolo de base.
Antes de nada, hay que registrar al bot utilizando BotFather, un bot que ha creado Telegram para poder registrar nuestros nuevos bots.
Para utilizarlo pulsamos en https://t.me/botfather
Para crear nuestro bot escribimos /newbot en el chat:
/newbot > Alright, a new bot. How are we going to call it? Please choose a name for your bot.
Ahora tenemos que introducir el nombre del bot, es importante saber que el nombre tiene que ser nombre_bot:
nombre_bot > Done! Congratulations on your new bot. You will find it at t.me/nombre_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this. Use this token to access the HTTP API: 543759345:AHsjdfUUdfsi2kjksaKKKdmmmsddd Keep your token secure and store it safely, it can be used by anyone to control your bot. For a description of the Bot API, see this page: https://core.telegram.org/bots/api
Una vez creado, BotFather nos envía el token de acceso de nuestro bot
543759345:AHsjdfUUdfsi2kjksaKKKdmmmsddd
Este token tendremos que añadirlo más adelante en nuestro código para poder utilizar nuestro bot totalmente registrado en Telegram.
Vamos a programar este bot utilizando Python.
Comenzamos instalando Python 3
sudo apt install python3.8
En mi caso instalo python3.8, podéis instalar la versión de Python que prefiráis y sea compatible con telebot (https://pypi.org/project/pyTelegramBotAPI/)
Ahora instalamos pip para poder instalar las librerías necesarias.
sudo apt install python3-pip
Y ahora instalamos la librería Telebot (versión de
Y ahora instalamos la librería Telebot (versión de pytelegrambotapi).
pip install pytelegrambotapi
Una vez instalado, ya tenemos el entorno listo.
Ahora abrimos nuestro editor de código favorito, puede ser VisualStudio Code, notepad++…
Creamos un archivo llamado bot.py y añadimos lo siguiente.
# -*- coding: utf-8 -*- # Importamos telebot import telebot # Añadimos el token que nos ha dado botfather token_bot = 543759345:AHsjdfUUdfsi2kjksaKKKdmmmsddd # Inicializamos al bot registrandolo con el token bot = telebot.TeleBot(token_bot)
Con este código registramos al bot para comunicarnos con Telegram
Y ahora vamos a hacer la magia.
# -*- coding: utf-8 -*- # Importamos telebot import telebot # Añadimos el token que nos ha dado botfather token_bot = 543759345:AHsjdfUUdfsi2kjksaKKKdmmmsddd # Inicializamos al bot registrandolo con el token bot = telebot.TeleBot(token_bot) # Creamos una función dónde vamos a recibir todos los mensajes del chat en el que esté incluido el bot # Pasamos mensajes (es una lista de mensajes) def recibir_mensajes(mensajes): # Recorremos la lista de mensajes: for mensaje in mensajes: # Ejemplo para imprimir el mensaje que llega print('El mensaje es ', mensaje.json['text']) # Obtiene id del chat para poder responder con el bot id_chat = mensaje.chat.id # Respondemos un texto usando el bot bot.send_message(id_chat, "Te respondo y soy un Bot") # Registramos la función dónde vamos a recibir los mensajes del chat bot.set_update_listener(recibir_mensajes) # Decimos que el bot no finalice bot.polling(none_stop=True)
Hemos creado la función recibir mensajes, tal como indico en los comentarios, esta función recorre todos los mensajes que se escriben dentro de un chat o canal y el bot responde automáticamente.
Para responder, utiliza la función de send_message, pasandole el id_chat y el texto String que queramos responder con el Bot.
Luego registramos la función dónde Telegram enviará los mensajes usando el set_update_listener
Para que os hagáis una idea, un mensaje de Telegram es un JSON con la siguiente estructura:
{ 'content_type': 'text', 'id': 85, 'message_id': 85, 'from_user': { 'id': 3124454, 'is_bot': False, 'first_name': 'Nombre usuario', 'username': 'user_name_telegram', 'last_name': None, 'language_code': None, 'can_join_groups': None, 'can_read_all_group_messages': None, 'supports_inline_queries': None }, 'date': 1652017138, 'chat': { 'id': -993482, 'type': 'group', 'title': 'Test', 'username': None, 'first_name': None, 'last_name': None, 'photo': None, 'bio': None, 'has_private_forwards': None, 'description': None, 'invite_link': None, 'pinned_message': None, 'permissions': None, 'slow_mode_delay': None, 'message_auto_delete_time': None, 'has_protected_content': None, 'sticker_set_name': None, 'can_set_sticker_set': None, 'linked_chat_id': None, 'location': None }, 'sender_chat': None, 'forward_from': None, 'forward_from_chat': None, 'forward_from_message_id': None, 'forward_signature': None, 'forward_sender_name': None, 'forward_date': None, 'is_automatic_forward': None, 'reply_to_message': None, 'via_bot': None, 'edit_date': None, 'has_protected_content': None, 'media_group_id': None, 'author_signature': None, 'text': 'ef', 'entities': None, 'caption_entities': None, 'audio': None, 'document': None, 'photo': None, 'sticker': None, 'video': None, 'video_note': None, 'voice': None, 'caption': None, 'contact': None, 'location': None, 'venue': None, 'animation': None, 'dice': None, 'new_chat_member': None, 'new_chat_members': None, 'left_chat_member': None, 'new_chat_title': None, 'new_chat_photo': None, 'delete_chat_photo': None, 'group_chat_created': None, 'supergroup_chat_created': None, 'channel_chat_created': None, 'migrate_to_chat_id': None, 'migrate_from_chat_id': None, 'pinned_message': None, 'invoice': None, 'successful_payment': None, 'connected_website': None, 'reply_markup': None, 'json': { 'message_id': 85, 'from': { 'id': 3124454, 'is_bot': False, 'first_name': 'Nombre_usuario', 'username': 'user_name_telegram' }, 'chat': { 'id': -993482, 'title': 'Test', 'type': 'group', 'all_members_are_administrators': True }, 'date': 1652017138, 'text': 'Texto enviado por el chat con el usuario user_name_telegram' } }
Viendo esta estructura podemos elegir qué campos utilizar para responder con nuestro Bot, por ejemplo podríamos utilizar algún campo para saber si el usuario termina de entrar en el chat.
Finalmente, para ejecutar nuestro código ponemos en la consola.
python3 bot.py
Y el bot quedará a la espera de recibir un mensaje.
Para que funcione en un chat o grupo, tendremos que buscar al bot indicando el nombre que hemos registrado con BotFather (en el ejemplo es @nombre_bot) y añadirlo al grupo.
Para que el bot tenga permisos de leer los mensajes hay que darle permisos de administrador.
Y con estos pasos hemos creado un bot para Telegram.
Si quieres ver cómo añadir comandos a este Bot, puedes visitar Añadir comandos a un bot de Telegram (Python)
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.
5 comentarios en «Cómo hacer un bot para Telegram (Python)»