Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

Mwen te kòmanse plonje tèt mwen nan mond lan nan IT sèlman twa semèn de sa. Seryezman, twa semèn de sa mwen pa t 'menm konprann sentaks HTML, ak entwodiksyon mwen an nan langaj pwogramasyon te fini ak yon kourikoulòm lekòl sou Pascal soti nan 10 ane de sa. Sepandan, mwen deside ale nan yon kan IT, kote li ta bèl pou timoun yo fè yon bot. Mwen te deside ke li pa t difisil konsa.

Sa a te kòmanse yon vwayaj ki long kote mwen:

  • te deplwaye yon sèvè nwaj ak Ubuntu,
  • anrejistre sou GitHub,
  • aprann sentaks JavaScript debaz,
  • li yon tòn atik nan lang angle ak Ris,
  • finalman te fè yon bot,
  • Mwen finalman te ekri atik sa a.

Rezilta final la te sanble yon bagay tankou sa a:

Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

Mwen pral di touswit ke sa a se yon atik pou débutan - jis yo konprann ki jan fè bagay debaz nan grate.

Epi tou - pou pwogramasyon avanse - jis fè yo ri yon ti kras.

1. Ki jan yo ekri kòd nan JS?

Mwen te konprann ke li te vo omwen konprann sentaks lang nan premye. Chwa a te tonbe sou JavaScript, tou senpleman paske pwochen etap la pou mwen se te kreye yon aplikasyon nan ReactNative. Mwen te kòmanse avèk kou sou Codecademy e li te trè kontan. Premye 7 jou yo gratis. Pwojè reyèl. Mwen rekomande. Konplete li te pran apeprè 25 èdtan. An reyalite, se pa tout sa ki te itil. Sa a se sa estrikti nan kou a sanble ak premye blòk la an detay.

Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

2. Ki jan yo anrejistre yon bot?

Sa a te ede m anpil nan kòmansman an atik sa a soti nan blog la nan yon sèten Archakov. Li moulen kòmansman an. Men, bagay la prensipal ki se gen enstriksyon pou anrejistre yon bot. Mwen pa ka ekri li pi byen, epi depi sa a se pati ki pi fasil, mwen pral jis ekri esansyèl la. Ou bezwen kreye yon bot epi jwenn API li. Sa a se fè atravè yon lòt bot - @BotFather. Jwenn l 'sou telegram, ekri l', swiv chemen an senp epi jwenn (sove!) Yon kle API (sa a se yon seri nimewo ak lèt). Li te vin an sou la men pita.

Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

3. Ki jan kòd bot la sanble?

Apre etidye atik yo pou yon tan long, mwen reyalize ke li te vo sèvi ak kèk kalite bibliyotèk (kòd twazyèm-pati nan fòma modil) pou yo pa gen enkyete sou etidye API a Telegram ak kreye gwo moso nan kòd nan grate. Mwen jwenn fondasyon an telegraf, ki te bezwen yon jan kanmenm konekte ak yon bagay lè l sèvi avèk npm oswa fil. Sa a se apeprè ki jan mwen konprann Lè sa a, ki sa deplwaman an nan yon bot konpoze de. Ri isit la. Mwen pap ofanse. Egzanp yo nan pati anba a nan paj la te ede m 'pi plis pandan kreyasyon an ki vin apre nan bot la:

Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

3. Ki jan yo kreye pwòp sèvè nwaj ou a pou 100 rubles

Apre anpil rechèch, mwen reyalize ke kòmandman 'npm' nan foto ki anwo a refere a liy lòd la. Liy lòd la se tout kote, men pou kapab egzekite li, ou bezwen enstale NodePackageManager. Pwoblèm lan te ke mwen te pwograme sou yon PixelBook ak ChromeOS. Mwen pral sote isit la yon gwo blòk sou fason mwen te aprann Linux - pou pifò li se vid epi li pa nesesè. Si ou gen Windows oswa yon MacBook, ou deja gen yon konsole.

Nan yon bref, mwen enstale Linux atravè Crostini.

Sepandan, nan pwosesis la, mwen reyalize ke pou bot la travay toujou (e pa sèlman lè òdinatè mwen an sou), mwen bezwen yon sèvè nwaj. Mwen chwazi vscale.io Mwen te depanse 100 rubles epi mwen te achte sèvè Ubuntu ki pi bon mache (gade foto).

Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

4. Ki jan yo prepare yon sèvè pou kouri yon bot

Apre sa, mwen reyalize ke mwen te bezwen fè kèk kalite katab sou sèvè a nan ki mwen ta mete dosye a ak tèks la kòd. Pou fè sa, nan konsole a (kouri dirèkteman sou sit entènèt la atravè bouton an "Louvri konsole"), mwen te antre

mkdir bot

bot - sa a te vin non katab mwen an. Apre sa, mwen enstale npm ak Node.js, ki pral pèmèt mwen kouri kòd soti nan dosye ak rezolisyon *.js.

sudo apt update
sudo apt install nodejs
sudo apt install npm

Mwen trè rekòmande pou etabli yon koneksyon ak sèvè a atravè konsole ou nan etap sa a. Isit la enstriksyon Sa a pral pèmèt ou travay ak sèvè a dirèkteman atravè konsole òdinatè w lan.

5. Ki jan yo ekri kòd la pou premye bot ou a.

Men koulye a, se jis yon dekouvèt pou mwen. Nenpòt pwogram se jis liy tèks. Yo ka mete nenpòt kote, sove ak ekstansyon vle a, e se li. Ou bèl. Mwen te itilize Atom, men an reyalite, ou ka jis ekri nan yon notepad estanda. Bagay pwensipal lan se pou konsève pou dosye a pita nan ekstansyon an vle. Se tankou ekri tèks nan Word epi sove li.

