Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

Ndiqale ukuntywila kwihlabathi le-IT kuphela kwiiveki ezintathu ezidlulileyo. Ngokukrakra, kwiiveki ezintathu ezidlulileyo andizange ndiyiqonde i-syntax ye-HTML, kwaye intshayelelo yam kwiilwimi zeprogram yaphela ngekharityhulam yesikolo ePascal kwiminyaka eyi-10 eyadlulayo. Nangona kunjalo, ndagqiba ekubeni ndiye kwinkampu ye-IT, apho kuya kuba kuhle ukuba abantwana benze i-bot. Ndagqiba kwelokuba akunzima kangako.

Oku kwaqala uhambo olude apho:

  • ithumele iseva yelifu kunye no-Ubuntu,
  • ibhaliswe kwi-GitHub,
  • ufunde iSintaksi yeJavaScript esisiseko,
  • funda itoni yamanqaku ngesiNgesi nesiRashiya,
  • ekugqibeleni wenze i-bot,
  • Ekugqibeleni ndabhala eli nqaku.

Isiphumo sokugqibela sijonge ngolu hlobo:

Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

Ndiza kuthetha kwangoko ukuba eli linqaku labaqalayo - ukuqonda nje indlela yokwenza izinto ezisisiseko ukusuka ekuqaleni.

Kwaye kwakhona - kubadwelisi benkqubo abaphambili - ukubenza bahleke kancinci.

1. Ibhalwa njani ikhowudi kwi-JS?

Ndaqonda ukuba kufanelekile ukuqonda i-syntax yolwimi kuqala. Ukhetho lwawela kwiJavaScript, kuba inyathelo elilandelayo kum yayikukudala isicelo kwiReactNative. Ndaqala nge kunjalo kwiCodecademy kwaye ndonwabe kakhulu. Iintsuku ezisi-7 zokuqala zisimahla. Iiprojekthi zokwenyani. Ndicebisa. Ukuyigqiba kuthathe malunga neeyure ezingama-25. Enyanisweni, yayingeyonto yonke eyayiluncedo. Yile nto isakhiwo sekhosi sibukeka ngayo kunye nebhloko yokuqala ngokweenkcukacha.

Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

2. Indlela yokubhalisa ibhot?

Oku kwandinceda kakhulu ekuqaleni eli nqaku ukusuka kwiblogi ye-Archakov ethile. Uhlafuna kwasekuqaleni. Kodwa eyona nto iphambili kukho imiyalelo yokubhalisa i-bot. Andikwazi ukuyibhala ngcono, kwaye ekubeni le yeyona nxalenye ilula, ndiza kubhala nje umxholo. Kufuneka udale i-bot kwaye ufumane i-API yayo. Oku kwenziwa ngenye ibhot - @BotFather. Mfumane kwi-telegram, bhala kuye, landela indlela elula kwaye ufumane (gcina!) Isitshixo se-API (le isethi yamanani kunye neeleta). Kwaba luncedo kamva.

Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

3. Ijongeka njani ikhowudi yebhot?

Emva kokufunda amanqaku ixesha elide, ndaqonda ukuba kufanelekile ukusebenzisa uhlobo oluthile lwethala leencwadi (ikhowudi yomntu wesithathu kwifomathi yemodyuli) ukuze ungakhathazeki ngokufunda iTelegram API kunye nokudala ikhowudi enkulu ukusuka ekuqaleni. Ndifumene isakhelo ucingo, ebidinga ukudityaniswa ngandlel' ithile kwinto esebenzisa i-npm okanye umsonto. Le yindlela endiye ndayiqonda ngayo ke ukuba ukuthunyelwa kwe-bot kwakubandakanya ntoni. Hleka apha. Andiyi kukhubeka. Imizekelo esemazantsi ephepha yandinceda kakhulu ngexesha lokudalwa okulandelayo kwe-bot:

Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

3. Indlela yokwenza iseva yakho yefu kwi-ruble ye-100

Emva kokukhangela okuninzi, ndiye ndaqonda ukuba umyalelo othi 'npm' kumfanekiso ongasentla ubhekisa kumgca womyalelo. Umgca womyalelo ukuyo yonke indawo, kodwa ukuze ukwazi ukuyenza, kufuneka ufake iNodePackageManager. Ingxaki yayikukuba bendicwangcisa kwiPixelBook eneChromeOS. Ndiza kutsiba apha ibhloko enkulu malunga nendlela endiyifunde ngayo iLinux - kuninzi ayinanto kwaye ayiyomfuneko. Ukuba uneWindows okanye iMacBook, sele unayo ikhonsoli.

Ngamafutshane, ndifake iLinux ngeCrostini.

Nangona kunjalo, kwinkqubo, ndaqonda ukuba ukuze i-bot isebenze rhoqo (kwaye kungekhona nje xa ikhomputha yam ivuliwe), ndifuna iseva yefu. Ndiyakhetha vscale.io Ndichithe ii-ruble ezili-100 kwaye ndathenga iseva ye-Ubuntu engabizi kakhulu (jonga umfanekiso).

Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

4. Uyilungisa njani iseva ukuba iqhube ibhot

Emva koko, ndaqonda ukuba kufuneka ndenze uhlobo oluthile lwefolda kwiseva apho ndiza kubeka ifayile kunye nombhalo wekhowudi. Ukwenza oku, kwi-console (qhuba ngokuthe ngqo kwiwebhusayithi ngokusebenzisa iqhosha elithi "Vula i-console"), ndangena

mkdir bot

bot - eli ibe ligama lefolda yam. Emva koko, ndifake i-npm kunye ne-Node.js, eya kundivumela ukuba ndiqhube ikhowudi kwiifayile ezinesisombululo se *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Ndincoma kakhulu ukuseta uqhagamshelo kwiseva ngokusebenzisa ikhonsoli yakho kweli nqanaba. Apha ncwadana Oku kuya kukuvumela ukuba usebenze kunye nomncedisi ngokuthe ngqo kwikhonsoli yekhompyuter yakho.

5. Uyibhala njani ikhowudi yebhot yakho yokuqala.

Kodwa ngoku kukufunyanwa nje kum. Nayiphi na inkqubo yimigca nje yokubhaliweyo. Ziyakwazi ukufakwa naphi na, zigcinwe kunye nolwandiso olufunwayo, kwaye yiloo nto. Umhle. ndidla ngoku atom, kodwa ngokwenene, ungabhala nje kwi-notepad eqhelekileyo. Into ephambili kukugcina ifayile kamva kwisandiso esifunwayo. Kufana nokubhala isicatshulwa kwi-Word kwaye uyigcine.

Ndenze ifayile entsha, apho ndifake khona ikhowudi kumzekelo kwiphepha le-telegraf kwaye ndiyigcine kwifayile ye-index.js (ngokubanzi akuyimfuneko ukubiza ifayile ngaloo ndlela, kodwa oku kungokwesiko). Kubalulekile - endaweni yeBOT_TOKEN, faka isitshixo sakho seAPI ukusuka kumhlathi wesibini.

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. Indlela yokulayisha ikhowudi kumncedisi nge-github

Ngoku bendifuna ngandlela thile ndilayishe le khowudi kwiseva kwaye ndiyiqhube. Oku kwaba lucelomngeni kum. Ngenxa yoko, emva kobunzima obukhulu, ndaqonda ukuba kuya kuba lula ukwenza ifayile kwi-github evumela ukuba uhlaziye ikhowudi usebenzisa umyalelo kwi-console. Ndibhalise i-akhawunti kwi github kwaye wenza iprojekthi entsha, apho ndifake khona ifayile. Emva koko, kwafuneka ndibone indlela yokucwangcisa iifayile zokulayisha kwi-akhawunti yam (vula!) kumncedisi kwifolda ye-bot (ukuba ushiye ngokukhawuleza, bhala nje i-cd bot).

7. Indlela yokulayisha iifayile kwiseva nge-github inxalenye yesi-2

Bendifuna ukufaka inkqubo kwiseva enokukhuphela iifayile kwi-git. Ndifake i-git kumncedisi ngokuchwetheza kwi-console

apt-get install git

Emva koko kufuneka ndilungiselele ukufakwa kwefayile. Ukwenza oku, ndichwetheze kumgca womyalelo

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

Ngenxa yoko, yonke into esuka kwiprojekthi ilayishwe kwiseva. Impazamo kweli nqanaba yayikukuba ndenze ifolda yesibini ngaphakathi kwifolda esele ikhona ye-bot. Idilesi kwifayile ijongeka ngathi */bot/bot/index.js

Ndagqiba ekubeni ndingayihoyi le ngxaki.

Kwaye ukulayisha ilayibrari ye-telegraf, esiyicelayo kumgca wokuqala wekhowudi, chwetheza umyalelo kwi-console.

npm install telegraf

8. Uyiqalisa njani ibhot

Ukwenza oku, ngelixa kwifolda enefayile (ukusuka kwifolda ukuya kwifolda nge-console, sebenzisa umyalelo wefomathi cd bot Ukuqinisekisa ukuba ulapho kufuneka ube khona, ungangenisa umyalelo oza kubonisa kwiconsole zonke iifayile kunye neefolda ezilapho. ls -a

Ukuqala, ndangena kwi-console

node index.js

Ukuba akukho mpazamo, yonke into ilungile, i-bot isebenza. Mkhangele kwitelegram. Ukuba kukho impazamo, sebenzisa ulwazi lwakho olusuka kwindawo yoku-1.

9. Uyiqhuba njani ibhot ngasemva

Ngokukhawuleza uya kuqonda ukuba i-bot isebenza kuphela xa uhleli kwi-console. Ukusombulula le ngxaki ndisebenzise umyalelo

screen

Emva koku, isikrini esinombhalo othile siya kuvela. Oku kuthetha ukuba yonke into ilungile. Ukwiseva yenyani kumncedisi welifu. Ukuqonda ngcono indlela esebenza ngayo yonke into - nali inqaku. Yiya nje kwifolda yakho kwaye ufake umyalelo wokuqalisa i-bot

node index.js

10. Indlela i-bot isebenza ngayo kunye nendlela yokwandisa ukusebenza kwayo

Umzekelo wethu unokwenza ntoni? Anga

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

yithi "Wamkelekile!" ekuqaleni (zama ukutshintsha okubhaliweyo)

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

ekuphenduleni umgangatho / umyalelo woncedo, thumela umyalezo "Ndithumele isincamathelisi"

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

Thumela imvume kwimpendulo kwisincamathelisi

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

phendula ngokuthi β€œHey there” ukuba babhala β€œhi” kuye
I-bot.launch()

Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

Ukuba ujonga ikhowudi kwi github, ngoko uya kuqonda ngokukhawuleza ukuba andizange ndihambe kakhulu kulo msebenzi. Yintoni esetyenziswa ngokusebenzayo ngumsebenzi ctx.replyWithPhoto Ikuvumela ukuba uthumele ifoto echaziweyo okanye i-gif kwimpendulo kumbhalo othile.

Inxalenye ebalulekileyo yekhowudi yabhalwa ngabantwana abaneminyaka eyi-11-13, endinike ukufikelela kwi-bot. Bafake i-user-case yabo. Ndicinga ukuba kulula ukuxelela ukuba yeyiphi inxalenye eyenziwe ngabo.

Ngokomzekelo, umyalezo othi "uJake" uya kufumana i-GIF kunye nomlingiswa owaziwayo ovela kwi-Cartoon Adventure Time.

Isikhokelo: indlela yokwenza i-bot yeTelegram elula kwi-JS kumntu oqalayo kwiprogram

Ukuphuhlisa ibhot ngakumbi, kufuneka uqhagamshele ikhibhodi, jonga imizekelo, umzekelo, kusuka apha

11. Indlela yokuhlaziya ikhowudi kwaye uqalise kwakhona i-bot

Ungalibali ukuba kufuneka uhlaziye ikhowudi kungekuphela nje kwi-github, kodwa nakwiseva. Oku kulula ukwenza - yeka ibhot (cofa ctrl+c),

-ngena kwi-console ngelixa ukwifolda ekujoliswe kuyo, git pull
- siqalisa ibhot kwakhona ngomyalelo node index.js

ISIPHELO

Uninzi lwezinto ezichazwe kule fayile ziya kubonakala kakhulu kubadwelisi benkqubo abaphambili. Nangona kunjalo, xa mna ngokwam ndizama ukutsiba umsantsa ukuya kwihlabathi le-bots ngexesha elinye, ndasikhumbula ngokwenene eso sikhokelo. Isikhokelo esingaphosiyo izinto ezicacileyo nezilula kuyo nayiphi na ingcali ye-IT.

Kwixesha elizayo, ndicwangcisa isithuba malunga nendlela yokwenza isicelo sakho sokuqala kwi-ReactNative kwisitayile esifanayo, bhalisa!

umthombo: www.habr.com

Yongeza izimvo