Kam fillova të zhytjes në botën e TI vetëm tri javë më parë. Seriousisht, tri javë më parë nuk e dija as sintaksën HTML, ndërsa njohuria ime për gjuhët e programimit mbaronte me programin shkollor të Pascal-it të para 10 vjetëve. Megjithatë, vendosa të shkoj në një kamp IT, ku do të ishte mirë për fëmijët të krijonin një bot. Vendosa se nuk mund të ishte kaq e vështirë.
Nga kjo filloi një rrugë e gjatë, në kuadër të së cilës unë:
- në ndërgjegje serverin e re në cloud me Ubuntu,
- u regjistrova në GitHub,
- mësova sintaksën bazë të JavaScript,
- lexova një mori artikujsh në anglisht dhe rusisht,
- në fund e krijova botin,
- shkrova këtë artikull, në fund.
Produkti përfundimtar dukej kështu:

Të them të drejtën, ky artikull është për fillestarët — për të kuptuar thjesht si të bëj gjëra elementare nga pika më e ulët.
Dhe gjithashtu — për programuesit e avancuar — thjesht për t'i bërë ata të qeshin pak.
1. Si të shkruaj kod në JS?
Dija se ishte mirë të filloja së paku të kuptoja sintaksën e gjuhës. Zgjedhja ra në JavaScript, thjesht sepse hapi tjetër për mua ishte të krijoja një aplikacion në ReactNative. Fillova me në Codecademy dhe mbeta shumë i emocionuar. 7 ditët e para falas. Projekte reale. E rekomandoj. Kalimi i saj zgjati rreth 25 orë. Në të vërtetë, jo gjithçka prej saj ishte e përdorshme. Kështu duket struktura e kursit dhe detajet e bllokut të parë.

2. Si të regjistroj botin?
Në fillim, më ndihmoi shumë ky nga blogu i një individi të quajtur Archakov. Ai e shpjegon fillimin. Por gjëja më e rëndësishme që ka është — një udhëzues për regjistrimin e botit. Nuk do ta shkruaj më mirë, dhe pasi kjo është pjesa më e lehtë, do ta shpjegoj thjesht. 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, shkruajini, ndiqni një rrugë të thjeshtë dhe merrni (ruani!) çelësin API (ky është një grup numrash dhe shkronjash). Më nevojitej më vonë.

3. Si duket kodi i botit?
Pas një studimi të gjatë të artikujve, e kuptova se duhet të përdor ndonjë bibliotekë (kod të jashtëm në format modul), për të mos u munduar me studimin e API-t të Telegramit dhe krijimin nga e para të pjesëve të mëdha të kodit. Gjeta kornizën , që duhej ta lidhnim ndonjëherë me diçka përmes npm ose yarn. Kështu e kuptoja atëherë se çfarë përfshin vendosja e boti. Qeshni këtu. Nuk do të dyshoj. Më se shumti në krijimin e mëtejshëm të boti më ndihmuan shembujt e renditur poshtë faqes:

3. Si të krijoni serverin tuaj të clouds për 100 rubla
Pas shumë kërkimesh kuptova se komandën ‘npm’ nga figura lart i përket komandës së linjës. Komanda e linjës është kudo, por për ta ekzekutuar, duhet të instaloni NodePackageManager. Problemi ishte se unë programoja në PixelBook me ChromeOS. Nuk do ta kaloj këtu një bllok të madh rreth se si e kuptova Linux — për shumicën kjo është e kotë dhe e panevojshme. Nëse keni Windows ose MacBook, keni tashmë një konsolë.
Nëse e themi me fjalë të shkurtër, instalova Linux përmes Crostini.
Megjithatë, gjatë procesit kuptova se për të punuar në mënyrë të vazhdueshme me botin (dhe jo vetëm kur kompjuteri im është i ndezur) më nevojitet një server clouds. Zgjodha Shtova 100 rubla, blova serverin më të lirë Ubuntu (shiko imazhin).