Mwen te fè yon nouvo fichye, nan ki mwen mete kòd ki soti nan egzanp lan sou paj telegraf la epi sove li nan fichye index.js la (an jeneral li pa nesesè nonmen fichye a konsa, men sa a se nòmal). Enpòtan - olye pou yo BOT_TOKEN, mete kle API ou nan dezyèm paragraf la.

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. Ki jan yo telechaje kòd sou sèvè a atravè github

Koulye a, mwen te bezwen yon jan kanmenm Upload kòd sa a sou sèvè a epi kouri li. Sa a te vin tounen yon defi pou mwen. Kòm yon rezilta, apre anpil eprèv, mwen reyalize ke li ta pi fasil yo kreye yon dosye sou github ki pèmèt ou mete ajou kòd la lè l sèvi avèk yon lòd nan konsole a. Mwen anrejistre yon kont sou GitHub e li te fè nouvo pwojè, kote mwen telechaje fichye a. Apre sa, mwen te bezwen konnen ki jan yo mete kanpe dosye ki soti nan kont mwen an (louvri!) Nan sèvè a nan folder nan bot (si ou toudenkou kite li, jis ekri cd bot).

7. Ki jan yo telechaje fichye sou sèvè a atravè github pati 2

Mwen te bezwen enstale yon pwogram sou sèvè a ki ta telechaje fichye soti nan git. Mwen enstale git sou sèvè a pa tape nan konsole a

apt-get install git

Apre sa mwen te bezwen konfigirasyon telechaje dosye a. Pou fè sa, mwen tape nan liy lòd la

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

Kòm yon rezilta, tout bagay soti nan pwojè a te Uploaded sou sèvè a. Erè a nan etap sa a se te ke mwen esansyèlman te fè yon dezyèm katab andedan katab la bot ki deja egziste. Adrès dosye a te sanble ak */bot/bot/index.js

Mwen deside inyore pwoblèm sa a.

Epi pou chaje bibliyotèk telegraf la, ke nou mande nan premye liy kòd la, tape lòd la nan konsole a.

npm install telegraf

8. Ki jan yo lanse yon bot

Pou fè sa, pandan y ap nan katab la ak dosye a (pou deplase soti nan katab nan katab atravè konsole a, kouri lòd la fòma cd bot Pou asire w ke ou se kote ou bezwen yo, ou ka antre nan yon lòd ki pral montre nan konsole a tout dosye yo ak dosye ki la. ls -a

Pou kòmanse, mwen te antre nan konsole a

node index.js

Si pa gen okenn erè, tout bagay anfòm, bot la ap travay. Chèche l sou telegram. Si gen yon erè, aplike konesans ou soti nan pwen 1.

9. Ki jan yo kouri yon bot nan background nan

Byen vit ou pral reyalize ke bot la ap travay sèlman lè ou menm ou chita nan konsole a. Pou rezoud pwoblèm sa a mwen te itilize kòmandman an

screen

Apre sa, yon ekran ak kèk tèks ap parèt. Sa vle di tout bagay anfòm. Ou se sou yon sèvè vityèl sou yon sèvè nwaj. Pou konprann pi byen ki jan li tout travay - isit la se atik la. Jis ale nan katab ou a epi antre nan lòd la lanse bot la

node index.js

10. Ki jan bot la ap travay ak ki jan yo elaji fonksyonalite li yo

Kisa bot egzanp nou an ka fè? Li kapab

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

di "Byenveni!" nan kòmansman an (eseye chanje tèks la)

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

an repons a estanda / èd kòmandman an, voye mesaj "Voye yon fich pou mwen"

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

voye apwobasyon an repons a yon fichye

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

reponn "Hey there" si yo ekri "hi" pou li
bot.lanse()

Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

Si w gade kòd la nan GitHub, Lè sa a, ou pral byen vit konprann ke mwen pa te ale trè lwen fonksyonalite sa a. Ki sa ki aktivman itilize se fonksyon an ctx.replyWithPhoto Li pèmèt ou voye yon foto espesifik oswa gif an repons a yon tèks espesifik.

Yon pati enpòtan nan kòd la te ekri pa timoun ki gen laj 11-13, ki moun mwen te bay aksè a bot la. Yo te antre nan ka itilizatè yo. Mwen panse ke li fasil pou di ki pati yo te fè.

Pou egzanp, mesaj la "Jake" pral resevwa yon GIF ak yon karaktè pi popilè nan desen ki pi ba Adventure Time.

Gid: ki jan fè yon senp telegram bot nan JS pou yon debutan nan pwogramasyon

Pou devlope bot la pi lwen, ou bezwen konekte yon klavye, gade egzanp, pou egzanp, kon sa

11. Ki jan yo mete ajou kòd la ak rekòmanse bot la

Pa bliye ke ou bezwen mete ajou kòd la pa sèlman sou github, men tou sou sèvè a. Sa a se fasil fè - sispann bot la (peze ctrl + c),

- antre nan konsole a pandan y ap nan katab la sib, git pull
- nou lanse bot la ankò ak lòd la node index.js

FEN

Anpil nan bagay ki dekri nan dosye sa a pral super evidan pou pwogramasyon avanse yo. Sepandan, lè mwen menm mwen te eseye sote sou gwo twou a nan mond lan nan robo nan yon sèl tonbe, mwen reyèlman rate yon gid konsa. Yon gid ki pa manke bagay ki evidan ak senp pou nenpòt espesyalis IT.

Nan tan kap vini an, mwen ap planifye yon pòs sou kòman yo fè premye aplikasyon ou sou ReactNative nan menm style la, abònman!

Sous: www.habr.com

Add nouvo kòmantè