Alustasin IT-maailma süvenemist vaid kolm nädalat tagasi. Ausalt öeldes, kolm nädalat tagasi ei mõistnud ma isegi HTML-i süntaksit ning mu tutvumine programmeerimiskeeltega piirdus kümme aastat tagasi kooliprogrammist saadud Pascaliga. Otsustasin siiski minna IT-laagrisse, kus lastel oleks kasulik luua bot. Mõtlesin, et see ei saa olla just nii keeruline.
Sellest algas pikk teekond, mille käigus ma:
- seadsin üles pilveserveri Ubuntu süsteemiga,
- registreerisin end GitHubis,
- õppisin JavaScripti põhiskeemi,
- lugesin hunniku artikleid inglise ja vene keeles,
- valmistasin lõpuks boti,
- kirjutasin lõpuks selle artikli.
Valmis tulemus nägi välja umbes nii:

Ütlen kohe, et see artikkel on algajatele — et aidata lihtsalt mõista, kuidas teha põhilisi asju nullpunktist.
Ja ka edasijõudnud programmeerijatele — lihtsalt natuke neid naerutada.
1. Kuidas kirjutada koodi JS-is?
Mõistsin, et alguseks on kõige olulisem vähemalt keele süntaksiga natuke tutvuda. Otsustasin JavaScripti kasuks, lihtsalt seetõttu, et järgmine samm minu jaoks oli rakenduse loomine ReactNative'i peal. Alustasin Codecademy'l õppimine jättis mulle suurepärase mulje. Esimene 7 päeva tasuta. Reaalsed projektid. Soovitan. Selle läbimine võttis umbes 25 tundi. Tegelikult ei läinud kaugeltki kõik vajalikuks. Nii umbes näeb kursuse struktuur välja ja siin on üksikasjalikult esimene blokk.

2. Kuidas registreerida boti?
Alguses aitas mind väga see blogi autorilt Arčakovi. Ta seletab algust väga hästi. Kuid peamine, mis seal on — see on juhend boti registreerimiseks. Paremini ma ei oska kirjutada ja kuna see on kõige lihtsam osa, kirjutan lihtsalt kokkuvõtte. Tuleb luua bott ja saada tema API. See toimub läbi teise boti — @BotFather. Leidke ta Telegramist, kirjutage talle, käige läbi lihtne protsess ja saage (salvestage!) API-võti (see on numbrite ja tähtede kogum). See tuli mulle hiljem kasuks.

3. Kuidas botikood välja näeb?
Pärast pikki artiklite uurimisi mõistsin, et tasub kasutada mingit teeki (kolmanda osapoole koodi mooduliformaadis), et mitte piinelda Telegrami API õppimise ja suure kooditüki nullist loomisega. Leidsin raamistikku , mida pidi kuidagi ühendama millegagi npm või yarn'i abil. Täpselt nii ma siis mõistsin, kuidas bot'i ülesseadmine käib. Siin naerda. Ma ei solvu. Kõige rohkem aitas mind bot'i hilisemal loomisel allpool lehe peal toodud näited:

3. Kuidas luua oma pilveserver 100 rubla eest
Pika otsimise järel sain aru, et pildil näidatud ‘npm’ käsk kuulub käsureale. Käsurida on igal pool, kuid selle täitmiseks peab olema paigaldatud NodePackageManager. Probleem oli aga selles, et programmeerisin PixelBook'il ChromeOS'is. Jätan siia kõrvale suure osa oma Linux'i avastamisest — enamikule on see tühi ja mittevajalik. Kui sul on Windows või MacBook, siis on sul juba konsool.
Kokkuvõttes, installisin Linux'i Crostini kaudu.
Kuid protsessi käigus sain aru, et bot'i pidevaks tööks (mitte ainult siis, kui mu arvuti on sisse lülitatud) on mul vaja pilveserverit. Valisin Sain 100 rubla ja ostsin kõige odavama Ubuntu serveri (vt. pilti).

4. Kuidas valmistada server bot'i käivitamiseks ette
Pärast seda sain aru, et serveris tuleb teha kaust, kuhu ma panen koodi faili. Selleks valisin konsoolis (ava otse veebisaidilt nupuga „Ava konsool”) järgmise käsu
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmSoovitan väga sel etapil seadistada ühendus serveriga läbi oma konsooli. Siin on See võimaldab töötada serveriga otse oma arvuti konsoolist.
5. Kuidas kirjutada oma esimest boti koodi.
Nüüd on see minu jaoks avastus. Iga programm on lihtsalt tekstiridu. Need saab sisestada kuhu iganes, salvestada soovitud laiendiga ja ongi kõik. Sa oled suurepärane. Ma kasutasin , kuid tõeliselt, lihtsasti saab kirjutada ka tavalises märkmetes. Peamine on hiljem salvestada fail soovitud laiendiga. See on nagu teksti kirjutamine Wordis ja salvestamine.
Loomisin uue faili, kuhu panin koodi näite lehelt telegraf ja salvestasin faili nimega index.js (pole üldse kohustuslik fail nii nimetada, kuid see on tavaks). Oluline on see, et BOT_TOKEN tuleks asendada oma API võtmega, mis saadakse teises punktis.
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Tere tulemast!'))
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 GitHubi
Nüüd pidi ma kuidagi selle koodi serverisse saama ja selle käivitama. See oli minu jaoks väljakutse. Lõpuks, pärast pikki vaevarikkaid üritusi, sain aru, et oli lihtsam luua fail GitHubis, mis võimaldab koodi uuendada käsu kaudu terminalis. Loodasin konto ja tegin , kuhu ma faili laadisin. Pärast seda pidin aru saama, kuidas seada üles failide laadimine minu (avatud!) konto kaudu serverisse kausta bot (kui te olete sellest väljunud — kirjutage lihtsalt cd bot).
7. Kuidas laadida faile serverisse läbi GitHubi osa 2
Pidi ma panema serverisse programmi, mis laadib faile Git-ilt. Paigaldasin Git serverisse, sisestades terminalisse
apt-get install gitPärast seda pidin ma seadma failide laadimise. Selleks sisestasin käsureale
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Otsustasin sellest probleemist üle vaadata.
Ja et laadida teegid, mida me koodi esimeses reas küsime, sisestage konsooli käsk.
npm install telegraf8. Kuidas bot tööle panna
Selleks, et olla kaustas, kus fail asub (kaustast kausta liikuda, täitke käsk, mis on vormingus cd bot Veendumiseks, et oled õiges kohas, saab sisestada käsu, mis kuvab konsoolis kõik failid ja kaustad, mis seal on ls -a
Käivitamiseks sisestasin konsooli
node index.js
Kui viga ei esine — kõik on hästi, bot töötab. Otsige teda Telegramis. Kui vea olemasolu — rakendage oma teadmisi punktist 1.
9. Kuidas bot tööle panna taustal
Te mõistate kiiresti, et bot töötab ainult seni, kuni viibite konsoolis. Selle probleemi lahendamiseks olen kasutanud käsku
ekraanPärast seda kuvatakse ekraan mingi tekstiga. See tähendab, et kõik on hästi. Olete virtuaalses serveris pilveserveris. Parema arusaamise saamiseks sellest, kuidas see kõik töötab — . Lihtsalt minge oma kausta ja sisestage bot'i käivitamise käsk
node index.js10. Kuidas bot töötab ja kuidas laiendada selle funktsionaalsust
Mida oskab meie näidisbot? Ta oskab
bot.start((ctx) => ctx.reply('Tere tulemast!'))ütle «Tere tulemast!» käivitamise hetkel (proovi teksti muuta)
bot.help((ctx) => ctx.reply('Saada mulle kleebis'))standardse käsu /help vastusena saata sõnum «Saada mulle kleebis»
bot.on('sticker', (ctx) => ctx.reply(''))kleebisele vastusena saata heakskiitu
bot.hears('hi', (ctx) => ctx.reply('Tere')) vastata «Tere», kui talle kirjutatakse ‘hi’
bot.launch()

Kui vaatate koodi aadressil , siis mõistate kiiresti, et ei ole kaugele sattunud sellest funktsionaalsusest. Aktiivselt kasutatakse funktsiooni ctx.replyWithPhoto See võimaldab saata määratud foto või gif'i vastusena kindlale tekstile.
Oluline osa koodist oli kirjutatud 11-13-aastaste laste poolt, kellele ma andsin boti juurde ligipääsu. Nad esitasid oma kasutusjuhtumid. Arvan, et on lihtne määrata, milline osa on kirjutatud nende poolt.
Näiteks, kui saadetakse sõnum «jake», saadetakse gif tuntud tegelasest multifilmist Adventure Time.

Boti edasiviimiseks tuleb klaviatuuri ühendamiseks vaadata näite, näiteks
11. Kuidas koodi uuendada ja boti taaskäivitada
Ärge unustage, et koodi tuleb uuendada mitte ainult github'is, vaid ka serveris. Seda on lihtne teha — peatame boti (vajutage ctrl+c),
— sisestame konsoolis, olles sihtkaustas, git pull
— taaskäivitame boti käsuga node index.js
LÕPP
Palju asju, mis on selles failis kirjeldatud, on edasijõudnud programmeerijatele ülimalt ilmsed. Kuid kui ma proovisin ühel korral astuda sammu botide maailma, tundsin ma väga tugevat vajadust sellise juhendi järele. Juhendi, kus ei jäeta kõrvale ilmselgeid ja igale IT-spetsialistile lihtsaid asju.
Tulevikus plaanin postitust, kuidas teha oma esimest rakendust ReactNative'i stiilis, jälgige!
Allikas: habr.com
