Do IT světa jsem se ponořil teprve před třemi týdny. Opravdu, před třemi týdny jsem ani nechápal syntaxi HTML a seznámení se s programovacími jazyky končilo školním programem v Pascale před deseti lety. Rozhodl jsem se však jet na IT tábor, kde by pro děti bylo fajn vytvořit bota. Rozhodl jsem se, že to pravděpodobně nebude tak obtížné.
Tím začala dlouhá cesta, během které jsem:
- zprovoznil cloudový server s Ubuntu,
- zaregistroval se na GitHub,
- naučil se základní syntaxi JavaScriptu,
- přečetl jsem hromadu článků v angličtině a ruštině,
- konečně jsem udělal bota,
- napsal jsem konečně tento článek.
Výsledný produkt vypadal přibližně takto:

Řeknu to hned, je to článek pro začátečníky — abyste prostě pochopili, jak dělat základní věci od samého začátku.
A také — pro pokročilé programátory — prostě aby se trochu zasmáli.
1. Jak psát kód v JS?
Chápal jsem, že bych měl nejprve pochopit syntaxi jazyka. Výběr padl na JavaScript, jednoduše proto, že dalším krokem pro mě bylo vytvoření aplikace v ReactNative. Začal jsem s na Codecademy a byl jsem nadšený. Prvních 7 dní zdarma. Skutečné projekty. Doporučuji. Učení mi zabralo asi 25 hodin. Ve skutečnosti by se ale hodně z toho dalo použít. Takto vypadá struktura kurzu a podrobně první blok.

2. Jak zaregistrovat bota?
Na začátku mi velmi pomohl tento z blogu jakéhosi Arčakova. Vysvětluje úplné základy. Ale to hlavní, co tam je — to je návod na registraci bota. Lepší už to nenapíšu, a protože to je ta nejsnadnější část, jednoduše napíšu podstatu. Je potřeba vytvořit bota a získat jeho API. To se dělá přes jiného bota — @BotFather. Najděte ho v telegramu, napište mu, projděte se jednoduchým procesem a získejte (uložte!) API klíč (to je soubor čísel a písmen). Ten mi později pomohl.

3. Jak vypadá kód bota?
Po dlouhém studiu článků jsem zjistil, že bych měl použít nějakou knihovnu (externí kód ve formátu modulu), abych se nemusel trápit s učením API telegramu a psaním velkých kusů kódu od nuly. Našel jsem framework , který bylo potřeba nějak připojit k něčemu pomocí npm nebo yarn. Celkem takto jsem chápal, z čeho se skládá nasazení bota. Smějte se. Nebudu se zlobit. Nejvíce mi při následném vytváření bota pomohly příklady uvedené na konci stránky:

3. Jak vytvořit vlastní cloudový server za 100 korun
Po dlouhém hledání jsem zjistil, že příkaz 'npm' z obrázku výše se týká příkazového řádku. Příkazový řádek je všude, ale aby ho bylo možné použít, je potřeba nainstalovat NodePackageManager. Problém byl v tom, že jsem programoval na PixelBooku s ChromeOS. Tento velký blok o tom, jak jsem poznával Linux, zde vynechám — pro většinu z vás to bude prázdné a zbytečné. Pokud máte Windows nebo MacBook, už máte konzoli.
Jinými slovy, nainstaloval jsem Linux přes Crostini.
Během procesu jsem si ale uvědomil, že pro trvalý provoz bota (nejen když mám zapnutý počítač) potřebuji cloudový server. Vybral jsem si Dodal jsem 100 korun, koupil nejlevnější server Ubuntu (viz obrázek).

4. Jak připravit server pro spuštění bota
Po tom jsem pochopil, že musím na serveru vytvořit nějakou složku, do které umístím soubor s textem kódu. K tomu jsem v konzoli (spouštím přímo na webu kliknutím na tlačítko «Otevřít konzoli») zadal
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmVřele doporučuji nastavit připojení k serveru přes svou konzoli. Tady je To vám umožní pracovat se serverem přímo přes konzoli vašeho počítače.
5. Jak napsat kód prvního bota.
A teď pro mě velké odhalení. Jakýkoli program — to jsou prostě řádky textu. Můžete je zadat kamkoliv, uložit s potřebnou příponou a hotovo. Jste skvělí. Používal jsem , ale ve skutečnosti je možné psát jen v obyčejném notepadu. Hlavní je pak uložit soubor s potřebnou příponou. Je to jako napsat text ve Wordu a uložit.
Vytvořil jsem nový soubor, do kterého jsem vložil kód z příkladu na stránce telegraf a uložil ho jako index.js (opravdu není nutné nazývat soubor takto, ale je to obvyklé). Důležité je — místo BOT_TOKEN vložte svůj API klíč z druhého bodu.
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Vítejte!'))
bot.help((ctx) => ctx.reply('Pošlete mi nálepku'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('ahoj', (ctx) => ctx.reply('Ahoj'))
bot.launch()6. Jak nahrát kód na server přes github
Nyní jsem musel nějak nahrát tento kód na server a spustit ho. Pro mě to bylo výzvou. Nakonec, po dlouhém snažení, jsem si uvědomil, že bude jednodušší vytvořit soubor na githubu, který umožňuje aktualizovat kód pomocí příkazu v konzoli. Zaregistroval jsem si účet na a udělal , kam jsem nahrál soubor. Poté jsem musel pochopit, jak nastavit nahrávání souborů z mého (otevřeného!) účtu na server do složky bot (pokud jste z ní náhodou vyšli — stačí napsat cd bot).
7. Jak nahrát soubory na server přes github část 2
Musel jsem na server nainstalovat program, který bude nahrávat soubory z gitu. Nainstaloval jsem git na server zadáním v konzoli
apt-get install gitPoté jsem musel nastavit nahrávání souborů. K tomu jsem zadal do příkazového řádku
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Rozhodl jsem se tuto problém ignorovat.
Abych nahrál knihovnu telegraf, kterou vyžadujeme v první řádku kódu, zadejte do konzole příkaz.
npm install telegraf8. Jak spustit bota
K tomu, zatímco se nacházíte ve složce se souborem (abychom přecházeli mezi složkami přes konzoli — použijte příkaz formátu cd bot Abychom se ujistili, že jsme tam, kde máme být, můžeme zadat příkaz, který zobrazí v konzoli všechny soubory a složky, které tam leží ls -a
Pro spuštění jsem zadal do konzole
node index.js
Pokud není žádná chyba — je vše v pořádku, bot funguje. Hledejte ho na telegramu. Pokud je tam chyba — aplikujte své znalosti z 1 bodu.
9. Jak spustit bota na pozadí
Poměrně rychle pochopíte, že bot funguje jen tehdy, když sami sedíte v konzoli. Abych tuto problém vyřešil, použil jsem příkaz
screenPoté se objeví obrazovka s nějakým textem. To znamená, že vše je v pořádku. Jste na virtuálním serveru v cloudovém serveru. Abyste lépe porozuměli, jak to celé funguje — . Stačí vstoupit do své složky a zadat příkaz pro spuštění bota
node index.js10. Jak funguje bot a jak rozšířit jeho funkce
Co všechno umí náš bot z příkladu? Umí
bot.start((ctx) => ctx.reply('Welcome!'))říkat „Welcome!“ v momentě startu (zkuste změnit text)
bot.help((ctx) => ctx.reply('Send me a sticker'))v odpovědi na standardní příkaz /help poslat zprávu „Send me a sticker“
bot.on('sticker', (ctx) => ctx.reply(''))v odpovědi na samolepku posílat schválení
bot.hears('hi', (ctx) => ctx.reply('Hey there')) odpovídat „Hey there“, pokud mu někdo napíše ‘hi’
bot.launch()

Pokud se podíváte na kód na , rychle pochopíte, že jsem se od této funkčnosti příliš nevzdálil. Co se aktivně používá, je funkce ctx.replyWithPhoto Ta umožňuje posílat určený obrázek nebo gif jako odpověď na konkrétní text.
Významná část kódu byla napsána dětmi ve věku 11-13 let, kterým jsem dal přístup k botovi. Vložili své uživatelské případy. Myslím, že je snadné určit, která část byla vytvořena jimi.
Například na zprávu „jake“ přijde gifka s známou postavou z animovaného seriálu Adventure Time.

Abych pokračoval ve vývoji bota, je potřeba se podívat na příklady pro připojení klávesnice, například
11. Jak aktualizovat kód a restartovat bota
Nezapomeňte, že je třeba aktualizovat kód nejen na githubu, ale také na serveru. Je to jednoduché - zastavíme bota (stiskněte ctrl+c),
— zadáme do konzole, když jsme v cílové složce, git pull
— znovu spustíme bota příkazem node index.js
END
Mnoho věcí popsaných v tomto souboru bude pro pokročilé programátory super zřejmé. Nicméně když jsem se sám snažil najednou přeskočit propast do světa botů, velmi mi chyběl takový průvodce. Průvodce, ve kterém nejsou vynechány zřejmé a jednoduché věci pro každého IT specialistu.
V budoucnu plánuji příspěvek o tom, jak vytvořit svou první aplikaci v ReactNative ve stejném stylu, sledujte mě!
Zdroj: habr.com
