Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

Bdejt ngħaddas ruħi fid-dinja tal-IT biss tliet ġimgħat ilu. Serjament, tliet ġimgħat ilu lanqas biss fhimt is-sintassi HTML, u l-introduzzjoni tiegħi għal-lingwi ta 'programmar intemmet b'kurrikulu skolastiku fuq Pascal minn 10 snin ilu. Madankollu, iddeċidejt li mmur f'kamp tal-IT, fejn ikun sabiħ li t-tfal jagħmlu bot. Iddeċidejt li ma tantx kien daqshekk diffiċli.

Dan beda vjaġġ twil li fih jien:

  • skjerat cloud server ma' Ubuntu,
  • irreġistrat fuq GitHub,
  • tgħallmu sintassi JavaScript bażika,
  • aqra ton ta’ artikli bl-Ingliż u bir-Russu,
  • finalment għamel bot,
  • Fl-aħħar ktibt dan l-artiklu.

Ir-riżultat finali deher xi ħaġa bħal din:

Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

Jien ngħid mill-ewwel li dan huwa artiklu għall-jibdew - biss biex tifhem kif tagħmel affarijiet bażiċi mill-bidu.

U wkoll - għal programmaturi avvanzati - biss biex tidħaq ftit.

1. Kif tikteb kodiċi f'JS?

Fhimt li kien ta’ min għall-inqas nifhem is-sintassi tal-lingwa l-ewwel. L-għażla waqgħet fuq JavaScript, sempliċement għax il-pass li jmiss għalija kien li noħloq applikazzjoni f'ReactNative. Bdejt bih kors fuq Codecademy u kien ferħan ħafna. L-ewwel 7 ijiem huma b'xejn. Proġetti reali. Jien nirrekomandalek. It-tlestija ħa madwar 25 siegħa. Fil-fatt, mhux kollu kien utli. Dan huwa kif tidher l-istruttura tal-kors u l-ewwel blokk fid-dettall.

Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

2. Kif tirreġistra bot?

Dan għenni ħafna fil-bidu Dan l-artiklu mill-blog ta’ ċertu Archakov. Huwa jomgħod il-bidu nett. Iżda l-ħaġa prinċipali li hemm hemm struzzjonijiet għar-reġistrazzjoni ta 'bot. Ma nistax nikteb aħjar, u peress li din hija l-aktar parti faċli, nikteb biss il-qofol. Għandek bżonn toħloq bot u tikseb l-API tagħha. Dan isir permezz ta' bot ieħor - @BotFather. Sib lilu fuq telegramma, ikteb lilu, segwi l-mogħdija sempliċi u ġib (issejvja!) Ċavetta API (dan huwa sett ta 'numri u ittri). Dan sar utli aktar tard.

Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

3. Kif jidher il-kodiċi bot?

Wara li studja l-artikoli għal żmien twil, indunajt li kien ta 'min juża xi tip ta' librerija (kodiċi ta 'parti terza f'format ta' modulu) sabiex ma jkollokx għalfejn tinkwieta dwar l-istudju tat-Telegram API u l-ħolqien ta 'biċċiet kbar ta' kodiċi mill-bidu. Sibt il-qafas telegraf, li kien jeħtieġ li jkun b'xi mod konness ma 'xi ħaġa bl-użu ta' npm jew ħajt. Dan huwa bejn wieħed u ieħor kif fhimt allura fiex kien jikkonsisti l-iskjerament ta 'bot. Idħak hawn. Jien mhux se nkun offiż. L-eżempji fil-qiegħ tal-paġna għenuni l-aktar matul il-ħolqien sussegwenti tal-bot:

Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

3. Kif toħloq is-server tas-sħab tiegħek stess għal 100 rublu

Wara ħafna tiftix, indunajt li l-kmand 'npm' fl-istampa t'hawn fuq jirreferi għal-linja tal-kmand. Il-linja tal-kmand tinsab kullimkien, iżda biex tkun tista 'tesegwixxiha, għandek bżonn tinstalla NodePackageManager. Il-problema kienet li kont qed nipprogramma fuq PixelBook bil-ChromeOS. Se naqbeż hawn blokk kbir dwar kif tgħallimt Linux - għal ħafna huwa vojt u mhux meħtieġ. Jekk għandek Windows jew MacBook, diġà għandek console.

Fil-qosor, installajt Linux permezz ta' Crostini.

Madankollu, fil-proċess, indunajt li biex il-bot jaħdem b'mod kostanti (u mhux biss meta l-kompjuter tiegħi jkun mixgħul), għandi bżonn cloud server. Jien għażilt vscale.io Nefaqt 100 rublu u xtrajt l-orħos server Ubuntu (ara l-istampa).

Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

4. Kif tipprepara server biex imexxi bot

Wara dan, indunajt li kelli bżonn nagħmel xi tip ta 'folder fuq is-server li fih inpoġġi l-fajl bit-test tal-kodiċi. Biex tagħmel dan, fil-console (immexxi direttament fuq il-websajt permezz tal-buttuna "Open console"), dħalt

mkdir bot

bot - dan sar l-isem tal-folder tiegħi. Wara dan, installajt npm u Node.js, li se jippermettili mbagħad inħaddem kodiċi minn fajls b'riżoluzzjoni *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Nirrakkomanda ħafna li twaqqaf konnessjoni mas-server permezz tal-console tiegħek f'dan l-istadju. Hawn istruzzjoni Dan jippermettilek taħdem mas-server direttament permezz tal-console tal-kompjuter tiegħek.

5. Kif tikteb il-kodiċi għall-ewwel bot tiegħek.

Imma issa hija biss skoperta għalija. Kwalunkwe programm huwa biss linji ta 'test. Jistgħu jiddaħħlu kullimkien, jiġu salvati bl-estensjoni mixtieqa, u hekk. Inti sabiħ. jien kont Atom, iżda fir-realtà, tista 'sempliċement tikteb f'notepad standard. Il-ħaġa prinċipali hija li tissejvja l-fajl aktar tard fl-estensjoni mixtieqa. Qisu tikteb test fil-Word u ssalvah.

Għamilt fajl ġdid, li fih daħħalt il-kodiċi mill-eżempju fuq il-paġna tat-telegraf u ssejvjajtu fil-fajl index.js (b'mod ġenerali mhux meħtieġ li nsemmi l-fajl b'dan il-mod, iżda dan huwa normali). Importanti - minflok BOT_TOKEN, daħħal iċ-ċavetta API tiegħek mit-tieni paragrafu.

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. Kif ittella 'kodiċi fis-server permezz ta' github

Issa kelli b'xi mod intella' dan il-kodiċi fuq is-server u nħaddem. Din saret sfida għalija. Bħala riżultat, wara ħafna prova, indunajt li jkun aktar faċli li toħloq fajl fuq github li jippermettilek taġġorna l-kodiċi billi tuża kmand fil-console. I irreġistrajt kont fuq GitHub u għamel proġett ġdid, fejn tellajt il-fajl. Wara dan, kelli nifhem kif nistabbilixxi t-tlugħ ta 'fajls mill-kont tiegħi (miftuħa!) għas-server fil-folder tal-bot (jekk f'daqqa waħda ħallietu, ikteb cd bot).

7. Kif ittella 'fajls fuq is-server permezz ta' github parti 2

Kelli bżonn ninstalla programm fuq is-server li jniżżel fajls minn git. Installajt git fuq is-server billi ttajpja fil-console

apt-get install git

Wara dan kelli bżonn nikkonfigura l-upload tal-fajl. Biex tagħmel dan, ittajpjat fil-linja tal-kmand

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

Bħala riżultat, kollox mill-proġett kien imtella fuq is-server. L-iżball f'dan l-istadju kien li essenzjalment għamilt it-tieni folder ġewwa l-folder tal-bot diġà eżistenti. L-indirizz tal-fajl kien qisu */bot/bot/index.js

Iddeċidejt li ninjora din il-problema.

U biex tagħbija l-librerija telegraf, li nitolbu fl-ewwel linja tal-kodiċi, ittajpja l-kmand fil-console.

npm install telegraf

8. Kif tniedi bot

Biex tagħmel dan, waqt li tkun fil-folder bil-fajl (biex timxi minn folder għal folder permezz tal-console, mexxi l-kmand tal-format cd bot Biex taċċerta ruħek li tkun fejn trid tkun, tista' tidħol kmand li juri fil-console l-fajls u l-fowlders kollha li hemm ls -a

Biex tibda, dħalt fil-console

node index.js

Jekk ma jkun hemm l-ebda żball, kollox huwa tajjeb, il-bot qed jaħdem. Fittex għalih fuq telegramma. Jekk ikun hemm żball, applika l-għarfien tiegħek mill-punt 1.

9. Kif tmexxi bot fl-isfond

Pjuttost malajr tirrealizza li l-bot jaħdem biss meta inti stess tkun bilqiegħda fil-console. Biex issolvi din il-problema użajt il-kmand

screen

Wara dan, se jidher skrin b'xi test. Dan ifisser kollox tajjeb. Inti fuq server virtwali fuq server cloud. Biex tifhem aħjar kif jaħdem kollox - hawn hu l-artiklu. Sempliċement mur fil-folder tiegħek u daħħal il-kmand biex tniedi l-bot

node index.js

10. Kif jaħdem il-bot u kif jespandi l-funzjonalità tiegħu

X'jista' jagħmel il-bot eżempju tagħna? Hu jista

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

jgħidu "Merħba!" fil-mument tal-bidu (pprova ibdel it-test)

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

bi tweġiba għall-kmand standard / għajnuna, ibgħat il-messaġġ "Ibgħatli stiker"

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

ibgħat l-approvazzjoni bi tweġiba għal stiker

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

wieġeb "Ħej hemm" jekk jiktbu "hi" lilu
bot.tnedija ()

Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

Jekk tħares lejn il-kodiċi fuq GitHub, allura malajr tifhem li ma mortx 'il bogħod ħafna minn din il-funzjonalità. Dak li jintuża b'mod attiv huwa l-funzjoni ctx.replyWithPhoto Jippermettilek tibgħat ritratt jew gif speċifikat bi tweġiba għal test speċifiku.

Parti sinifikanti tal-kodiċi nkitbet minn tfal ta 'età 11-13, li lilhom tajt aċċess għall-bot. Huma daħlu fil-każ tal-utent tagħhom. Naħseb li huwa faċli li tgħid liema parti saret minnhom.

Pereżempju, il-messaġġ "Jake" se jirċievi GIF b'karattru famuż mill-cartoons Adventure Time.

Gwida: kif tagħmel bot Telegram sempliċi f'JS għal Bidu fl-ipprogrammar

Biex tiżviluppa aktar il-bot, għandek bżonn tikkonnettja tastiera, tħares lejn eżempji, pereżempju, għalhekk

11. Kif taġġorna l-kodiċi u terġa 'tibda l-bot

Tinsiex li għandek bżonn taġġorna l-kodiċi mhux biss fuq github, iżda wkoll fuq is-server. Dan huwa faċli li tagħmel - waqqaf il-bot (agħfas ctrl+c),

- tidħol fil-console waqt li tkun fil-folder fil-mira, git pull
— nerġgħu nniedu l-bot bil-kmand node index.js

END

Ħafna mill-affarijiet deskritti f'dan il-fajl se jkunu super ovvji għal programmaturi avvanzati. Madankollu, meta jien stess ippruvajt naqbeż fuq il-fond għad-dinja tal-bots f'daqqa waħda, verament tlift tali gwida. Gwida li ma titlifx affarijiet li huma ovvji u sempliċi għal kull speċjalista tal-IT.

Fil-futur, qed nippjana post dwar kif tagħmel l-ewwel applikazzjoni tiegħek fuq ReactNative bl-istess stil, abbona!

Sors: www.habr.com

Żid kumment