Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

Fillova të zhytem në botën e IT-së vetëm tre javë më parë. Seriozisht, tre javë më parë nuk e kuptoja as sintaksën HTML dhe njohja ime në gjuhët e programimit përfundoi me një kurrikulë shkollore mbi Pascal nga 10 vjet më parë. Megjithatë, vendosa të shkoj në një kamp IT, ku do të ishte mirë që fëmijët të bënin një bot. Vendosa se nuk ishte aq e vështirë.

Ky filloi një udhëtim të gjatë në të cilin unë:

  • vendosi një server cloud me Ubuntu,
  • regjistruar në GitHub,
  • mësuar sintaksën bazë JavaScript,
  • lexoni një ton artikujsh në anglisht dhe rusisht,
  • më në fund bëri një bot,
  • Më në fund shkrova këtë artikull.

Rezultati përfundimtar dukej diçka si ky:

Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

Unë do të them menjëherë se ky është një artikull për fillestarët - vetëm për të kuptuar se si të bëni gjërat themelore nga e para.

Dhe gjithashtu - për programuesit e avancuar - vetëm për t'i bërë ata të qeshin pak.

1. Si të shkruhet kodi në JS?

Kuptova se ia vlente të paktën të kuptoja sintaksën e gjuhës. Zgjedhja ra në JavaScript, thjesht sepse hapi tjetër për mua ishte krijimi i një aplikacioni në ReactNative. Fillova me kurs në Codecademy dhe ishte shumë i kënaqur. 7 ditët e para janë falas. Projekte reale. Unë rekomandoj. Përfundimi i tij zgjati rreth 25 orë. Në fakt, jo të gjitha ishin të dobishme. Kështu duket struktura e kursit dhe blloku i parë në detaje.

Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

2. Si të regjistrohet një bot?

Kjo më ndihmoi shumë në fillim ky artikull nga blogu i një farë Archakovi. Ai përtyp që në fillim. Por gjëja kryesore që është atje janë udhëzimet për regjistrimin e një boti. Nuk mund ta shkruaj më mirë, dhe meqë kjo është pjesa më e lehtë, do të shkruaj vetëm thelbin. Ju duhet të krijoni një bot dhe të merrni API-në e tij. Kjo bëhet përmes një boti tjetër - @BotFather. Gjeni atë në telegram, shkruani atij, ndiqni rrugën e thjeshtë dhe merrni (ruani!) një çelës API (ky është një grup numrash dhe shkronjash). I erdhi mirë më vonë.

Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

3. Si duket kodi i botit?

Pasi i studiova artikujt për një kohë të gjatë, kuptova se ia vlente të përdorja një lloj biblioteke (kodi i palës së tretë në formatin e modulit) në mënyrë që të mos shqetësohesha për studimin e API-së së Telegramit dhe krijimin e pjesëve të mëdha të kodit nga e para. Kam gjetur kornizën telegraf, e cila duhej të lidhej disi me diçka duke përdorur npm ose fije. Kështu e kuptova përafërsisht se çfarë përbëhej nga vendosja e një roboti. Qeshni këtu. Unë nuk do të ofendohem. Shembujt në fund të faqes më ndihmuan më shumë gjatë krijimit të mëpasshëm të botit:

Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

3. Si të krijoni serverin tuaj cloud për 100 rubla

Pas shumë kërkimesh, kuptova se komanda 'npm' në foton e mësipërme i referohet linjës së komandës. Linja e komandës është kudo, por për të qenë në gjendje ta ekzekutoni atë, duhet të instaloni NodePackageManager. Problemi ishte se po programoja në një PixelBook me ChromeOS. Këtu do të kaloj një bllok të madh rreth mënyrës se si kam mësuar për Linux - për shumicën është bosh dhe i panevojshëm. Nëse keni Windows ose MacBook, tashmë keni një tastierë.

Me pak fjalë, instalova Linux nëpërmjet Crostini.

Megjithatë, gjatë procesit, kuptova se që roboti të funksionojë vazhdimisht (dhe jo vetëm kur kompjuteri im është i ndezur), më duhet një server cloud. une zgjodha vscale.io Shpenzova 100 rubla dhe bleva serverin më të lirë Ubuntu (shiko foton).

Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

4. Si të përgatisni një server për të ekzekutuar një bot

Pas kësaj, kuptova se duhej të bëja një lloj dosjeje në server në të cilin do të vendosja skedarin me tekstin e kodit. Për ta bërë këtë, në tastierë (drejtuar drejtpërdrejt në faqen e internetit përmes butonit "Open console"), hyra

mkdir bot

bot - ky u bë emri i dosjes sime. Pas kësaj, instalova npm dhe Node.js, të cilat do të më lejojnë të ekzekutoj kodin nga skedarët me rezolucion *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Unë rekomandoj shumë të konfiguroni një lidhje me serverin përmes tastierës suaj në këtë fazë. Këtu udhëzim Kjo do t'ju lejojë të punoni me serverin drejtpërdrejt përmes tastierës së kompjuterit tuaj.

5. Si të shkruani kodin për botin tuaj të parë.

Por tani është vetëm një zbulim për mua. Çdo program është vetëm linja teksti. Ato mund të futen kudo, të ruhen me shtrirjen e dëshiruar, dhe kjo është ajo. Ti je e bukur. une e perdora Atom, por në realitet, ju thjesht mund të shkruani në një bllok shënimesh standarde. Gjëja kryesore është të ruani skedarin më vonë në shtesën e dëshiruar. Është si të shkruani tekst në Word dhe ta ruani atë.

Bëra një skedar të ri, në të cilin futa kodin nga shembulli në faqen e telegrafit dhe e ruajta në skedarin index.js (në përgjithësi nuk është e nevojshme të emërtohet skedari në këtë mënyrë, por kjo është zakon). E rëndësishme - në vend të BOT_TOKEN, futni çelësin tuaj API nga paragrafi i dytë.

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. Si të ngarkoni kodin në server nëpërmjet github

Tani më duhej ta ngarkoja disi këtë kod në server dhe ta ekzekutoja. Kjo u bë një sfidë për mua. Si rezultat, pas shumë sprovash, kuptova se do të ishte më e lehtë të krijoni një skedar në github që ju lejon të përditësoni kodin duke përdorur një komandë në tastierë. Kam regjistruar një llogari në Github dhe bëri projekt i ri, ku kam ngarkuar skedarin. Pas kësaj, më duhej të kuptoja se si të konfiguroja ngarkimin e skedarëve nga llogaria ime (hap!) në server në dosjen e bot-it (nëse e keni lënë papritmas, thjesht shkruani cd bot).

7. Si të ngarkoni skedarë në server përmes github pjesës 2

Më duhej të instaloja një program në server që do të shkarkonte skedarë nga git. Unë instalova git në server duke shtypur në tastierë

apt-get install git

Pas kësaj më duhej të konfiguroja ngarkimin e skedarit. Për ta bërë këtë, unë shtypa në vijën e komandës

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

Si rezultat, gjithçka nga projekti u ngarkua në server. Gabimi në këtë fazë ishte se në thelb bëra një dosje të dytë brenda dosjes tashmë ekzistuese të bot-it. Adresa e skedarit dukej si */bot/bot/index.js

Vendosa ta injoroj këtë problem.

Dhe për të ngarkuar bibliotekën e telegrafit, të cilën e kërkojmë në rreshtin e parë të kodit, shtypni komandën në tastierë.

npm install telegraf

8. Si të lëshoni një bot

Për ta bërë këtë, ndërsa jeni në dosjen me skedarin (për të lëvizur nga dosja në dosje përmes tastierës, ekzekutoni komandën e formatit cd bot Për t'u siguruar që jeni aty ku duhet të jeni, mund të futni një komandë që do të shfaqë në tastierë të gjithë skedarët dhe dosjet që janë aty. ls -a

Për të filluar, unë hyra në tastierë

node index.js

Nëse nuk ka gabim, gjithçka është në rregull, roboti po funksionon. Kërkojeni atë në telegram. Nëse ka një gabim, zbatoni njohuritë tuaja nga pika 1.

9. Si të ekzekutoni një bot në sfond

Shumë shpejt do të kuptoni se roboti funksionon vetëm kur ju vetë jeni ulur në tastierë. Për të zgjidhur këtë problem kam përdorur komandën

screen

Pas kësaj, do të shfaqet një ekran me pak tekst. Kjo do të thotë se gjithçka është në rregull. Ju jeni në një server virtual në një server cloud. Për të kuptuar më mirë se si funksionon gjithçka - këtu është artikulli. Thjesht shkoni te dosja juaj dhe futni komandën për të nisur bot

node index.js

10. Si funksionon roboti dhe si të zgjerohet funksionaliteti i tij

Çfarë mund të bëjë roboti ynë i shembullit? Ai mundet

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

thuaj "Mirë se erdhe!" në momentin e fillimit (provoni të ndryshoni tekstin)

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

në përgjigje të komandës standarde / ndihmë, dërgoni mesazhin "Më dërgoni një afishe"

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

dërgoni miratimin në përgjigje të një ngjitëseje

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

përgjigjuni "Hej atje" nëse i shkruajnë "përshëndetje".
bot.launch()

Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

Nëse shikoni kodin në Github, atëherë do të kuptoni shpejt se nuk kam shkuar shumë larg nga ky funksionalitet. Ajo që përdoret në mënyrë aktive është funksioni ctx.replyWithPhoto Kjo ju lejon të dërgoni një foto ose gif të specifikuar në përgjigje të një teksti specifik.

Një pjesë e konsiderueshme e kodit është shkruar nga fëmijë 11-13 vjeç, të cilëve u kam dhënë akses në bot. Ata hynë në rastin e tyre të përdoruesit. Mendoj se është e lehtë të dallosh se cila pjesë është bërë prej tyre.

Për shembull, mesazhi "Jake" do të marrë një GIF me një personazh të famshëm nga filmi vizatimor Adventure Time.

Udhëzues: si të bëni një bot të thjeshtë Telegram në JS për një fillestar në programim

Për të zhvilluar më tej robotin, duhet të lidhni një tastierë, shikoni shembuj, për shembull, prandaj

11. Si të përditësoni kodin dhe rinisni botin

Mos harroni se ju duhet të përditësoni kodin jo vetëm në github, por edhe në server. Kjo është e lehtë për t'u bërë - ndaloni robotin (shtypni ctrl+c),

- hyni në tastierë ndërsa jeni në dosjen e synuar, git pull
— e nisim përsëri botin me komandën node index.js

END

Shumë nga gjërat e përshkruara në këtë skedar do të jenë shumë të dukshme për programuesit e avancuar. Sidoqoftë, kur unë vetë u përpoqa të hidhesha mbi humnerën në botën e robotëve me një goditje, më humbi vërtet një udhëzues i tillë. Një udhëzues që nuk i mungojnë gjërat që janë të dukshme dhe të thjeshta për çdo specialist IT.

Në të ardhmen, po planifikoj një postim se si të bëni aplikacionin tuaj të parë në ReactNative në të njëjtin stil, abonohuni!

Burimi: www.habr.com

Shto një koment