Vaig començar a submergir-me al món informàtic fa només tres setmanes. De debò, fa tres setmanes ni tan sols entenia la sintaxi HTML, i el coneixement dels llenguatges de programació va acabar amb un temari de Pascal de 10 anys. Tanmateix, vaig decidir anar a un campament informàtic, per als fills del qual estaria bé fer un bot. Vaig pensar que no era tan difícil.
Això va començar un llarg viatge, en el qual vaig:
- va desplegar un servidor en núvol amb Ubuntu,
- registrat a GitHub,
- aprendre la sintaxi bàsica de JavaScript,
- llegir un munt d'articles en anglès i rus,
- finalment va fer un bot
- finalment va escriure aquest post.
El resultat final va quedar així:
De seguida diré que aquest és un article per a principiants, només per entendre com fer coses elementals des del principi.
I també -per a programadors avançats- només per fer-los riure una mica.
1. Com escriure codi en JS?
Vaig entendre que valia la pena almenys entendre primer la sintaxi de la llengua. L'elecció va recaure en JavaScript, simplement perquè el següent pas per a mi va ser crear una aplicació a ReactNative. Vaig començar amb
2. Com registrar un bot?
Em va ajudar molt al principi
3. Com és el codi del bot?
Després d'un llarg estudi dels articles, em vaig adonar que val la pena utilitzar algun tipus de biblioteca (codi de tercers en format mòdul) per no patir d'estudiar l'API de telegram i crear grans peces de codi des de zero. Vaig trobar un marc
3. Com crear el vostre propi servidor al núvol per 100 rubles
Després de moltes cerques, vaig descobrir que l'ordre "npm" de la imatge de dalt es refereix a la línia d'ordres. La línia d'ordres és a tot arreu, però per poder executar-la, cal instal·lar el NodePackageManager. El problema era que estava programant en un PixelBook amb ChromeOS. Em saltaré un gran bloc aquí sobre com vaig conèixer Linux; per a la majoria, això és buit i innecessari. Si teniu Windows o un MacBook, ja teniu una consola.
En poques paraules, vaig instal·lar Linux mitjançant Crostini.
Tanmateix, en el procés, em vaig adonar que perquè el bot funcioni tot el temps (i no només quan el meu ordinador està encès), necessito un servidor al núvol. Vaig triar
4. Com preparar el servidor per executar el bot
Després d'això, em vaig adonar que necessitava fer alguna carpeta al servidor, en la qual posaria el fitxer amb el text del codi. Per fer-ho, a la consola (executa directament al lloc mitjançant el botó "Obrir la consola"), vaig conduir
mkdir bot
bot - aquest es va convertir en el nom de la meva carpeta. Després d'això, vaig instal·lar npm i Node.js, que em permetran executar codi des dels fitxers *.js.
sudo apt update
sudo apt install nodejs
sudo apt install npm
En aquesta fase, us recomano molt que configureu una connexió al servidor mitjançant la vostra consola. Aquí
5. Com codificar el primer bot.
Ara això és només una revelació per a mi. Qualsevol programa és només línies de text. Podeu conduir-los a qualsevol lloc, desar-los amb l'extensió desitjada i ja està. Ets preciosa. jo solia
Vaig fer un fitxer nou, en el qual vaig inserir el codi de l'exemple de la pàgina de telegraf i el vaig desar al fitxer index.js (no cal posar el nom del fitxer així, però s'accepta). Important: en lloc de BOT_TOKEN, inseriu la vostra clau API del segon paràgraf.
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. Com enviar el codi al servidor mitjançant github
Ara havia de pujar d'alguna manera aquest codi al servidor i executar-lo. Per a mi es va convertir en un repte. Al final, després de moltes proves, em vaig adonar que seria més fàcil crear un fitxer a github que us permeti actualitzar el codi mitjançant una ordre a la consola. Vaig registrar un compte amb
7. Com pujar fitxers al servidor mitjançant github part 2
Necessitava posar un programa al servidor que descarregués fitxers de git. Vaig instal·lar git al servidor escrivint
apt-get install git
Després d'això, havia de configurar la càrrega de fitxers. Per fer-ho, vaig entrar a la línia d'ordres
git clone git://github.com/b0tank/bot.git bot
Com a resultat, tot el projecte es va penjar al servidor. L'error en aquest punt va ser que bàsicament vaig fer una segona carpeta dins de la carpeta del bot ja existent. L'adreça del fitxer semblava */bot/bot/index.js
Vaig decidir ignorar aquest problema.
I per carregar la biblioteca de telegraf, que demanem a la primera línia de codi, escriviu l'ordre a la consola.
npm install telegraf
8. Com iniciar el bot
Per fer-ho, mentre esteu a la carpeta amb el fitxer (per passar d'una carpeta a una altra a través de la consola, executeu l'ordre format cd bot
Per assegurar-vos que sou on necessiteu, podeu conduir en una ordre que mostrarà a la consola tots els fitxers i carpetes que hi ha. ls -a
Per començar, vaig entrar a la consola
node index.js
Si no hi ha cap error, tot està bé, el bot funciona. Busqueu-lo al telegrama. Si hi ha un error, apliqueu els vostres coneixements del punt 1.
9. Com executar el bot en segon pla
Ràpidament us adonareu que el bot només funciona quan esteu assegut a la consola. Per resoldre aquest problema he utilitzat l'ordre
screen
Després d'això, apareixerà una pantalla amb una mica de text. Això vol dir que tot està bé. Esteu en un servidor virtual en un servidor en núvol. Per entendre millor com funciona tot -
node index.js
10. Com funciona el bot i com ampliar la seva funcionalitat
Què pot fer el nostre bot de l'exemple? Ell pot
bot.start((ctx) => ctx.reply('Welcome!'))
digues "Benvingut!" en el moment de començar (intenta canviar el text)
bot.help((ctx) => ctx.reply('Send me a sticker'))
en resposta a l'ordre estàndard /help, envieu el missatge "Envia'm un adhesiu"
bot.on('sticker', (ctx) => ctx.reply(''))
enviar l'aprovació en resposta a un adhesiu
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
respon "Hola" si escriuen "hola"
bot.launch()
Si mireu el codi a ctx.replyWithPhoto
Us permet enviar una foto o un gif determinats en resposta a un text determinat.
Una part important del codi va ser escrit per nens d'entre 11 i 13 anys, als quals vaig donar accés al bot. Van introduir els seus casos d'usuari. Crec que és fàcil saber quina part van fer ells.
Per exemple, un GIF amb un personatge famós de la caricatura de Adventure Time arriba al missatge "jake".
Per desenvolupar encara més el bot, heu de connectar el teclat, vegeu exemples, per exemple,
11. Com actualitzar el codi i reiniciar el bot
No oblideu que heu d'actualitzar el codi no només a github, sinó també al servidor. És fàcil fer-ho: atureu el bot (premeu ctrl + c),
- entrar a la consola, sent a la carpeta de destinació, git pull
- reinicieu el bot amb l'ordre node index.js
FI
Moltes de les coses descrites en aquest fitxer seran molt òbvies per als programadors avançats. Tanmateix, quan jo mateix vaig intentar saltar l'abisme al món dels robots d'un sol cop, vaig trobar a faltar una guia així. Una guia que no perd coses òbvies i senzilles per a qualsevol informàtic.
En el futur, planejaré una publicació sobre com fer la meva primera aplicació a ReactNative amb el mateix estil, subscriu-te!
Font: www.habr.com