tutorial python

Crear bot con telegram y python – parte 1

Vamos a divertirnos un rato y vamos a crear un bot con telegram y python usando una raspberry pi como máquina principal o servidor.

Aconsejo leer las entradas anteriores sobre python.

¿Listos? ahora esta entrada 🤓

Ya conocemos lo básico, que es fatbot, como consumir una url en python y que es bot!.

Antes de programar

Vamos a ir a botfather (@BotFather) y vamos a crear un bot, recuerden su bot debe terminar con bot o _bot, vamos a copiar el token y guardarlo.

Preparar nuestro entorno :

VS CODE

Instalar plugin de python

instalar python (el primera opción)

Raspberry y PC

Instalar esto por el momento

  • sudo apt-get install python-pip – cosas de python
  • apt-get update – actualizar repo
  • apt-get upgrade – actualización sistema
  • pip install requests

Entendiendo nuestro bot de telegram

De este momento en adelante nuestra biblia de consulta es la página oficial de telegram

para ver todo esta bien vamos a hacer una llamada a la siguiente url:

https://api.telegram.org/bot<token>/getMe
ejemplo: 
https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe

vamos a recibir algo asi

{
    "ok": true,
    "result": {
        "id": 010292438495,
        "is_bot": true,
        "first_name": "primerbot",
        "username": "primerbot_bot",
        "can_join_groups": true,
        "can_read_all_group_messages": false,
        "supports_inline_queries": false
    }
}

nuestro token siempre irá en la url, lo que cambiaremos serán las rutas y los tipos de llamadas.

Entendiendo la api rest para crear un bot con telegram

Como vamos viendo poco a poco, nuestro bot con telegram se trata sobre llamadas de api rest, telegram nos da unas llamadas que hace ciertas tareas, por ejemplo tenemos una ruta para recibir información de actualización.

Tenemos Api para enviar texto, imágenes, videos, animación, etc. cada llamada tiene su propia estructura ya sea para llamar o para recibir nuestra respuesta.

Una parte complicada es entender que cada llamada disponible tiene una respuesta distinta y esto es útil para cuando consumimos nuestra api rest saber que vamos a buscar en ese objeto que nos trae.

Objetos disponibles

Lo sé parece muy difícil pero es para tener en cuenta que nos espera, es más fácil cuando ya lo estamos usando.

Api disponibles para nuestro bot con telegram

Actualización de nuestro bot con telegram

https://api.telegram.org/bot<token>/getUpdates

con esta llamada vamos a recibir si alguien llamo a nuestro bot o que comando llamaron.

Enviar mensajes

para usar esta llamada necesitas de manera obligada chat_id y text

https://api.telegram.org/bot<token>/sendMessage
{
	"chat_id":225514999,
	"text":"prueba"

}

por ejemplo podemos poner mas parámetros para esto vemos los requerimientos

chat_idInteger or StringYesUnique identifier for the target chat or username of the target channel (in the format @channelusername)
textStringYesText of the message to be sent, 1-4096 characters after entities parsing
parse_modeStringOptionalMode for parsing entities in the message text. See formatting options for more details.
disable_web_page_previewBooleanOptionalDisables link previews for links in this message
disable_notificationBooleanOptionalSends the message silently. Users will receive a notification with no sound.
reply_to_message_idIntegerOptionalIf the message is a reply, ID of the original message
reply_markupInlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReplyOptionalAdditional interface options. A JSON-serialized object for an inline keyboardcustom reply keyboard, instructions to remove reply keyboard or to force a reply from the user.

Vamos a poner el siguiente body

{
	"chat_id":255219699,
	"text":"*bold text*
_italic text_
[inline URL](https://unprogramador.com/)
[inline mention of a user](tg://user?id=123456789)
`inline fixed-width code`
```esto es solamente una prueba
```",
	"disable_notification": "false",
	"reply_to_message_id": 1734993,
	"parse_mode": "Markdown"

}

Enviar una imagen

Chat_id y photos son obligatorio para esta llamada, nuestro archivo sera un multipart y un máximo de 20 mb.

https://api.telegram.org/bot<token>/sendPhoto?chat_id=<chat_id>

Así para cada llamada, vamos a la páginas de telegram, vemos que metodo queremos usar, y ponemos en el cuerpo los parámetros que nos indica la api.

En este ejemplo seleccionamos el método sendVoice, el cual como mandamos un input podemos pasar el parámetros por get para que no nos compliquemos la vida, en otros casos donde no hay un input, podemos usar el ejemplo de la imagen.

Así vamos a construir cualquier llamada api rest de forma sencilla.

Ahora ya entendiendo como funciona telegram podemos comenzar a crear nuestro propio bot

El siguiente tutorial vamos a crear un bot con telegram que nos mande una foto.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.