Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

Mi komencis plonĝi en la IT-mondon antaŭ nur tri semajnoj. Serioze, antaŭ tri semajnoj mi eĉ ne komprenis HTML-sintakso, kaj konatiĝo kun programlingvoj finiĝis per 10-jara Pascal-lernaro. Tamen mi decidis iri al IT-tendaro, por kies infanoj estus bone fari bot. Mi supozis, ke ĝi ne estas tiel malfacila.

Ĉi tio komencis longan vojaĝon, en kiu mi:

  • deplojis nuban servilon kun Ubuntu,
  • registrita sur GitHub,
  • lernis bazan JavaScript-sintakso,
  • legi multe da artikoloj en la angla kaj la rusa,
  • fine faris bot
  • finfine skribis ĉi tiun afiŝon.

La fina rezulto aspektis jene:

Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

Mi tuj diros, ke ĉi tio estas artikolo por komencantoj - nur por kompreni kiel fari elementajn aferojn ekde la komenco.

Kaj ankaŭ - por altnivelaj programistoj - nur por iom ridi ilin.

1. Kiel skribi kodon en JS?

Mi komprenis, ke indas almenaŭ kompreni la sintakson de la lingvo unue. La elekto falis sur JavaScript, simple ĉar la sekva paŝo por mi estis krei aplikaĵon en ReactNative. Mi komencis kun kompreneble sur Codecademy kaj estis tre entuziasma. La unuaj 7 tagoj estas senpagaj. Realaj projektoj. Mi rekomendas. La trairo daŭris ĉirkaŭ 25 horojn. Fakte, ne ĉio estis utila. Tiel aspektas la kursstrukturo kaj la unua bloko detale.

Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

2. Kiel registri bot?

Multe helpis min en la komenco ĉi tiu artikolo el la blogo de certa Arĥakov. Li maĉas je la komenco mem. Sed la ĉefa afero estas la instrukcioj por registri la bot. Mi ne skribos pli bone, kaj ĉar ĉi tio estas la plej facila parto, mi nur skribos la esencon. Vi devas krei bot kaj akiri ĝian API. Ĉi tio estas farita per alia bot - @BotFather. Trovu lin en telegramo, skribu al li, sekvu la simplan vojon kaj ricevu (konservu!) API-ŝlosilon (ĉi tio estas aro de ciferoj kaj literoj). Ĝi estis utila por mi poste.

Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

3. Kiel aspektas la botkodo?

Post longa studo de la artikoloj, mi konstatis, ke indas uzi ian bibliotekon (triaparta kodo en modula formato) por ne suferi pro studado de la telegrama API kaj kreado de grandaj kodoj de nulo. Mi trovis kadron telegrafo, kiu devis esti iel konektita al io uzante npm aŭ fadenon. Jen kiel mi komprenis tiam, el kio konsistas la disfaldo de la bot. Ridu ĉi tie. mi ne ofendiĝos. La ekzemploj ĉe la malsupro de la paĝo plej helpis min dum la posta kreado de la bot:

Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

3. Kiel krei vian propran nuban servilon por 100 rubloj

Post multe da serĉado, mi eksciis, ke la komando 'npm' el la supra bildo rilatas al la komandlinio. La komandlinio estas ĉie, sed por povi efektivigi ĝin, vi devas instali la NodePackageManager. La problemo estis, ke mi programis sur PixelBook kun ChromeOS. Mi preterlasos ĉi tie grandan blokon pri kiel mi ekkonis Linukson - por la plimulto, ĉi tio estas malplena kaj nenecesa. Se vi havas Vindozon aŭ MacBook, vi jam havas konzolon.

Resume, mi instalis Linukso per Crostini.

Tamen, en la procezo, mi rimarkis, ke por ke la bot funkciu la tutan tempon (kaj ne nur kiam mia komputilo estas ŝaltita), mi bezonas nuban servilon. mi elektis vscale.io Mi ĵetis 100 rublojn, aĉetis la plej malmultekostan Ubuntu-servilon (vidu bildon).

Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

4. Kiel prepari la servilon por ruli la bot

Post tio, mi rimarkis, ke mi bezonas fari iun dosierujon sur la servilo, en kiu mi metus la dosieron kun la teksto de la kodo. Por fari tion, en la konzolo (kuru rekte en la retejo per la butono "Malfermu Konzolon"), mi veturis

mkdir bot

bot - ĉi tio fariĝis la nomo de mia dosierujo. Post tio, mi instalis npm kaj Node.js, kiuj permesos al mi poste ruli kodon el *.js dosieroj

sudo apt update
sudo apt install nodejs
sudo apt install npm

Mi tre rekomendas en ĉi tiu etapo agordi konekton al la servilo per via konzolo. Jen manlibro Ĉi tio permesos al vi labori kun la servilo rekte per la konzolo de via komputilo.

5. Kiel kodi la unuan bot.

Nun ĉi tio estas nur revelacio por mi. Ajna programo estas nur linioj de teksto. Vi povas veturi ilin ie ajn, konservi kun la dezirata etendo kaj jen ĝi. Vi estas bela. mi uzis atomo, sed vere, vi povas simple skribi en norma notbloko. La ĉefa afero estas konservi la dosieron poste en la dezirata etendo. Estas kiel skribi tekston en Word kaj konservi ĝin.

Mi faris novan dosieron, en kiu mi enmetis la kodon el la ekzemplo en la paĝon de telegraf kaj konservis ĝin al la dosiero index.js (tute ne necesas nomi la dosieron tiel, sed ĝi estas akceptita). Grave - anstataŭ BOT_TOKEN, enigu vian API-ŝlosilon el la dua alineo.

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. Kiel puŝi la kodon al la servilo per github

Nun mi devis iel alŝuti ĉi tiun kodon al la servilo kaj ruli ĝin. Por mi ĝi fariĝis defio. Fine, post multe da suferado, mi rimarkis, ke estus pli facile krei dosieron sur github, kiu ebligas al vi ĝisdatigi la kodon per komando en la konzolo. Mi registris konton kun GitHub kaj faris nova projektokie mi alŝutis la dosieron. Post tio, mi devis eltrovi kiel agordi alŝutajn dosierojn de mia (malfermita!) konto al la servilo en la bot-dosierujo (se vi subite forlasis ĝin, simple skribu cd bot).

7. Kiel alŝuti dosierojn al la servilo per github parto 2

Mi bezonis meti programon sur la servilon, kiu elŝutus dosierojn el git. Mi instalis git sur la servilo tajpante

apt-get install git

Post tio, mi bezonis agordi dosierojn alŝutojn. Por fari tion, mi veturis en la komandlinion

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

Kiel rezulto, ĉio el la projekto estis alŝutita al la servilo. La eraro ĉe ĉi tiu punkto estis, ke mi esence faris duan dosierujon ene de la jam ekzistanta bot-dosierujo. La adreso al la dosiero aspektis kiel */bot/bot/index.js

Mi decidis ignori ĉi tiun problemon.

Kaj por ŝargi la telegraf-bibliotekon, kiun ni petas en la unua linio de kodo, tajpu la komandon en la konzolon.

npm install telegraf

8. Kiel komenci la bot

Por fari tion, dum en la dosierujo kun la dosiero (por moviĝi de dosierujo al dosierujo tra la konzolo, rulu la formatan komandon cd bot Por certigi, ke vi estas kie vi bezonas, vi povas veturi per komando, kiu montros en la konzolo ĉiujn dosierojn kaj dosierujojn, kiuj estas tie. ls -a

Por komenci, mi eniris la konzolon

node index.js

Se ne estas eraro, ĉio estas en ordo, la bot funkcias. Serĉu lin per telegramo. Se estas eraro, apliku viajn sciojn de la punkto 1.

9. Kiel ruli la bot en la fono

Vi rapide rimarkos, ke la bot funkcias nur kiam vi mem sidas en la konzolo. Por solvi ĉi tiun problemon mi uzis la komandon

screen

Post tio, ekrano kun iom da teksto aperos. Ĉi tio signifas, ke ĉio estas bona. Vi estas sur virtuala servilo sur nuba servilo. Por pli bone kompreni kiel ĉio funkcias - jen la artikolo. Nur iru al via dosierujo kaj tajpu la komandon por lanĉi la bot

node index.js

10. Kiel la bot funkcias kaj kiel vastigi ĝian funkciecon

Kion povas fari nia bot el la ekzemplo? Li povas

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

diru "Bonvenon!" en la momento de komenco (provu ŝanĝi la tekston)

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

responde al la norma /help-komando, sendu la mesaĝon "Sendu al mi glumarkon"

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

sendu aprobon responde al glumarko

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

respondu "Hej tie" se ili skribas 'hi'
bot.lanĉo()

Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

Se vi rigardas la kodon ĉe GitHub, tiam vi rapide rimarkos, ke mi ne tre malproksimiĝis de ĉi tiu funkcio. Kio estas aktive uzata estas la funkcio ctx.replyWithPhoto Ĝi ebligas al vi sendi antaŭfiksitan foton aŭ gifon en respondo al certa teksto.

Signifa parto de la kodo estis skribita de infanoj de 11-13 jaroj, al kiuj mi donis aliron al la bot. Ili eniris siajn uzantkazojn. Mi pensas, ke estas facile diri, kiun parton faris ili.

Ekzemple, GIF kun fama karaktero de la bildstrio de Adventure Time venas al la mesaĝo "jake".

Gvidilo: kiel fari simplan roboton por Telegram en JS por komencanto en programado

Por disvolvi la roboton plu, vi devas konekti la klavaron, vidu ekzemplojn, ekzemple, de ĉi tie

11. Kiel ĝisdatigi la kodon kaj rekomenci la bot

Ne forgesu, ke vi devas ĝisdatigi la kodon ne nur sur github, sed ankaŭ sur la servilo. Estas facile fari ĉi tion - haltigu la bot (premu ctrl + c),

- eniru en la konzolon, estante en la cela dosierujo, git pull
- rekomencu la roboton per la komando node index.js

FINO

Multaj el la aferoj priskribitaj en ĉi tiu dosiero estos super evidentaj por altnivelaj programistoj. Tamen, kiam mi mem provis transsalti la abismon al la mondo de robotoj unuflanke, mi vere maltrafis tian gvidilon. Gvidilo, kiu ne maltrafas evidentajn kaj simplajn aferojn por iu ajn IT-specialisto.

Estonte, mi planas afiŝon pri kiel fari mian unuan aplikaĵon ĉe ReactNative en la sama stilo, abonu!

fonto: www.habr.com

Aldoni komenton