Sobre Habré, y no solo eso, se ha dicho tanto sobre los bots que es incluso demasiado. Pero después de haberme interesado en este tema hace un par de semanas, todavía no pude encontrar material normal: todos los artículos eran para tontos y estaban limitados a enviar un mensaje en respuesta a un mensaje de usuario, o eran irrelevantes. Esto me llevó a escribir un artículo que explicaría a un novato como yo cómo escribir y lanzar un bot más o menos significativo (con la posibilidad de ampliar la funcionalidad).
Parte 1: registrar un bot
La parte más simple y más descrita. Muy brevemente: necesita encontrar el bot
@BotFather , escribirle
/ start o
/ newbot , completar los campos que solicita (nombre del bot y nombre corto) y obtener un mensaje con el token del bot y un enlace a la documentación. El token debe guardarse, preferiblemente confiable, ya que esta es la única clave para autorizar el bot e interactuar con él.
Parte 2: preparación para escribir código
Como ya se mencionó en el título, escribiremos el bot en Python. Este artículo describirá cómo trabajar con la biblioteca PyTelegramBotAPI (Telebot). Si no tiene Python instalado, primero debe hacer esto: en el terminal de Linux, debe ingresar
sudo apt-get install python python-pip
Si usa Windows, entonces necesita descargar Python desde el sitio oficial.
Luego, en el terminal de Linux o en el símbolo del sistema de Windows, ingrese
pip install pytelegrambotapi
Ahora estás listo para escribir el código.
Parte 3: Recibe mensajes y di "Hola"
Una pequeña digresión. Un telegrama puede informar al bot sobre las acciones del usuario de dos maneras: a través de una respuesta a una solicitud del servidor (Long Poll), y a través de Webhook, cuando el servidor de Telegram envía un mensaje de que alguien escribió al bot. El segundo método claramente se ve mejor, pero requiere una dirección IP dedicada, y SSL está instalado en el servidor. En este artículo quiero hablar sobre escribir un bot, no configurar un servidor, por lo que utilizaremos Long Poll.¡Abre tu editor de texto favorito y escribamos el código bot!
Lo primero que debe hacer es importar nuestra biblioteca y conectar el token bot:
import telebot; bot = telebot.TeleBot('% %');
Ahora declare un método para recibir mensajes de texto:
@bot.message_handler(content_types=['text']) def get_text_messages(message):
En esta sección de código, declaramos un escucha para mensajes de texto y un método para procesarlos. El campo content_types puede tomar diferentes valores, y no solo uno, por ejemplo
@bot.message_handler(content_types=['text', 'document', 'audio'])
Responderá a mensajes de texto, documentos y audio. Se pueden encontrar más detalles en la
documentación oficial.Ahora agreguemos un poco de funcionalidad a nuestro método: si el usuario nos escribe "Hola", entonces diremos "Hola, ¿en qué puedo ayudarlo?", Y si nos escriben el comando "/ help", le diremos al usuario que escriba "Hola":
if message.text == "": bot.send_message(message.from_user.id, ", ?") elif message.text == "/help": bot.send_message(message.from_user.id, " ") else: bot.send_message(message.from_user.id, " . /help.")
Este código no requiere comentarios, como me parece. Ahora necesitamos agregar solo una línea a nuestro código (fuera de todos los métodos).
bot.polling(none_stop=True, interval=0)
Ahora nuestro bot le preguntará constantemente al servidor de Telegram "¿Alguien me escribió?" Y si escribimos a nuestro bot, Telegram le enviará nuestro mensaje. Guardamos todo el archivo y escribimos en la consola.
python bot.py
Donde bot.py es el nombre de nuestro archivo.
Ahora puedes escribir un bot y mirar el resultado:
Parte 4: Botones e hilos de mensajes
El envío de mensajes es indudablemente divertido, pero es aún más divertido tener un diálogo con el usuario: hágale preguntas y obtenga respuestas. Supongamos ahora que nuestro bot le preguntará al usuario su nombre, apellido y edad. Para esto usaremos el método register_next_step_handler del bot:
name = ''; surname = ''; age = 0; @bot.message_handler(content_types=['text']) def start(message): if message.text == '/reg': bot.send_message(message.from_user.id, " ?"); bot.register_next_step_handler(message, get_name);
Y así, registramos los datos del usuario. Este ejemplo muestra un ejemplo muy simplificado, para bien, necesita almacenar datos intermedios y estados de usuario en la base de datos, pero hoy estamos trabajando con un bot y no con bases de datos. El toque final: ¡pedimos a los usuarios que confirmen que todo se ingresó correctamente, pero no solo así, sino con botones! Para hacer esto, edite un poco el código del método get_age
def get_age(message): global age; while age == 0:
Y ahora nuestro bot envía el teclado, pero si haces clic en él, no pasará nada. Porque no escribimos un método de controlador. Escribamos
@bot.callback_query_handler(func=lambda call: True) def callback_worker(call): if call.data == "yes": #call.data callback_data, .... # , bot.send_message(call.message.chat.id, ' : )'); elif call.data == "no": ... #
Solo queda agregar una línea al comienzo del archivo:
from telebot import types
Eso es todo, guarda y ejecuta nuestro bot: