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í:
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
2. ¿Cómo registrar un bot?
me ayudo mucho al principio
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
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í
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í
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
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
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:
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()
Si miras el código en 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".
Para desarrollar aún más el bot, debe conectar el teclado, ver ejemplos, por ejemplo,
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