Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

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:

Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

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 kurz na Codecademy a bol veľmi potešený. Prvých 7 dní je zadarmo. Reálne projekty. Odporúčam. Dokončenie trvalo asi 25 hodín. V skutočnosti nie všetko bolo užitočné. Takto vyzerá štruktúra kurzu a prvý blok v detaile.

Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

2. Ako zaregistrovať bota?

Toto mi na začiatku veľmi pomohlo v tomto článku z blogu istého Archakova. Prežúva úplný začiatok. Ale hlavná vec, ktorá tam je, sú pokyny na registráciu robota. Neviem to napísať lepšie, a keďže toto je najjednoduchšia časť, napíšem len podstatu. Musíte vytvoriť robota a získať jeho API. To sa deje prostredníctvom iného robota - @BotFather. Nájdite ho na telegrame, napíšte mu, postupujte podľa jednoduchej cesty a získajte (uložte!) API kľúč (toto je sada čísel a písmen). Neskôr sa to hodilo.

Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

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 telegraf, ktoré bolo potrebné nejako spojiť s niečím pomocou npm alebo priadze. Zhruba takto som vtedy pochopil, v čom spočíva nasadenie bota. Smejte sa tu. neurazím sa. Pri následnej tvorbe bota mi najviac pomohli príklady v spodnej časti stránky:

Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

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 vscale.io Strávil som 100 rubľov a kúpil som si najlacnejší server Ubuntu (pozri obrázok).

Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

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 inštrukcie To vám umožní pracovať so serverom priamo cez konzolu vášho počítača.

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 Atóm, ale v skutočnosti stačí písať do bežného poznámkového bloku. Hlavná vec je uložiť súbor neskôr v požadovanom prípone. Je to ako napísať text vo Worde a uložiť ho.

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 GitHub a urobil nový projekt, kde som nahral súbor. Potom som potreboval zistiť, ako nastaviť nahrávanie súborov z môjho účtu (otvorený!) na server v priečinku bot (ak ste ho náhle opustili, stačí napísať cd bot).

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 - tu je clanok. Stačí prejsť do priečinka a zadať príkaz na spustenie robota

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

Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

Ak sa pozriete na kód na GitHub, potom rýchlo pochopíte, že som od tejto funkcie veľmi nezašiel. Čo sa aktívne využíva, je funkcia 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.

Sprievodca: ako vytvoriť jednoduchý telegramový robot v JS pre začiatočníka v programovaní

Ak chcete robota ďalej rozvíjať, musíte pripojiť klávesnicu, pozrite si príklady, napr. preto

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

Pridať komentár