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

Empecé a sumergirme en el mundo de TI hace solo tres semanas. En serio, hace tres semanas ni siquiera entendía la sintaxis HTML, y el conocimiento de los lenguajes de programación terminó con un programa de estudios de Pascal de 10 años. Sin embargo, decidí ir a un campamento de TI, para cuyos hijos sería bueno hacer un bot. Supuse que no era tan difícil.

Esto inició un largo viaje, en el que yo:

  • implementó un servidor en la nube con Ubuntu,
  • registrado en GitHub,
  • aprendido la sintaxis básica de JavaScript,
  • leer un montón de artículos en inglés y ruso,
  • finalmente hice un bot
  • finalmente escribi este post.

El resultado final se veía así:

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

Diré de inmediato que este es un artículo para principiantes, solo para comprender cómo hacer cosas elementales desde el principio.

Y también, para programadores avanzados, solo para hacerlos reír un poco.

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

Entendí que valía la pena al menos entender primero la sintaxis del lenguaje. La elección recayó en JavaScript, simplemente porque el siguiente paso para mí era crear una aplicación en ReactNative. comencé con por supuesto en Codecademy y estaba muy entusiasmado. Los primeros 7 días son gratis. Proyectos reales. Recomiendo. La travesía duró unas 25 horas. De hecho, no todo fue útil. Así es como se ve la estructura del curso y el primer bloque en detalle.

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

2. ¿Cómo registrar un bot?

me ayudo mucho al principio este articulo del blog de un tal Archakov. Él mastica desde el principio. Pero lo principal que hay son las instrucciones para registrar el bot. No escribiré mejor, y dado que esta es la parte más fácil, solo escribiré la esencia. Necesitas crear un bot y obtener su API. Esto se hace a través de otro bot: @BotFather. Encuéntrelo en Telegram, escríbale, siga la ruta simple y obtenga (¡guarde!) Clave API (este es un conjunto de números y letras). Más tarde me fue útil.

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

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

Después de un largo estudio de los artículos, me di cuenta de que vale la pena usar algún tipo de biblioteca (código de terceros en formato de módulo) para no sufrir estudiando la API de Telegram y creando grandes piezas de código desde cero. Encontré un marco telégrafo, que necesitaba estar conectado de alguna manera a algo usando npm o yarn. Así entendí entonces en qué consiste el despliegue del bot. Ríete aquí. No me ofenderé. Los ejemplos en la parte inferior de la página me ayudaron más durante la creación posterior del bot:

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

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

Después de mucho buscar, descubrí que el comando 'npm' de la imagen de arriba se refiere a la línea de comando. La línea de comandos está en todas partes, pero para poder ejecutarla, debe instalar NodePackageManager. El problema era que estaba programando en un PixelBook con ChromeOS. Omitiré un gran bloque aquí sobre cómo llegué a conocer Linux; para la mayoría, esto es vacío e innecesario. Si tienes Windows o un MacBook, ya tienes una consola.

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

Sin embargo, en el proceso, me di cuenta de que para que el bot funcione todo el tiempo (y no solo cuando mi computadora está encendida), necesito un servidor en la nube. Elegí vscale.io Tiré 100 rublos, compré el servidor Ubuntu más barato (ver foto).

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

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

Luego de eso, me di cuenta que necesitaba hacer alguna carpeta en el servidor, en la cual pondría el archivo con el texto del código. Para hacer esto, en la consola (ejecutar directamente en el sitio a través del botón "Abrir consola"), conduje

mkdir bot

bot: este se convirtió en el nombre de mi carpeta. Después de eso, instalé npm y Node.js, lo que me permitirá luego ejecutar código desde archivos *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Recomiendo encarecidamente en esta etapa configurar una conexión al servidor a través de su consola. Aquí instrucción Esto le permitirá trabajar con el servidor directamente a través de la consola de su computadora.

5. Cómo codificar el primer bot.

Ahora bien, esto es sólo una revelación para mí. Cualquier programa es solo líneas de texto. Puedes conducirlos a cualquier parte, guardar con la extensión deseada y listo. Eres hermoso. solía Atom, pero en realidad, puedes escribir en un bloc de notas estándar. Lo principal es guardar el archivo más tarde en la extensión deseada. Es como escribir texto en Word y guardarlo.

Creé un nuevo archivo, en el que inserté el código del ejemplo en la página de Telegraf y lo guardé en el archivo index.js (no es necesario nombrar el archivo así, pero se acepta). Importante: en lugar de BOT_TOKEN, inserte su clave API del segundo párrafo.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome!'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()

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

Ahora tenía que cargar de alguna manera este código en el servidor y ejecutarlo. Para mí se convirtió en un desafío. Al final, después de mucho calvario, me di cuenta de que sería más fácil crear un archivo en github que te permita actualizar el código usando un comando en la consola. Registré una cuenta con gitHub y lo hizo nuevo proyectodonde subí el archivo. Después de eso, necesitaba descubrir cómo configurar la carga de archivos desde mi cuenta (¡abierta!) al servidor en la carpeta bot (si de repente lo dejaste, solo escribe cd bot).

7. Cómo subir archivos al servidor a través de github parte 2

Necesitaba poner un programa en el servidor que descargara archivos de git. Instalé git en el servidor escribiendo

apt-get install git

Después de eso, necesitaba configurar la carga de archivos. Para hacer esto, conduje a la línea de comando

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

Como resultado, todo lo relacionado con el proyecto se cargó en el servidor. El error en este punto fue que esencialmente hice una segunda carpeta dentro de la carpeta bot ya existente. La dirección del archivo parecía */bot/bot/index.js

Decidí ignorar este problema.

Y para cargar la biblioteca de Telegraf, que solicitamos en la primera línea de código, escriba el comando en la consola.

npm install telegraf

8. Cómo iniciar el bot

Para hacer esto, mientras está en la carpeta con el archivo (para pasar de una carpeta a otra a través de la consola, ejecute el comando de formato cd bot Para asegurarse de que está donde lo necesita, puede conducir un comando que mostrará en la consola todos los archivos y carpetas que están allí. ls -a

Para empezar, entré 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

Rápidamente te darás cuenta de que el bot solo funciona cuando tú mismo estás sentado en la consola. Para resolver este problema usé el comando

screen

Después de eso, aparecerá una pantalla con algo de texto. Esto significa que todo está bien. Estás en un servidor virtual en un servidor en la nube. Para comprender mejor cómo funciona todo: aqui esta el articulo. Simplemente vaya a su carpeta y escriba 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? Él puede

bot.start((ctx) => ctx.reply('Welcome!'))

decir "¡Bienvenido!" en el momento de inicio (intentar cambiar el texto)

bot.help((ctx) => ctx.reply('Send me a sticker'))

en respuesta al comando estándar /ayuda, envíe el mensaje "Envíeme una pegatina"

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

enviar aprobación en respuesta a una pegatina

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

responder "Hola" si escriben 'hola'
bot.launch()

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

Si miras el código en gitHub, entonces rápidamente te darás cuenta de que no me he alejado mucho de esta funcionalidad. Lo que se usa activamente es la función ctx.replyWithPhoto Le permite enviar una foto o gif dado en respuesta a cierto texto.

Una parte significativa del código fue escrita por niños de 11 a 13 años, a quienes les di acceso al bot. Entraron en sus casos de usuario. Creo que es fácil decir qué parte fue hecha por ellos.

Por ejemplo, un GIF con un personaje famoso de los dibujos animados de Adventure Time viene con el mensaje "jake".

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

Para desarrollar aún más el bot, debe conectar el teclado, ver ejemplos, por ejemplo, por lo tanto

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

No olvide que debe actualizar el código no solo en github, sino también en el servidor. Es fácil hacer esto: detenga el bot (presione ctrl + c),

- entrar en la consola, estando en la carpeta de destino, git pull
- reiniciar el bot con el comando node index.js

FIN

Muchas de las cosas descritas en este archivo serán muy obvias para los programadores avanzados. Sin embargo, cuando yo mismo traté de saltar sobre el abismo al mundo de los bots de un solo golpe, realmente extrañé esa guía. Una guía en la que no se pierden cosas obvias y sencillas para cualquier especialista en TI.

En el futuro, planeo una publicación sobre cómo hacer mi primera aplicación en ReactNative con el mismo estilo, ¡suscríbete!

Fuente: habr.com

Añadir un comentario