Do IT sveta som sa začal ponárať len pred troma týždňami. Naozaj, pred troma týždňami som dokonca nerozumel syntaktickým pravidlám HTML a moje zoznámenie s programovacími jazykmi sa končilo v školskom programovaní na Pascale pred desiatimi rokmi. Rozhodol som sa však zúčastniť IT tábora, kde by bolo fajn vytvoriť bota. Usúdil som, že to zrejme nie je tak ťažké.
Tým sa začala dlhá cesta, v rámci ktorej som:
- nasadil cloudový server s Ubuntu,
- zaregistroval sa na GitHub,
- naučil sa základnú syntaxu JavaScriptu,
- prečítal tonu článkov v angličtine a ruštine,
- nakoniec vytvoril bota,
- napísal túto článok, konečne.
Konečný výsledok vyzeral asi takto:

Poviem rovno, toto je článok pre začiatočníkov — aby ste jednoducho porozumeli, ako robiť elementárne veci od úplného začiatku.
A tiež — pre pokročilých programátorov — len aby ich to trochu pobavilo.
1. Ako písať kód v JS?
Chápal som, že by som sa mal najprv aspoň okrajovo oboznámiť so syntaxi tohto jazyka. Výber padol na JavaScript, jednoducho preto, že ďalším krokom pre mňa bolo vytvoriť aplikáciu v ReactNative. Začal som s na Codecademy a bol som veľmi nadšený. Prvých 7 dní zadarmo. Skutočné projekty. Odporúčam. Trvanie bolo približne 25 hodín. V skutočnosti však ani zďaleka nie všetko z neho bolo užitočné. Takto približne vyzerá štruktúra kurzu a podrobne prvý blok.

2. Ako zaregistrovať bota?
Na začiatku mi veľmi pomohlo toto z blogu istého Arčakova. Rozoberá úplné základy. Ale čo je najdôležitejšie, je tam návod na registráciu bota. Lepšie to nenapíšem a pretože to je najjednoduchšia časť, len prenesiem podstatu. Musíte vytvoriť bota a získať jeho API. To sa robí prostredníctvom iného bota — @BotFather. Nájdite ho na Telegrame, napíšte mu, prejdite jednoduchým procesom a získajte (uložte!) API kľúč (to je súbor čísel a písmen). Ten sa mi neskôr hodil.

3. Ako vyzerá kód bota?
Po dlhom štúdiu článkov som pochopil, že by bolo rozumné použiť nejakú knižnicu (externý kód vo formáte modulu), aby som sa nemusel trápiť so štúdiom API Telegramu a vytváraním veľkých kusov kódu od nuly. Našiel som framework , ktorý bolo potrebné akýmkoľvek spôsobom pripojiť k niečomu pomocou npm alebo yarn. Takto som vtedy chápal, z čoho sa skladá nasadenie robota. Smiech tu. Nezazliekam. Najviac mi pri neskoršom vytváraní robota pomohli príklady uvedené na konci stránky:

3. Ako si vytvoriť vlastný cloudový server za 100 rubľov
Po dlhom hľadaní som pochopil, že príkaz ‘npm’ z obrázka vyššie patrí príkazovému riadku. Príkazový riadok je všade, ale aby ste ho mohli vykonať, musíte nainštalovať NodePackageManager. Problém bol v tom, že som programoval na PixelBooku s ChromeOS. Preskočím tu veľký blok o tom, ako som sa učil Linux — pre väčšinu je to prázdne a zbytočné. Ak máte Windows alebo MacBook, už máte konzolu.
Ak to zhrniem, nainštaloval som Linux cez Crostini.
Avšak počas procesu som si uvedomil, že pre trvalú prácu robota (a nie len keď mám zapnutý počítač) potrebujem cloudový server. Vybral som si Dodal som 100 rubľov, kúpil najlacnejší server Ubuntu (pozri obrázok).

4. Ako pripraviť server na spustenie robota
Po tom som pochopil, že na serveri musím vytvoriť nejakú zložku, do ktorej uložím súbor s textom kódu. Na to som v konzole (spúšťať priamo na stránke cez tlačidlo „Otvoriť konzolu“) napísal
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmVeľmi odporúčam v tomto kroku nastaviť pripojenie k serveru cez svoju konzolu. Tu je To umožní priamo pracovať so serverom cez konzolu vášho počítača.
5. Ako napísať kód prvého robota.
A teraz je to pre mňa jednoducho otvorenie. Akýkoľvek program — to sú len riadky textu. Môžete ich zadať kamkoľvek, uložiť s požadovaným rozšírením a hotovo. Ste úžasní. Použil som , ale naozaj, môžete len písať v štandardnom poznámkovom bloku. Hlavné je potom uložiť súbor s požadovaným rozšírením. Je to ako napísať text vo Worde a uložiť.
Vytvoril som nový súbor, do ktorého som vložil kód z príkladu na stránke telegraf a uložil ho ako index.js (vôbec nie je povinné takto nazývať súbor, ale je to zvykom). Je dôležité — namiesto BOT_TOKEN vložte svoj API kľúč z druhého bodu.
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. Ako nahrať kód na server cez github
Teraz som potreboval nejak dostať tento kód na server a spustiť ho. To sa pre mňa stalo výzvou. Nakoniec, po dlhých trápeniach, som pochopil, že najjednoduchšie bude vytvoriť súbor na github, ktorý umožňuje aktualizovať kód pomocou príkazu v príkazovom riadku. Zaregistroval som si účet na a vytvoril , kde som nahral súbor. Potom som potreboval pochopiť, ako nastaviť nahrávanie súborov z môjho (otvoreného!) účtu na server do priečinka bot (ak ste z neho náhodou zišli - jednoducho napíšte cd bot).
7. Ako nahrávať súbory na server cez github časť 2
Musel som na server nainštalovať program, ktorý bude nahrávať súbory z gitu. Nainštaloval som git na server, zadaním v príkazovom riadku
apt-get install gitPotom som potreboval nastaviť nahrávanie súborov. Na to som zadal do príkazového riadku
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Rozhodol som sa ignorovať tento problém.
Aby ste nainštalovali knižnicu telegraf, ktorú žiadame v prvom riadku kódu, zadajte do príkazového riadku príkaz.
npm install telegraf8. Ako spustiť bota
Na to, aby ste to spravili, nachádzajúc sa v priečinku so súborom (na prechádzanie medzi priečinkami cez príkazový riadok - vykonávajte príkaz v tvare cd bot Aby ste sa uistili, že ste tam, kde máte byť, môžete zadať príkaz, ktorý zobrazí v príkazovom riadku všetky súbory a priečinky, ktoré sú tam. ls -a
Na spustenie som zadal do príkazového riadku
node index.js
Ak nie je žiadna chyba - všetko je v poriadku, bot funguje. Hľadnite ho v telegrame. Ak je tam chyba - aplikujte svoje vedomosti z bodu 1.
9. Ako spustiť bota v pozadí
Relatívne rýchlo pochopíte, že bot funguje iba vtedy, keď ste sami v príkazovom riadku. Aby som tento problém vyriešil, použil som príkaz
screenPotom sa objaví obrazovka s nejakým textom. To znamená, že je všetko v poriadku. Ste na virtuálnom serveri na cloudovom serveri. Aby ste lepšie pochopili, ako to všetko funguje - . Len vojdite do svojej zložky a zadajte príkaz na spustenie bota.
node index.js10. Ako funguje bot a ako rozšíriť jeho funkčnosť
Čo teda náš bot z príkladu vie? Vie
bot.start((ctx) => ctx.reply('Welcome!'))povedať 'Welcome!' v okamihu štartu (skúste zmeniť text)
bot.help((ctx) => ctx.reply('Send me a sticker'))v odpovedi na štandardný príkaz /help poslať správu 'Send me a sticker'
bot.on('sticker', (ctx) => ctx.reply(''))v odpovedi na sticker poslať schválenie
bot.hears('hi', (ctx) => ctx.reply('Hey there')) odpovedať 'Hey there', ak mu napíšu 'hi'
bot.launch()

Ak sa pozriete na kód na , rýchlo pochopíte, že som sa od tejto funkčnosti veľmi nezdal. To, čo sa aktívne používa, je funkcia ctx.replyWithPhoto Umožňuje poslať zadané foto alebo gif ako odpoveď na konkrétny text.
Podstatná časť kódu bola napísaná deťmi vo veku 11-13 rokov, ktorým som dal prístup k botovi. Zadali svoje user-case. Myslím, že je ľahké určiť, ktorá časť bola urobená nimi.
Napríklad na správu „jake“ príde gifka so známou postavou z rozprávky Adventure Time.

Aby sme bota ďalej rozvíjali, je potrebné pripojiť klávesnicu a sledovať príklady, napríklad
11. Ako aktualizovať kód a reštartovať bota
Nezabúdajte, že kód je potrebné aktualizovať nielen na github, ale aj na serveri. Robiť to je jednoduché – zastavíme bota (stlačením ctrl+c),
– zadáme do konzoly, pričom sme v cielovej zložke, git pull
– znovu spustíme bota príkazom node index.js
END
Mnohé veci opísané v tomto súbore budú super očividné pre pokročilých programátorov. Avšak keď som sa pokúšal jedným skokom preskočiť priepasť do sveta botov, veľmi mi chýbala takáto príručka. Príručka, v ktorej nie sú vynechané očividné a jednoduché veci pre každého IT odborníka.
V budúcnosti plánujem príspevok o tom, ako vytvoriť svoju prvú aplikáciu na ReactNative v podobnom štýle, sledujte ma!
Zdroj: habr.com
