Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

Do IT sveta som sa začal ponárať len pred troma týždňami. Naozaj, pred troma týždňami som dokonca nerozumel syntaktickým pravidlám HTML a moje zoznámenie s programovacími jazykmi sa končilo v školskom programovaní na Pascale pred desiatimi rokmi. Rozhodol som sa však zúčastniť IT tábora, kde by bolo fajn vytvoriť bota. Usúdil som, že to zrejme nie je tak ťažké.

Tým sa začala dlhá cesta, v rámci ktorej som:

  • nasadil cloudový server s Ubuntu,
  • zaregistroval sa na GitHub,
  • naučil sa základnú syntaxu JavaScriptu,
  • prečítal tonu článkov v angličtine a ruštine,
  • nakoniec vytvoril bota,
  • napísal túto článok, konečne.

Konečný výsledok vyzeral asi takto:

Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

Poviem rovno, toto je článok pre začiatočníkov — aby ste jednoducho porozumeli, ako robiť elementárne veci od úplného začiatku.

A tiež — pre pokročilých programátorov — len aby ich to trochu pobavilo.

1. Ako písať kód v JS?

Chápal som, že by som sa mal najprv aspoň okrajovo oboznámiť so syntaxi tohto jazyka. Výber padol na JavaScript, jednoducho preto, že ďalším krokom pre mňa bolo vytvoriť aplikáciu v ReactNative. Začal som s kurzom na Codecademy a bol som veľmi nadšený. Prvých 7 dní zadarmo. Skutočné projekty. Odporúčam. Trvanie bolo približne 25 hodín. V skutočnosti však ani zďaleka nie všetko z neho bolo užitočné. Takto približne vyzerá štruktúra kurzu a podrobne prvý blok.

Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

2. Ako zaregistrovať bota?

Na začiatku mi veľmi pomohlo toto tento článok z blogu istého Arčakova. Rozoberá úplné základy. Ale čo je najdôležitejšie, je tam návod na registráciu bota. Lepšie to nenapíšem a pretože to je najjednoduchšia časť, len prenesiem podstatu. Musíte vytvoriť bota a získať jeho API. To sa robí prostredníctvom iného bota — @BotFather. Nájdite ho na Telegrame, napíšte mu, prejdite jednoduchým procesom a získajte (uložte!) API kľúč (to je súbor čísel a písmen). Ten sa mi neskôr hodil.

Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

3. Ako vyzerá kód bota?

Po dlhom štúdiu článkov som pochopil, že by bolo rozumné použiť nejakú knižnicu (externý kód vo formáte modulu), aby som sa nemusel trápiť so štúdiom API Telegramu a vytváraním veľkých kusov kódu od nuly. Našiel som framework telegraf, ktorý bolo potrebné akýmkoľvek spôsobom pripojiť k niečomu pomocou npm alebo yarn. Takto som vtedy chápal, z čoho sa skladá nasadenie robota. Smiech tu. Nezazliekam. Najviac mi pri neskoršom vytváraní robota pomohli príklady uvedené na konci stránky:

Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

3. Ako si vytvoriť vlastný cloudový server za 100 rubľov

Po dlhom hľadaní som pochopil, že príkaz ‘npm’ z obrázka vyššie patrí príkazovému riadku. Príkazový riadok je všade, ale aby ste ho mohli vykonať, musíte nainštalovať NodePackageManager. Problém bol v tom, že som programoval na PixelBooku s ChromeOS. Preskočím tu veľký blok o tom, ako som sa učil Linux — pre väčšinu je to prázdne a zbytočné. Ak máte Windows alebo MacBook, už máte konzolu.

Ak to zhrniem, nainštaloval som Linux cez Crostini.

Avšak počas procesu som si uvedomil, že pre trvalú prácu robota (a nie len keď mám zapnutý počítač) potrebujem cloudový server. Vybral som si vscale.io Dodal som 100 rubľov, kúpil najlacnejší server Ubuntu (pozri obrázok).

Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

4. Ako pripraviť server na spustenie robota

Po tom som pochopil, že na serveri musím vytvoriť nejakú zložku, do ktorej uložím súbor s textom kódu. Na to som v konzole (spúšťať priamo na stránke cez tlačidlo „Otvoriť konzolu“) napísal

mkdir bot

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

sudo apt update
sudo apt install nodejs
sudo apt install npm

Veľmi odporúčam v tomto kroku nastaviť pripojenie k serveru cez svoju konzolu. Tu je príručka To umožní priamo pracovať so serverom cez konzolu vášho počítača.

5. Ako napísať kód prvého robota.

A teraz je to pre mňa jednoducho otvorenie. Akýkoľvek program — to sú len riadky textu. Môžete ich zadať kamkoľvek, uložiť s požadovaným rozšírením a hotovo. Ste úžasní. Použil som Atom, ale naozaj, môžete len písať v štandardnom poznámkovom bloku. Hlavné je potom uložiť súbor s požadovaným rozšírením. Je to ako napísať text vo Worde a uložiť.