4. Si të përgatitni serverin për të startuar botin
Pas kësaj kuptova që duhet të bëj një ndonjë folder në server, ku do të vendosja skedarin me tekstin e kodit. Për këtë, në konsolë (për ta hapur direkt në faqe përmes butonit “Hap konsolën”) shkrova
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmMë vjen mirë që në këtë pikë të konfiguroni lidhjen me serverin përmes konsolës suaj. Ja Kjo do të lejojë të punoni me serverin drejtpërdrejt përmes konsolës së kompjuterit tuaj.
5. Si të shkruani kodin e boti të parë.
Dhe tani është një hap i thjeshtë për mua. Çdo program është thjesht rreshta teksti. Mund t'i shkruani kudo, t'i ruani me zgjedhjen e duhur dhe mbaron. Je i shkëlqyer. Unë përdora , por të vërtetë, mund ta shkruani thjesht në bllokun standard. E rëndësishme është të ruani pastaj skedarin me zgjedhjen e duhur. Ky është si të shkruani tekst në Word dhe ta ruani.
Bëra një skedar të ri, ku ngelja kodo nga shembulli në faqen telegraf dhe e ruajta në skedarin index.js (nuk është aspak e detyrueshme ta quani skedarin kështu, por kështu është e zakonshme). E rëndësishme — në vend të BOT_TOKEN, vendosni çelësin tuaj API nga pika e dytë.
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Mirësevini!'))
bot.help((ctx) => ctx.reply('Më dërgoni një ngjitëse'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hej aty'))
bot.launch()6. Si të ngarkoni kodin në server përmes github
Tani duhet të ngarkoja ndonjë mënyrë këtë kod në server dhe ta filloja atë. Për mua, kjo ishte një sfidë. Si rezultat, pas shumë mundimesh, kuptova se ishte më e lehtë të krijoja një skedë në github, e cila lejonte të përditësoja kodin me anë të komandës në konsol. Dhe krijova , ku ngarkova skedën. Pas kësaj, më duhej të kuptoja sesi të konfigurija ngarkimin e skedave nga llogaria ime (e hapur!) në server në dosjen bot (nëse ndonjëherë dilni prej saj - thjesht shkruani cd bot).
7. Si të ngarkoni skedat në server përmes github-it ç.2
Më nevojitej të instaloja në server programin që do të ngarkonte skedat nga git. E instalova git në server, duke shkruar në konsolë
apt-get install gitPas kësaj, më duhej të konfigurija ngarkimin e skedave. Për këtë, shkrova në komandën e linjës
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Vendosa të injoroja këtë problem.
Dhe për të ngarkuar bibliotekën telegraf, e cila e kërkojmë në rreshtin e parë të kodit, shkruani në konsolë komandën.
npm install telegraf8. Si të nisim boten
Për këtë, duke qenë në dosjen me skedën (për të kaluar nga një dosje në tjetër përmes konsolës - kryeni komandën e formatit cd bot Për të siguruar që jeni aty ku duhet, mund të shkruani komandën që do të tregojë në konsolë të gjitha skedat dhe dosjet që ndodhen aty ls -a
Për të nisur, shkrova në konsolë
node index.js
Nëse nuk ka ndonjë gabim - gjithçka është në rregull, bota funksionon. Kërkoni për të në telegram. Nëse ka një gabim - përdorni njohuritë tuaja nga pika 1.
9. Si të nisim botin në mënyrë të heshtur
Mjaft shpejt do të kuptoni se bota funksionon vetëm kur ju jeni vetë në konsolë. Për të zgjidhur këtë problem, përdora komandën
screenPas kësaj, do të shfaqet një ekran me një farë teksti. Kjo do të thotë se gjithçka është në rregull. Jeni në serverin virtual në serverin cloud. Për të kuptuar më mirë se si funksionon gjithçka - . Thjesht hyni në dosjen tuaj dhe shkruani komandën për nisjen e botës
node index.js10. Si funksionon bota dhe si ta zgjerojmë funksionalitetin e saj
Çfarë bën bota jonë nga shembulli? Ajo mund
bot.start((ctx) => ctx.reply('Welcome!'))të thotë "Welcome!" në momentin e nisjes (provoni të ndryshoni tekstin)
bot.help((ctx) => ctx.reply('Send me a sticker'))si përgjigje ndaj komandës standarde /help të dërgojë mesazhin "Send me a sticker"
bot.on('sticker', (ctx) => ctx.reply(''))si përgjigje ndaj një sticker të dërgojë miratimin
bot.hears('hi', (ctx) => ctx.reply('Hey there')) për të përgjigjur "Hey there", nëse e shkruajnë 'hi'
bot.launch()

Nëse e shikoni kodin në , do të kuptoni shpejt se nuk jam larg këtij funksionaliteti. Ajo që përdoret aktivisht është funksioni ctx.replyWithPhoto Ai lejon dërgimin e një fotoje ose gif-i të caktuar si përgjigje ndaj një teksti të caktuar.
Një pjesë e rëndësishme e kodit ishte e shkruar nga fëmijë të moshës 11-13 vjeçare, të cilëve u dhashë qasje në robot. Ata sollën përdorimet e tyre. Mendoj se është e lehtë të përcaktohet se cila pjesë është bërë prej tyre.
Për shembull, në mesazhin "jake" vjen një gif me një personazh të njohur nga kartoni Adventure Time.

Për të vazhduar zhvillimin e robotit, për ta lidhur tastierën, duhet të shikoni shembujt, për shembull,
11. Si të përditësoni kodin dhe të ri-nisni robotin
Mos harroni se duhet të përditësoni kodin jo vetëm në github, por edhe në server. Ta bëni këtë është e thjeshtë — ndaloni robotin (shtypni ctrl+c),
— shkruani në konsolë, duke qenë në folderin përkatës, git pull
— përsëri nisni robotin me komandën node index.js
END
Shumë gjëra, të përshkruara në këtë dokument, do të jenë super të dukshme për programuesit e avancuar. Megjithatë, kur unë përpiqesha të kalojë një hendek për në botën e robotëve, më mungonte shumë një guidë e tillë. Një guidë, në të cilën nuk kalohen gjërat e dukshme dhe të thjeshta për çdo specialist IT.
Në të ardhmen planifikoj të shkruaj një postim rreth se si të krijoni aplikacionin tuaj të parë në ReactNative në atë stil, regjistrohuni!
Burimi: habr.com
