Do sveta IT som sa začal ponárať len pred tromi týždňami. Vážne, pred tromi týždňami som nerozumel ani syntaxi HTML a môj úvod do programovacích jazykov sa skončil školskými osnovami o Pascale spred 10 rokov. Rozhodol som sa však ísť do IT tábora, kde by bolo fajn deťom vyrobiť bota. Rozhodol som sa, že to nie je také ťažké.
Začala sa dlhá cesta, na ktorej som:
- nasadil cloudový server s Ubuntu,
- registrovaný na GitHub,
- naučili sa základnú syntax JavaScriptu,
- prečítať veľa článkov v angličtine a ruštine,
- konečne spravil robota,
- Konečne som napísal tento článok.
Konečný výsledok vyzeral asi takto:
Hneď poviem, že toto je článok pre začiatočníkov - len aby som pochopil, ako robiť základné veci od začiatku.
A tiež – pre pokročilých programátorov – len aby sa trochu zasmiali.
1. Ako napísať kód v JS?
Pochopil som, že stojí za to najskôr pochopiť syntax jazyka. Voľba padla na JavaScript, jednoducho preto, že ďalším krokom pre mňa bolo vytvorenie aplikácie v ReactNative. Začal som s
2. Ako zaregistrovať bota?
Toto mi na začiatku veľmi pomohlo
3. Ako vyzerá kód bota?
Po dlhom štúdiu článkov som si uvedomil, že stojí za to použiť nejakú knižnicu (kód tretej strany vo formáte modulov), aby som sa nemusel starať o štúdium Telegram API a vytváranie veľkých kusov kódu od začiatku. Našiel som rámec
3. Ako vytvoriť svoj vlastný cloudový server za 100 rubľov
Po dlhom hľadaní som si uvedomil, že príkaz 'npm' na obrázku vyššie odkazuje na príkazový riadok. Príkazový riadok je všade, ale aby ste ho mohli spustiť, musíte si nainštalovať NodePackageManager. Problém bol v tom, že som programoval na PixelBook s ChromeOS. Preskočím tu veľký blok o tom, ako som sa naučil Linux - pre väčšinu je prázdny a nepotrebný. Ak máte Windows alebo MacBook, konzolu už máte.
Stručne povedané, nainštaloval som Linux cez Crostini.
V tomto procese som si však uvedomil, že na to, aby robot fungoval neustále (a nielen vtedy, keď je môj počítač zapnutý), potrebujem cloudový server. vybral som si
4. Ako pripraviť server na spustenie bota
Potom som si uvedomil, že musím na serveri vytvoriť nejaký priečinok, do ktorého vložím súbor s textom kódu. Za týmto účelom som vstúpil do konzoly (spustiť priamo na webovej stránke pomocou tlačidla „Otvoriť konzolu“)
mkdir bot
bot - toto sa stalo názvom môjho priečinka. Potom som nainštaloval npm a Node.js, ktoré mi umožnia spúšťať kód zo súborov s rozlíšením *.js
sudo apt update
sudo apt install nodejs
sudo apt install npm
V tejto fáze dôrazne odporúčam nastaviť pripojenie k serveru prostredníctvom konzoly. Tu
5. Ako napísať kód pre svojho prvého bota.
Ale teraz je to pre mňa len objav. Akýkoľvek program sú len riadky textu. Môžu byť vložené kdekoľvek, uložené s požadovaným rozšírením a je to. Si krásna. použil som
Urobil som nový súbor, do ktorého som vložil kód z príkladu na stránke telegraf a uložil do súboru index.js (vo všeobecnosti nie je potrebné takto súbor pomenovať, ale je to zvykom). Dôležité – namiesto BOT_TOKEN vložte svoj kľúč API z druhého odseku.
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ým spôsobom nahrať tento kód na server a spustiť ho. Toto sa pre mňa stalo výzvou. V dôsledku toho som si po veľkom utrpení uvedomil, že bude jednoduchšie vytvoriť súbor na githube, ktorý vám umožní aktualizovať kód pomocou príkazu v konzole. Zaregistroval som si účet na
7. Ako nahrať súbory na server cez github časť 2
Potreboval som nainštalovať program na server, ktorý by stiahol súbory z git. Nainštaloval som git na server zadaním do konzoly
apt-get install git
Potom som potreboval nakonfigurovať nahrávanie súboru. Aby som to urobil, napísal som do príkazového riadku
git clone git://github.com/b0tank/bot.git bot
Výsledkom bolo, že všetko z projektu bolo nahrané na server. Chybou v tejto fáze bolo, že som v podstate vytvoril druhý priečinok v už existujúcom priečinku botov. Adresa súboru vyzerala ako */bot/bot/index.js
Rozhodol som sa tento problém ignorovať.
A na načítanie knižnice telegraf, ktorú požadujeme v prvom riadku kódu, zadajte príkaz do konzoly.
npm install telegraf
8. Ako spustiť bota
Ak to chcete urobiť, v priečinku so súborom (ak sa chcete presunúť z priečinka do priečinka prostredníctvom konzoly, spustite príkaz format cd bot
Aby ste sa uistili, že ste tam, kde potrebujete byť, môžete zadať príkaz, ktorý zobrazí v konzole všetky súbory a priečinky, ktoré sa tam nachádzajú ls -a
Na začiatok som vstúpil do konzoly
node index.js
Ak nie je žiadna chyba, všetko je v poriadku, robot funguje. Hľadajte ho v telegrame. Ak sa vyskytne chyba, aplikujte svoje znalosti z bodu 1.
9. Ako spustiť bota na pozadí
Pomerne rýchlo si uvedomíte, že robot funguje iba vtedy, keď sami sedíte v konzole. Na vyriešenie tohto problému som použil príkaz
screen
Potom sa zobrazí obrazovka s nejakým textom. To znamená, že je všetko v poriadku. Nachádzate sa na virtuálnom serveri na cloudovom serveri. Aby ste lepšie pochopili, ako to všetko funguje -
node index.js
10. Ako robot funguje a ako rozšíriť jeho funkčnosť
Čo dokáže náš vzorový robot? Vie
bot.start((ctx) => ctx.reply('Welcome!'))
povedzte "Vitajte!" v momente spustenia (skúste zmeniť text)
bot.help((ctx) => ctx.reply('Send me a sticker'))
ako odpoveď na štandardný príkaz /help pošlite správu „Pošli mi nálepku“
bot.on('sticker', (ctx) => ctx.reply(''))
poslať súhlas ako odpoveď na nálepku
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
odpovedzte „Ahoj“, ak mu napíšu „ahoj“.
bot.launch()
Ak sa pozriete na kód na ctx.replyWithPhoto
Umožňuje vám poslať zadanú fotografiu alebo gif ako odpoveď na konkrétny text.
Významnú časť kódu napísali deti vo veku 11-13 rokov, ktorým som umožnil prístup k botom. Vstúpili do svojho používateľského prípadu. Myslím, že je ľahké povedať, ktorý diel vyrobili oni.
Napríklad správa „Jake“ dostane GIF so slávnou postavou z animovaného filmu Adventure Time.
Ak chcete robota ďalej rozvíjať, musíte pripojiť klávesnicu, pozrite si príklady, napr.
11. Ako aktualizovať kód a reštartovať bota
Nezabudnite, že je potrebné aktualizovať kód nielen na githube, ale aj na serveri. Je to jednoduché - zastavte robota (stlačte ctrl+c),
- vstúpiť do konzoly v cieľovom priečinku, git pull
— príkazom opäť spustíme robota node index.js
KONIEC
Mnohé z vecí popísaných v tomto súbore budú pre pokročilých programátorov úplne zrejmé. Keď som sa však sám pokúšal jedným ťahom preskočiť cez priepasť do sveta botov, takýto návod mi veľmi chýbal. Sprievodca, ktorému neuniknú veci, ktoré sú samozrejmé a jednoduché pre každého IT špecialistu.
V budúcnosti plánujem príspevok o tom, ako vytvoriť svoju prvú aplikáciu na ReactNative v rovnakom štýle, prihláste sa na odber!
Zdroj: hab.com