Vytvoril som nový súbor, do ktorého som vložil kód z príkladu na stránke telegraf a uložil ho ako index.js (vôbec nie je povinné takto nazývať súbor, ale je to zvykom). Je dôležité — namiesto BOT_TOKEN vložte svoj API kľúč z druhého bodu.

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 dostať tento kód na server a spustiť ho. To sa pre mňa stalo výzvou. Nakoniec, po dlhých trápeniach, som pochopil, že najjednoduchšie bude vytvoriť súbor na github, ktorý umožňuje aktualizovať kód pomocou príkazu v príkazovom riadku. Zaregistroval som si účet na github a vytvoril nový projekt, kde som nahral súbor. Potom som potreboval pochopiť, ako nastaviť nahrávanie súborov z môjho (otvoreného!) účtu na server do priečinka bot (ak ste z neho náhodou zišli - jednoducho napíšte cd bot).

7. Ako nahrávať súbory na server cez github časť 2

Musel som na server nainštalovať program, ktorý bude nahrávať súbory z gitu. Nainštaloval som git na server, zadaním v príkazovom riadku

apt-get install git

Potom som potreboval nastaviť nahrávanie súborov. Na to som zadal do príkazového riadku

git clone git://github.com/b0tank/bot.git bot

В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js

Rozhodol som sa ignorovať tento problém.

Aby ste nainštalovali knižnicu telegraf, ktorú žiadame v prvom riadku kódu, zadajte do príkazového riadku príkaz.

npm install telegraf

8. Ako spustiť bota

Na to, aby ste to spravili, nachádzajúc sa v priečinku so súborom (na prechádzanie medzi priečinkami cez príkazový riadok - vykonávajte príkaz v tvare cd bot Aby ste sa uistili, že ste tam, kde máte byť, môžete zadať príkaz, ktorý zobrazí v príkazovom riadku všetky súbory a priečinky, ktoré sú tam. ls -a

Na spustenie som zadal do príkazového riadku

node index.js

Ak nie je žiadna chyba - všetko je v poriadku, bot funguje. Hľadnite ho v telegrame. Ak je tam chyba - aplikujte svoje vedomosti z bodu 1.

9. Ako spustiť bota v pozadí

Relatívne rýchlo pochopíte, že bot funguje iba vtedy, keď ste sami v príkazovom riadku. Aby som tento problém vyriešil, použil som príkaz

screen

Potom sa objaví obrazovka s nejakým textom. To znamená, že je všetko v poriadku. Ste na virtuálnom serveri na cloudovom serveri. Aby ste lepšie pochopili, ako to všetko funguje - tu je článok. Len vojdite do svojej zložky a zadajte príkaz na spustenie bota.

node index.js

10. Ako funguje bot a ako rozšíriť jeho funkčnosť

Čo teda náš bot z príkladu vie? Vie

bot.start((ctx) => ctx.reply('Welcome!'))

povedať 'Welcome!' v okamihu štartu (skúste zmeniť text)

bot.help((ctx) => ctx.reply('Send me a sticker'))

v odpovedi na štandardný príkaz /help poslať správu 'Send me a sticker'

bot.on('sticker', (ctx) => ctx.reply(''))

v odpovedi na sticker poslať schválenie

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

odpovedať 'Hey there', ak mu napíšu 'hi'
bot.launch()

Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

Ak sa pozriete na kód na github, rýchlo pochopíte, že som sa od tejto funkčnosti veľmi nezdal. To, čo sa aktívne používa, je funkcia ctx.replyWithPhoto Umožňuje poslať zadané foto alebo gif ako odpoveď na konkrétny text.

Podstatná časť kódu bola napísaná deťmi vo veku 11-13 rokov, ktorým som dal prístup k botovi. Zadali svoje user-case. Myslím, že je ľahké určiť, ktorá časť bola urobená nimi.

Napríklad na správu „jake“ príde gifka so známou postavou z rozprávky Adventure Time.

Návod: ako vytvoriť jednoduchého bota pre Telegram na JS pre začiatočníkov v programovaní

Aby sme bota ďalej rozvíjali, je potrebné pripojiť klávesnicu a sledovať príklady, napríklad odtiaľto

11. Ako aktualizovať kód a reštartovať bota

Nezabúdajte, že kód je potrebné aktualizovať nielen na github, ale aj na serveri. Robiť to je jednoduché – zastavíme bota (stlačením ctrl+c),

– zadáme do konzoly, pričom sme v cielovej zložke, git pull
– znovu spustíme bota príkazom node index.js

END

Mnohé veci opísané v tomto súbore budú super očividné pre pokročilých programátorov. Avšak keď som sa pokúšal jedným skokom preskočiť priepasť do sveta botov, veľmi mi chýbala takáto príručka. Príručka, v ktorej nie sú vynechané očividné a jednoduché veci pre každého IT odborníka.

V budúcnosti plánujem príspevok o tom, ako vytvoriť svoju prvú aplikáciu na ReactNative v podobnom štýle, sledujte ma!

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster