Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

Comencé a sumergirme en el mundo de IT hace solo tres semanas. En serio, hace tres semanas ni siquiera entendía la sintaxis de HTML, y mi conocimiento de lenguajes de programación se limitaba a un curso de Pascal de hace diez años. Sin embargo, decidí ir a un campamento de IT, donde sería genial que los niños tuviesen un bot. Pensé que no debería ser tan complicado.

A partir de aquí comenzó un largo camino, en el que yo:

  • desplegué un servidor en la nube con Ubuntu,
  • me registré en GitHub,
  • aprendí la sintaxis básica de JavaScript,
  • leí una tonelada de artículos en inglés y ruso,
  • finalmente hice el bot,
  • y escribí este artículo, por fin.

Así es como se veía el resultado final:

Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

Digo de inmediato, este artículo es para principiantes — para entender cómo hacer cosas elementales desde el punto más básico.

Y también — para programadores avanzados — solo para sacarles una sonrisa.

1. ¿Cómo escribir código en JS?

Entendía que primero debía familiarizarme con la sintaxis del lenguaje. Elegí JavaScript, simplemente porque el siguiente paso para mí era crear una aplicación en ReactNative. Comencé con un curso en Codecademy y quedé muy impresionado. Los primeros 7 días son gratuitos. Proyectos reales. Lo recomiendo. Me tomó alrededor de 25 horas completarlo. En realidad, no todo de él me fue útil. Así es como se ve la estructura del curso y en detalle el primer bloque.

Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

2. ¿Cómo registrar un bot?

Al principio, me ayudó mucho este artículo del blog de un tal Archakov. Él explica lo más básico. Pero lo principal que hay allí es la guía para registrar un bot. No puedo escribirlo mejor, y dado que esta es la parte más fácil, simplemente escribiré la esencia. Necesitas crear un bot y obtener su API. Esto se hace a través de otro bot — @BotFather. Encuéntralo en Telegram, escríbale, sigue el sencillo proceso y obtén (¡guarda!) la clave API (que es un conjunto de números y letras). Me fue útil más tarde.

Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

3. ¿Cómo es el código del bot?

Después de una larga búsqueda de artículos, entendí que debía usar alguna biblioteca (código de terceros en formato de módulo), para no lidiar con el aprendizaje de la API de Telegram y la creación desde cero de grandes bloques de código. Encontré el marco telegraf, que necesitaba conectarse a algo mediante npm o yarn. Así entendía yo entonces en qué consistía el despliegue de un bot. Ríete aquí. No me ofenderé. Lo que más me ayudó al crear el bot posteriormente fueron los ejemplos indicados al final de la página:

Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

3. Cómo crear tu propio servidor en la nube por 100 rublos

Después de largas búsquedas, entendí que el comando ‘npm’ de la imagen de arriba se refiere a la línea de comandos. La línea de comandos está en todas partes, pero para poder ejecutarla, necesitas instalar NodePackageManager. El problema era que programaba en un PixelBook con ChromeOS. Pasaré por alto aquí un gran bloque sobre cómo aprendí Linux, ya que para la mayoría esto es innecesario. Si tienes Windows o MacBook, ya tienes consola.

En pocas palabras, instalé Linux a través de Crostini.

Sin embargo, durante el proceso comprendí que para que el bot funcione de manera continua (y no solo cuando tengo mi computadora encendida), necesito un servidor en la nube. Elegí vscale.io Depositè 100 rublos y compré el servidor Ubuntu más barato (ver imagen).

Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

4. Cómo preparar el servidor para ejecutar el bot

Después de esto, entendí que necesitaba crear una carpeta en el servidor donde colocaría el archivo con el código. Para ello, en la consola (puedes ejecutarlo directamente en el sitio a través del botón ‘Abrir consola’), escribí

mkdir bot

bot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Te recomiendo encarecidamente que en esta etapa configures la conexión con el servidor a través de tu consola. Aquí está las instrucciones Esto permitirá trabajar con el servidor directamente desde la consola de tu computadora.

5. Cómo escribir el código del primer bot.

Y ahora una revelación para mí. Cualquier programa son simplemente líneas de texto. Puedes escribirlas en cualquier lugar, guardarlas con la extensión adecuada y ya está. Eres increíble. Usé Atom, pero la verdad es que se puede escribir simplemente en el bloc de notas estándar. Lo único importante es guardar el archivo con la extensión correcta. Es como escribir un texto en Word y guardarlo.

