Olen IT-maailma sukelduma hakanud vaid kolm nädalat tagasi. Tõsiselt, kolm nädalat tagasi ei mõistnud ma isegi HTML-i süntaksit ja kokkupuude programmeerimiskeeltega piirdus kümne aasta taguse Pascaliga. Otsustasin aga minna IT-laagrisse, kus lastel oleks tore teha bot. Olin kindel, et see pole tõenäoliselt nii keeruline.
Sellest algas pikk teekond, mille jooksul ma:
- seadsin üles pilveserveri Ubuntu'ga,
- registreerisin end GitHub'is,
- õppisin JavaScripti põhieeskirju,
- lugesin hunniku artikleid inglise ja vene keeles,
- valmistasin lõpuks boti,
- ja kirjutasin lõpuks selle artikli.
Lõpptulemus nägi välja umbes nii:

Ütlen kohe, et see artikkel on algajatele — et lihtsalt mõista, kuidas teha elementaarseid asju nullpunktist.
Ja veel — edasijõudnud programmeerijatele — lihtsalt, et neid natuke naerutada.
1. Kuidas kirjutada JS-koodi?
Mõistsin, et on hea alustada keele süntaksi õppimisest. Valik langes JavaScriptile, kuna järgmine samm minu jaoks oli rakenduse loomine ReactNative'is. Alustasin Codecademyl ja olin sellest väga vaimustunud. Esimesed 7 päeva tasuta. Reaalsed projektid. Soovitan. Selle läbimiseks kulus umbes 25 tundi. Tegelikult ei tulnud kõike sealt üleüldse tarvis. Nii näeb kursuse struktuur välja ja esimest plokki tutvustan üksikasjalikult.

2. Kuidas registreerida boti?
Alguses aitas mind väga see Arjakovi blogist. Ta seletab kõige alguse selgeks. Kuid kõige olulisem, mis seal on — see on juhend boti registreerimiseks. Ma ei saaks paremini kirjutada ja kuna see on kõige lihtsam osa, siis kirjeldan lihtsalt sisu. Tuleb luua bot ja saada selle API. See toimub teise boti kaudu — @BotFather. Leidke ta telegrammist, kirjutage talle, läbige lihtne protsess ja saage (salvestage!) API-võti (see on numbrite ja tähtede kogum). Mul läks see hiljem tarvis.

3. Kuidas näeb boti kood välja?
Pärast pikka artiklite uurimist mõistsin, et peaksin kasutama mõnda raamatukogu (kolmas osapoole kood mooduli vormis), et mitte piinelda Telegrami API õppimise ja suure koodi kirjutamisega nullist. Leidsin raamistiku , mille oli kuidagi vaja ühendata millegagi, kasutades npm-i või yarn-i. Umbes nii mõistsin ma siis, millest bot'i ülesseadmise protsess koosneb. Siin võib naerda. Ma ei solvu. Kõige rohkem aitas mind hilisemal bot'i loomisel alumises osas toodud näidendid:

3. Kuidas luua oma privaatne pilveserver 100 rubla eest
Pärast pikka otsimist sain aru, et pildil olev 'npm' käsk kuulub käsureale. Käsurida on igal pool, kuid selle käivitamiseks tuleb installida NodePackageManager. Probleem oli selles, et programmeerisin PixelBook-is, kus on ChromeOS. Jätan siia suure osa vahele, kuidas õppisin Linuxi — enamikule on see tühi ja tarbetu. Kui sul on Windows või MacBook, on sul juba terminal olemas.
Kui kahel sõnal kokku võtta, installisin Linuxi Crostini kaudu.
Kuid protsessi käigus sain aru, et bot'i pidevaks tööks (mitte ainult siis, kui minu arvuti on sisse lülitatud) on mul vaja pilveserverit. Valisin Lisasin 100 rubla, ostsin kõige odavama Ubuntu serveri (vt pilti).

4. Kuidas serverit bot'i käivitamiseks ette valmistada
Pärast seda sain aru, et serveris tuleb teha mingi kaust, kuhu panen koodifaili. Selleks tippisin terminalisse (avatakse otse saidil nupule 'Ava terminal' vajutades)
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmSoovitan tungivalt sellel hetkel seadistada serveriga ühendus oma terminali kaudu. Siin on See võimaldab töötada serveriga otse oma arvuti terminali kaudu.
5. Kuidas kirjutada esimese bot'i kood.
Ja nüüd avaneb mulle lihtsalt uks. Iga programm on lihtsalt tekstiread. Neid saab kirjutada kus iganes, salvestada vajaliku laiendiga ja kõik. Sa oled imeline. Kasutasin , kuid tegelikult on võimalik lihtsalt tavalises Notepad-is kirjutada. Peamine on hiljem salvestada fail vajaliku laiendiga. See on nagu teksti kirjutamine Word-is ja salvestamine.
Lõi uue faili, kuhu kleepisin koodi näidise lehelt telegraf ja salvestasin faili index.js (üldiselt pole vajalik faili nii nimetada, kuid nii on tavaks). Oluline on — BOT_TOKEN'i asemel sisestada oma API-võti teisest punktist.
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Tere!'))
bot.help((ctx) => ctx.reply('Saada mulle kleebis'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Tere'))
bot.launch()6. Kuidas laadida kood serverisse läbi github
Nüüd pidin ma selle koodi kuidagi serverisse üles laadima ja käivitama. See oli minu jaoks väljakutse. Lõpuks, pärast pikka vaeva, mõistsin, et on lihtsam luua fail GitHubis, mis võimaldab koodi värskendada käsu abil konsoolis. Loodsin konto ja lõin , kuhu üles laadisin faili. Pärast seda pidin aru saama, kuidas seadistada failide laadimist minu (avatud!) kontolt serverisse kausta bot (kui selle alt välja tulite — lihtsalt kirjutage cd bot).
7. Kuidas laadida faile serverisse läbi GitHubi, osa 2
Pidin serverisse installima programmi, mis laadib faile git’ist. Paigaldasin git’i serverisse, tippides konsooli
apt-get install gitPärast seda pidin seadistama failide laadimise. Selleks tippisin käsureale
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Otsustasin sellest probleemist mööda minna.
Ja et laadida alla telegrafi teeki, mida me küsime koodi esimeses reas, tippige konsooli käsk.
npm install telegraf8. Kuidas bot käivitada
Selleks, olles kaustas, kus fail asub (kaustast kausta liikuda konsoolis — täitke käsk kujul cd bot Kinnitamaks, et olete seal, kus vaja, saate tippida käsu, mis kuvab konsoolis kõik seal olevad failid ja kaustad. ls -a
Käivitamiseks tippisin konsooli
node index.js
Kui vigu pole, siis on kõik hästi, bot töötab. Otsige teda Telegramis. Kui viga on, rakendage oma teadmisi punktist 1.
9. Kuidas bot käivitada taustarežiimis
Soodsalt saate kiiresti aru, et bot töötab ainult siis, kui te ise konsoolis istute. Selle probleemi lahendamiseks kasutasin käsku
screenPärast seda ilmub ekraan, millel on mõni tekst. See tähendab, et kõik on hästi. Olete virtuaalses serveris pilveserveris. Parema arusaamise saamiseks, kuidas see kõik töötab — . Lihtsalt minge oma kausta ja tippige bot’i käivitamise käsk.
node index.js10. Kuidas bot töötab ja kuidas laiendada selle funktsionaalsust
Mida oskab meie näite bot? Ta oskab
bot.start((ctx) => ctx.reply('Welcome!'))öelda „Tere tulemast!” käivitamise hetkel (proovige teksti muuta)
bot.help((ctx) => ctx.reply('Send me a sticker'))vastusena tavalisest käsust \/help saata sõnum „Saada mulle kleebis”
bot.on('sticker', (ctx) => ctx.reply(''))vastusena kleebisele saata heakskiit
bot.hears('hi', (ctx) => ctx.reply('Hey there')) vastata „Hey there”, kui talle kirjutatakse ‘hi’
bot.launch()

Kui vaatate koodi , mõistate kiiresti, et ma ei ole sellest funktsionaalsusest kaugele läinud. See, mida aktiivselt kasutatakse, on funktsioon ctx.replyWithPhoto . See võimaldab saata soovitud foto või gif määratud teksti vastusena.
Signifikanth osa koodist on kirjutatud 11-13-aastaste laste poolt, kellele ma andsin juurdepääsu botile. Nad sisestasid oma kasutusjuhtumid. Arvan, et on kerge aru saada, milline osa on nende tehtud.
Näiteks, kui saadetakse sõnum "jake", tuleb gif tuntud tegelasest multikast Adventure Time.

Kuna botiga edasi minna, tuleb klaviatuuri ühendamiseks vaadata näiteid, näiteks
11. Kuidas koodi uuendada ja boti taaskäivitada
Ärge unustage, et tuleb koodi uuendada mitte ainult githubis, vaid ka serveris. Seda on lihtne teha — peatame boti (vajutades ctrl+c),
— sisestame konsooli, olles sihitud kaustas, git pull
— taaskäivitame boti käsuga node index.js
END
Paljud asjad, millest selles failis räägitakse, on edasijõudnud programmeerijatele ilmselged. Kuid kui ma üritasin ühe hooga hüpata robote maailma, siis puudus mul väga sarnane juhend. Juhend, kus ei jäeta tähelepanuta ilmseid ja lihtsaid asju igale IT-spetsialistile.
Tulevikus plaanin postitust selle kohta, kuidas luua oma esimest rakendust ReactNative's sellises stiilis, jälgige!
Allikas: habr.com
