Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

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:

Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

Ř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 kurzem 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.

Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

2. Jak zaregistrovat bota?

Na začátku mi velmi pomohl tento this article 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.

Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

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 telegraf, 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:

Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

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 vscale.io Dodal jsem 100 korun, koupil nejlevnější server Ubuntu (viz obrázek).

Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

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 bot

bot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Vřele doporučuji nastavit připojení k serveru přes svou konzoli. Tady je příručka 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 Atom, 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 github a udělal nový projekt, 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 git

Poté 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 telegraf

8. 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

screen

Poté 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 — tady je článek. Stačí vstoupit do své složky a zadat příkaz pro spuštění bota

node index.js

10. 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()

Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

Pokud se podíváte na kód na github, 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.

Návod: Jak vytvořit jednoduchého bota pro Telegram v JS pro začátečníky v programování

Abych pokračoval ve vývoji bota, je potřeba se podívat na příklady pro připojení klávesnice, například odsud

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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster