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:
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
2. Kif tirreġistra bot?
Dan għenni ħafna fil-bidu
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
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
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
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
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
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 -
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 ()
Jekk tħares lejn il-kodiċi fuq 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.
Biex tiżviluppa aktar il-bot, għandek bżonn tikkonnettja tastiera, tħares lejn eżempji, pereżempju,
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