Do světa IT jsem se začal ponořit teprve před třemi týdny. Vážně, před třemi týdny jsem nerozuměl ani syntaxi HTML a seznámení s programovacími jazyky skončilo 10 let starým sylabusem Pascalu. Rozhodl jsem se však jet na IT tábor, pro jehož děti by bylo fajn vyrobit bota. Myslel jsem, že to není tak těžké.
Tím začala dlouhá cesta, na které jsem:
- nasadil cloudový server s Ubuntu,
- registrovaný na GitHubu,
- naučili se základní syntaxi JavaScriptu,
- přečíst spoustu článků v angličtině a ruštině,
- konečně udělal bota
- konečně napsal tento příspěvek.
Konečný výsledek vypadal takto:
Hned řeknu, že je to článek pro začátečníky - jen proto, abyste pochopili, jak dělat základní věci od samého začátku.
A také – pro pokročilé programátory – jen aby se trochu zasmáli.
1. Jak napsat kód v JS?
Pochopil jsem, že stojí za to nejprve pochopit syntaxi jazyka. Volba padla na JavaScript, jednoduše proto, že dalším krokem pro mě bylo vytvoření aplikace v ReactNative. Začal jsem s
2. Jak zaregistrovat robota?
V začátcích mi hodně pomohl
3. Jak vypadá kód bota?
Po dlouhém studiu článků jsem si uvědomil, že stojí za to použít nějakou knihovnu (kód třetí strany ve formátu modulu), abych netrpěl studiem telegramového API a vytvářením velkých kusů kódu od začátku. Našel jsem rámec
3. Jak vytvořit svůj vlastní cloudový server za 100 rublů
Po dlouhém hledání jsem přišel na to, že příkaz 'npm' z obrázku výše odkazuje na příkazový řádek. Příkazový řádek je všude, ale abyste jej mohli spustit, musíte si nainstalovat NodePackageManager. Problém byl v tom, že jsem programoval na PixelBooku s ChromeOS. Přeskočím zde velký blok o tom, jak jsem se s Linuxem seznámil – pro většinu je to prázdné a zbytečné. Pokud máte Windows nebo MacBook, konzoli již máte.
Stručně řečeno, nainstaloval jsem Linux přes Crostini.
Během toho jsem si však uvědomil, že aby bot fungoval neustále (a nejen když je můj počítač zapnutý), potřebuji cloudový server. Vybírám si
4. Jak připravit server na spuštění bota
Poté jsem si uvědomil, že musím na serveru vytvořit nějakou složku, do které dám soubor s textem kódu. Za tímto účelem jsem řídil v konzole (spustit přímo na webu pomocí tlačítka „Otevřít konzoli“)
mkdir bot
bot - toto se stalo názvem mé složky. Poté jsem nainstaloval npm a Node.js, které mi umožní později spouštět kód ze souborů *.js
sudo apt update
sudo apt install nodejs
sudo apt install npm
Velmi doporučuji v této fázi nastavit připojení k serveru prostřednictvím vaší konzole. Tady
5. Jak nakódovat prvního bota.
Teď je to pro mě jen zjevení. Jakýkoli program jsou jen řádky textu. Můžete je vozit kamkoli, uložit s požadovaným nástavcem a je to. Jsi krásná. Použil jsem
Udělal jsem nový soubor, do kterého jsem vložil kód z příkladu na stránce telegraf a uložil do souboru index.js (soubor tak vůbec není nutné pojmenovávat, ale akceptuje se to). Důležité – místo BOT_TOKEN vložte svůj klíč API z druhého odstavce.
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. Jak poslat kód na server přes github
Nyní jsem musel nějak nahrát tento kód na server a spustit jej. Pro mě se to stalo výzvou. Nakonec jsem si po dlouhém utrpení uvědomil, že by bylo jednodušší vytvořit soubor na githubu, který vám umožní aktualizovat kód pomocí příkazu v konzole. Zaregistroval jsem si účet u
7. Jak nahrát soubory na server přes github část 2
Potřeboval jsem dát na server program, který by stahoval soubory z git. Nainstaloval jsem git na server zadáním
apt-get install git
Poté jsem potřeboval nastavit nahrávání souborů. Abych to udělal, vjel jsem do příkazového řádku
git clone git://github.com/b0tank/bot.git bot
V důsledku toho bylo vše z projektu nahráno na server. Chybou v této fázi bylo, že jsem v podstatě vytvořil druhou složku uvnitř již existující složky bot. Adresa souboru vypadala jako */bot/bot/index.js
Rozhodl jsem se tento problém ignorovat.
A pro načtení knihovny telegraf, kterou požadujeme na prvním řádku kódu, zadejte příkaz do konzole.
npm install telegraf
8. Jak spustit robota
Chcete-li to provést, když jste ve složce se souborem (chcete-li se přesunout ze složky do složky prostřednictvím konzoly, spusťte příkaz format cd bot
Abyste se ujistili, že jste tam, kde potřebujete, můžete zadat příkaz, který zobrazí v konzole všechny soubory a složky, které tam jsou ls -a
Pro začátek jsem vstoupil do konzole
node index.js
Pokud není žádná chyba, je vše v pořádku, robot funguje. Hledejte ho v telegramu. Pokud se vyskytne chyba, použijte své znalosti z bodu 1.
9. Jak spustit robota na pozadí
Rychle si uvědomíte, že robot funguje pouze tehdy, když sami sedíte v konzole. K vyřešení tohoto problému jsem použil příkaz
screen
Poté se objeví obrazovka s nějakým textem. To znamená, že je vše v pořádku. Nacházíte se na virtuálním serveru na cloudovém serveru. Abychom lépe pochopili, jak to všechno funguje -
node index.js
10. Jak bot funguje a jak rozšířit jeho funkčnost
Co umí náš bot z příkladu? Může
bot.start((ctx) => ctx.reply('Welcome!'))
řekněte "Vítejte!" v okamžiku startu (zkuste změnit text)
bot.help((ctx) => ctx.reply('Send me a sticker'))
v reakci na standardní příkaz /help pošlete zprávu "Pošli mi nálepku"
bot.on('sticker', (ctx) => ctx.reply(''))
odeslat souhlas jako odpověď na nálepku
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
odpovězte „Ahoj“, pokud napíšou „ahoj“
bot.launch()
Pokud se podíváte na kód na ctx.replyWithPhoto
Umožňuje odeslat danou fotografii nebo gif jako odpověď na určitý text.
Významnou část kódu napsaly děti ve věku 11-13 let, kterým jsem umožnil přístup k botovi. Zadali své uživatelské případy. Myslím, že je snadné říct, kterou část udělali oni.
Například GIF se slavnou postavou z animovaného filmu Adventure Time přichází ke zprávě „jake“.
Pro další vývoj robota je potřeba připojit klávesnici, viz příklady, např.
11. Jak aktualizovat kód a restartovat bota
Nezapomeňte, že musíte aktualizovat kód nejen na githubu, ale také na serveru. Je to snadné - zastavte robota (stiskněte ctrl + c),
- vstoupit do konzoly v cílové složce, git pull
- restartujte robota příkazem node index.js
KONEC
Mnoho věcí popsaných v tomto souboru bude pro pokročilé programátory naprosto zřejmé. Když jsem se však sám pokoušel skočit přes propast do světa botů na jeden zátah, takový průvodce mi opravdu chyběl. Průvodce, kterému neuniknou samozřejmé a jednoduché věci pro žádného IT specialistu.
V budoucnu plánuji příspěvek o tom, jak udělat svou první aplikaci na ReactNative ve stejném stylu, přihlaste se!
Zdroj: www.habr.com