Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

Počeo sam da ronim u IT svijet prije samo tri sedmice. Ozbiljno, prije tri sedmice nisam ni razumio HTML sintaksu, a upoznavanje sa programskim jezicima završilo se sa 10 godina starim Pascal programom. Ipak, odlučio sam da odem u IT kamp, ​​za čiju bi djecu bilo lijepo napraviti bota. Mislio sam da nije tako teško.

Ovo je započelo dugo putovanje na kojem sam:

  • postavio cloud server sa Ubuntuom,
  • registrovan na GitHub-u,
  • naučio osnovnu JavaScript sintaksu,
  • pročitajte gomilu članaka na engleskom i ruskom,
  • konacno napravio bota
  • konačno napisao ovaj post.

Krajnji rezultat je izgledao ovako:

Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

Odmah ću reći da je ovo članak za početnike - samo da shvatite kako raditi elementarne stvari od samog početka.

I takođe - za napredne programere - samo da ih malo nasmije.

1. Kako napisati kod u JS?

Shvatio sam da je vrijedno barem prvo razumjeti sintaksu jezika. Izbor je pao na JavaScript, jednostavno zato što je sledeći korak za mene bio kreiranje aplikacije u ReactNative-u. Počeo sam sa kurs na Codecademy i bio je veoma entuzijastičan. Prvih 7 dana je besplatno. Pravi projekti. Predlažem. Prelazak je trajao oko 25 sati. Zapravo, nije sve bilo korisno. Ovako izgleda struktura kursa i prvi blok u detalje.

Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

2. Kako registrovati bota?

Puno mi je pomoglo na početku Ovaj članak sa bloga izvesnog Arčakova. Žvaće na samom početku. Ali glavna stvar koja je tu su uputstva za registraciju bota. Neću pisati bolje, a pošto je ovo najlakši dio, napisaću samo suštinu. Morate kreirati bota i dobiti njegov API. Ovo se radi preko drugog bota - @BotFather. Pronađite ga u telegramu, pišite mu, pratite jednostavan put i nabavite (sačuvajte!) API ključ (ovo je skup brojeva i slova). Kasnije mi je dobro došao.

Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

3. Kako izgleda bot kod?

Nakon dugog proučavanja članaka, shvatio sam da vrijedi koristiti neku vrstu biblioteke (kod treće strane u formatu modula) kako ne bih patio od proučavanja telegram API-ja i stvaranja velikih dijelova koda od nule. Našao sam okvir telegraf, koji je trebao nekako biti povezan s nečim koristeći npm ili yarn. Tako sam tada shvatio u čemu se sastoji postavljanje bota. Smijte se ovdje. Neću se uvrijediti. Primjeri na dnu stranice su mi najviše pomogli prilikom naknadnog kreiranja bota:

Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

3. Kako napraviti svoj vlastiti cloud server za 100 rubalja

Nakon mnogo pretraživanja, shvatio sam da se komanda 'npm' sa gornje slike odnosi na komandnu liniju. Komandna linija je svuda, ali da biste je mogli izvršiti, morate instalirati NodePackageManager. Problem je bio što sam programirao na PixelBook-u sa ChromeOS-om. Ovdje ću preskočiti veliki blok o tome kako sam upoznao Linux - za većinu je ovo prazno i ​​nepotrebno. Ako imate Windows ili MacBook, već imate konzolu.

Ukratko, instalirao sam Linux preko Crostinija.

Međutim, u tom procesu sam shvatio da mi je potreban cloud server da bi bot radio stalno (a ne samo kada je moj računar uključen). ja biram vscale.io Bacio sam 100 rubalja, kupio najjeftiniji Ubuntu server (vidi sliku).

Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

4. Kako pripremiti server za pokretanje bota

Nakon toga sam shvatio da moram napraviti neki folder na serveru u koji ću staviti fajl sa tekstom koda. Da bih to učinio, u konzoli (pokreni se direktno na web-mjestu preko dugmeta "Otvori konzolu"), vozio sam

mkdir bot

bot - ovo je postalo ime mog foldera. Nakon toga sam instalirao npm i Node.js, što će mi omogućiti da kasnije pokrenem kod iz *.js fajlova

sudo apt update
sudo apt install nodejs
sudo apt install npm

U ovoj fazi toplo preporučujem da uspostavite vezu sa serverom preko vaše konzole. Evo manuelno Ovo će vam omogućiti da radite sa serverom direktno preko konzole vašeg računara.

5. Kako kodirati prvog bota.

Sada je ovo samo otkriće za mene. Svaki program su samo redovi teksta. Možete ih voziti bilo gdje, spremiti sa željenom ekstenzijom i to je to. Lijepa si. koristio sam atom, ali zaista, možete samo pisati u standardnu ​​notes. Glavna stvar je da kasnije sačuvate datoteku u željenoj ekstenziji. To je kao da napišete tekst u Wordu i sačuvate ga.

Napravio sam novi fajl, u koji sam ubacio kod iz primera na stranici telegrafa i sačuvao ga u fajl index.js (uopšte nije potrebno da se fajl tako imenuje, ali je prihvaćeno). Važno - umjesto BOT_TOKEN, umetnite svoj API ključ iz drugog pasusa.

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. Kako gurnuti kod na server preko github-a

Sada sam morao nekako učitati ovaj kod na server i pokrenuti ga. Za mene je to postao izazov. Na kraju, nakon mnogo iskušenja, shvatio sam da bi bilo lakše kreirati fajl na githubu koji vam omogućava da ažurirate kod pomoću komande u konzoli. Registrovao sam nalog sa GitHub i uradio novi projekatgde sam uploadovao fajl. Nakon toga, morao sam da smislim kako da postavim upload fajlova sa mog (otvorenog!) naloga na server u folderu bot (ako ste ga iznenada napustili, samo napišite cd bot).

7. Kako učitati fajlove na server preko github-a 2. deo

Morao sam da stavim program na server koji bi preuzimao fajlove sa git-a. Instalirao sam git na server kucanjem

apt-get install git

Nakon toga, morao sam podesiti upload fajlova. Da bih to uradio, ušao sam u komandnu liniju

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

Kao rezultat, sve iz projekta je učitano na server. Greška u ovom trenutku je bila što sam u suštini napravio drugi folder unutar već postojećeg foldera bot. Adresa datoteke je izgledala kao */bot/bot/index.js

Odlučio sam da zanemarim ovaj problem.

I da učitate telegraf biblioteku, koju tražimo u prvom redu koda, unesite komandu u konzolu.

npm install telegraf

8. Kako pokrenuti bot

Da biste to uradili, dok ste u fascikli sa datotekom (da biste se kretali iz fascikle u fasciklu preko konzole, pokrenite naredbu format cd bot Da biste bili sigurni da ste tamo gdje trebate, možete ubaciti naredbu koja će prikazati na konzoli sve datoteke i mape koji se tamo nalaze ls -a

Za početak, ušao sam u konzolu

node index.js

Ako nema greške, sve je u redu, bot radi. Potražite ga na telegramu. Ako postoji greška, primenite svoje znanje iz tačke 1.

9. Kako pokrenuti bot u pozadini

Brzo ćete shvatiti da bot radi samo kada vi sami sjedite u konzoli. Za rješavanje ovog problema koristio sam naredbu

screen

Nakon toga će se pojaviti ekran sa nekim tekstom. To znači da je sve u redu. Nalazite se na virtuelnom serveru na serveru u oblaku. Da bolje razumete kako sve to funkcioniše - evo članka. Samo idite u svoju mapu i unesite naredbu za pokretanje bota

node index.js

10. Kako bot radi i kako proširiti njegovu funkcionalnost

Šta može naš bot iz primjera? On može

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

recite "Dobro došli!" u trenutku početka (pokušajte promijeniti tekst)

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

kao odgovor na standardnu ​​naredbu /help, pošaljite poruku "Pošalji mi naljepnicu"

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

poslati odobrenje kao odgovor na naljepnicu

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

odgovori "Hej tamo" ako napišu "zdravo"
bot.launch()

Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

Ako pogledate kod na GitHub, tada ćete brzo shvatiti da nisam otišao daleko od ove funkcionalnosti. Ono što se aktivno koristi je funkcija ctx.replyWithPhoto Omogućava vam da pošaljete datu fotografiju ili gif kao odgovor na određeni tekst.

Značajan dio koda napisala su djeca od 11-13 godina, kojima sam dao pristup botu. Oni su ušli u svoje korisničke slučajeve. Mislim da je lako reći koji dio su oni uradili.

Na primjer, GIF sa poznatim likom iz crtanog filma Vrijeme avanture dolazi na poruku "Jake".

Vodič: kako napraviti jednostavan bot za Telegram u JS za početnike u programiranju

Da biste dalje razvijali bot, morate povezati tastaturu, pogledajte primjere, na primjer, odavde

11. Kako ažurirati kod i ponovo pokrenuti bot

Ne zaboravite da morate ažurirati kod ne samo na githubu, već i na serveru. Lako je to učiniti - zaustavite bota (pritisnite ctrl + c),

- uđite u konzolu, nalazeći se u ciljnom folderu, git pull
- restartujte bota komandom node index.js

END

Mnoge stvari opisane u ovoj datoteci bit će vrlo očigledne naprednim programerima. Međutim, kada sam i sam pokušao jednim potezom preskočiti ambis u svijet botova, takav vodič mi je zaista nedostajao. Vodič koji ne propušta očigledne i jednostavne stvari za svakog IT stručnjaka.

U budućnosti planiram post o tome kako napraviti svoju prvu aplikaciju na ReactNativeu u istom stilu, pretplatite se!

izvor: www.habr.com

Dodajte komentar