Creé un nuevo archivo y pegué el código del ejemplo de la página telegraf, guardándolo en un archivo index.js (no es necesario llamarlo así, pero es lo habitual). Importante: en lugar de BOT_TOKEN, inserta tu clave API del segundo punto.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('¡Bienvenido!'))
bot.help((ctx) => ctx.reply('Envíame un sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('¡Hola!'))
bot.launch()

6. Cómo subir el código al servidor a través de github

Ahora necesitaba subir este código al servidor y ejecutarlo. Para mí se convirtió en un desafío. Al final, después de muchas dificultades, entendí que sería más fácil crear un archivo en github que permitiera actualizar el código mediante un comando en la consola. Registré una cuenta en github y creé un nuevo proyecto, donde subí el archivo. Después de eso, necesitaba entender cómo configurarlo para cargar archivos desde mi cuenta (¡abierta!) al servidor en la carpeta bot (si por casualidad saliste de ella, simplemente escribe cd bot).

7. Cómo cargar archivos en el servidor a través de github parte 2

Necesitaba instalar en el servidor un programa que descargara archivos desde git. Instalé git en el servidor, escribiendo en la consola

apt-get install git

Después de eso, necesitaba configurar la carga de archivos. Para ello escribí en la línea de comandos

git clone git://github.com/b0tank/bot.git bot

В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js

Decidí ignorar este problema.

Y para cargar la biblioteca telegraf, que solicitamos en la primera línea del código, escribe en la consola el comando.

npm install telegraf

8. Cómo iniciar el bot

Para esto, estando en la carpeta con el archivo (para cambiar de carpeta a carpeta a través de la consola, ejecuta el comando del formato cd bot Para asegurarte de que estás en el lugar correcto, puedes escribir un comando que muestre en la consola todos los archivos y carpetas que están allí ls -a

Para iniciar, escribí en la consola

node index.js

Si no hay ningún error, todo está bien, el bot está funcionando. Búscalo en telegram. Si hay un error, aplica tus conocimientos del punto 1.

9. Cómo ejecutar el bot en segundo plano

Pronto entenderás que el bot solo funciona cuando tú estás en la consola. Para resolver este problema usé el comando

screen

Después de esto, aparecerá una pantalla con algún texto. Eso significa que todo está bien. Estás en un servidor virtual en la nube. Para entender mejor cómo funciona todo esto — aquí hay un artículo. Simplemente accede a tu carpeta y escribe el comando para iniciar el bot.

node index.js

10. Cómo funciona el bot y cómo ampliar su funcionalidad

¿Qué puede hacer nuestro bot del ejemplo? Puede

bot.start((ctx) => ctx.reply('¡Bienvenido!'))

decir "¡Bienvenido!" al iniciar (intenta cambiar el texto)

bot.help((ctx) => ctx.reply('Envíame un sticker'))

en respuesta al comando estándar /help enviar el mensaje "Envíame un sticker"

bot.on('sticker', (ctx) => ctx.reply(''))

en respuesta a un sticker enviar una aprobación

bot.hears('hi', (ctx) => ctx.reply('¡Hola!'))

responder "¡Hola!" si le escriben 'hi'
bot.launch()

Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

Si miras el código en github, rápidamente entenderás que no me he desviado mucho de esta funcionalidad. Lo que se utiliza activamente es la función ctx.replyWithPhoto Permite enviar una foto o gif específico en respuesta a un texto determinado.

Una parte significativa del código fue escrita por niños de 11 a 13 años, a quienes les di acceso al bot. Ellos introdujeron sus propias user-case. Creo que es fácil determinar qué parte fue hecha por ellos.

Por ejemplo, al mensaje 'jake' se envía un gif de un famoso personaje de la serie Adventure Time.

Guía: cómo hacer un bot simple para Telegram en JS para principiantes en programación

Para desarrollar el bot más allá, necesitas conectar un teclado; puedes ver ejemplos, por ejemplo, desde aquí

11. Cómo actualizar el código y reiniciar el bot

No olvides que debes actualizar el código no solo en github, sino también en el servidor. Es simple: detén el bot (presiona ctrl+c),

— introduce en la consola, estando en la carpeta objetivo, git pull
— nuevamente inicia el bot con el comando node index.js

FIN

Muchas de las cosas descritas en este archivo serán súper obvias para programadores avanzados. Sin embargo, cuando yo mismo intenté saltar de un salto al mundo de los bots, me faltaba mucho una guía así. Una guía que no pase por alto cosas obvias y simples para cualquier especialista en IT.

En el futuro, planeo hacer un post sobre cómo crear tu primera aplicación en ReactNative en el mismo estilo, ¡suscríbete!

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster