Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

Ušao sam u svijet IT-a prije samo tri tjedna. Iskreno, tri tjedna prije nisam ni razumio sintaksu HTML-a, a upoznavanje s programskim jezicima završilo je školskim programom iz Pascala prije 10 godina. Ipak, odlučio sam otići na IT kamp, gdje bi za djecu bilo dobro napraviti bota. Pomislio sam da to vjerojatno nije toliko teško.

Ovdje je započeo dug put, tijekom kojeg sam:

  • postavio oblak server s Ubuntu-om,
  • registrirao se na GitHub-u,
  • naučio osnovnu sintaksu JavaScript-a,
  • pročitao tonu članaka na engleskom i hrvatskom jeziku,
  • nap finally napravio bota,
  • napisao ovaj članak, nap finally.

Konačni rezultat izgledao je otprilike ovako:

Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

Reći ću odmah, ovo je članak za početnike — kako bi se jednostavno razumjelo kako raditi osnovne stvari s najnižih točaka.

A još i za napredne programere — samo da ih malo nasmijem.

1. Kako pisati kod na JS-u?

Razumio sam da bi bilo dobro prvo se upoznati sa sintaksom jezika. Odabir je pao na JavaScript, jednostavno zato što je sljedeći korak za mene bilo stvaranje aplikacije na ReactNative. Počeo sam s tečajem na Codecademy i bio sam oduševljen. Prvih 7 dana besplatno. Stvarni projekti. Preporučujem. Prolazak je trajao otprilike 25 sati. Uistinu, nije mi sve bilo korisno. Ovako otprilike izgleda struktura tečaja i detaljno prvi blok.

Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

2. Kako registrirati bota?

Na početku mi je jako pomogla ova ovaj članak s bloga nekog Arčakova. Ovdje objašnjava sam početak. Ali najvažnije, što tamo postoji — to je upute za registraciju bota. Bolje ne mogu napisati, a budući da je to najlakši dio, samo ću napisati suštinu. Treba stvoriti bota i dobiti njegov API. To se radi preko drugog bota — @BotFather. Pronađite ga u Telegramu, pišite mu, prođite jednostavan put i dobijte (spremite!) API ključ (to je niz brojeva i slova). Korisno mi je došlo kasnije.

Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

3. Kako izgleda kod bota?

Nakon dugog proučavanja članaka, shvatio sam da trebam koristiti neku biblioteku (spoljašnji kod u formatu modula), kako se ne bih mučio s učenjem Telegramovog API-ja i stvaranjem velikih dijelova koda od nule. Pronašao sam framework telegraf, koji je trebalo nekako povezati s nečim uz pomoć npm ili yarn. Otprilike tako sam tada razumio kako izgleda postavljanje bota. Ovdje se možemo smijati. Neću se ljutiti. Najviše mi je kod kasnijeg stvaranja bota pomogao primjer naveden na dnu stranice:

Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

3. Kako stvoriti vlastiti cloud server za 100 kuna

Nakon dugog traganja shvatio sam da se komanda 'npm' iz slike gore odnosi na naredbeni red. Naredbeni red je svugdje prisutan, ali da bih ga mogao ispuniti, morao sam instalirati NodePackageManager. Problem je bio što sam programirao na PixelBook-u s ChromeOS-om. Preskočit ću ovdje veliki dio o tome kako sam naučio Linux — većini to nije potrebno. Ako imate Windows ili MacBook, već imate konzolu.

Obično rečeno, instalirao sam Linux putem Crostini.

No tijekom procesa shvatio sam da mi je za stalni rad bota (a ne samo kada je moj računal uključeno) potreban cloud server. Odabrao sam vscale.io Uložio sam 100 kuna, kupio najjeftiniji Ubuntu server (vidi sliku).

Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

4. Kako pripremiti server za pokretanje bota

Nakon toga shvatio sam da trebam napraviti neku mapu na serveru u koju ću staviti datoteku s kodom. Za to sam u konzoli (pokrenuti izravno na web stranici putem gumba 'Otvori konzolu') ukucao

mkdir bot

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

sudo apt update
sudo apt install nodejs
sudo apt install npm

Preporučujem da u ovoj fazi postavite vezu s serverom putem svoje konzole. Evo upute To će omogućiti izravni rad s serverom putem konzole vašeg računala.

5. Kako napisati kod prvog bota.

A sada je ovo za mene potpuno otkriće. Svaki program — to su samo redovi teksta. Mogu se unijeti bilo gdje, pohraniti s odgovarajućim ekstenzijama i to je to. Sjajan si. Koristio sam Atom, ali zapravo, jednostavno se može pisati u običnom notepadu. Glavno je samo sačuvati datoteku s odgovarajućom ekstenzijom. To je kao napisati tekst u Wordu i sačuvati.

Napravio sam novu datoteku u koju sam umetnuo kod iz primjera na stranici telegraf i sačuvao kao index.js (nije nužno nazvati datoteku tako, ali to je uobičajeno). Važno je — umjesto BOT_TOKEN umetnite svoj API ključ iz drugog koraka.

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 prenijeti kod na server putem github-a

Sada sam trebao nekako staviti ovaj kod na server i pokrenuti ga. To je za mene bio izazov. Na kraju, nakon dugih frustracija, shvatio sam da će biti lakše napraviti datoteku na githubu koja omogućava ažuriranje koda pomoću naredbe u konzoli. Registrirao sam račun na github i napravio a new project, gdje sam i prenio datoteku. Nakon toga, trebao sam shvatiti kako postaviti učitavanje datoteka s mog (otvorenog!) računa na server u mapu bot (ako ste slučajno izašli iz nje — jednostavno napišite cd bot).

7. Kako prenijeti datoteke na server putem githuba dio 2

Trebalo mi je postaviti program na server koji će učitavati datoteke s gita. Instalirao sam git na server tako da sam upisao u konzolu

apt-get install git

Nakon toga, trebao sam postaviti učitavanje datoteka. Za to sam u konzolu upisao

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

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

Odlučio sam zanemariti ovaj problem.

I kako bih učitao biblioteku telegraf, koju tražimo u prvoj liniji koda, upišite u konzolu naredbu.

npm install telegraf

8. Kako pokrenuti bota

Za to, dok sam u mapi s datotekom (kako biste prešli iz mape u mapu preko konzole - izvršite naredbu formata cd bot Da biste bili sigurni da ste tamo gdje treba, možete upisati naredbu koja će prikazati sve datoteke i mape koje se nalaze tamo ls -a

Za pokretanje sam upisao u konzolu

node index.js

Ako nema greške — sve je u redu, bot radi. Potražite ga na Telegramu. Ako postoji greška — primijenite svoje znanje iz 1. točke.

9. Kako pokrenuti bota u pozadini

Relativno brzo ćete shvatiti da bot radi samo kada sami sjedite u konzoli. Da biste riješili ovaj problem, koristio sam naredbu

screen

Nakon toga će se pojaviti ekran s nekim tekstom. To znači da je sve u redu. Vi ste na virtualnom serveru u oblaku. Da biste bolje razumjeli kako to sve funkcionira — evo članka. Jednostavno uđite u svoju mapu i upišite naredbu za pokretanje bota

node index.js

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

Što može naš bot iz primjera? Može

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

reći 'Welcome!' u trenutku pokretanja (pokušajte promijeniti tekst)

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

u odgovoru na standardnu naredbu /help slati poruku 'Send me a sticker'

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

u odgovoru na naljepnicu slati odobravanje

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

odgovarati 'Hey there', ako mu napišu 'hi'
bot.launch()

Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

Ako pogledate kod na github, brzo ćete shvatiti da nisam otišao daleko od ove funkcionalnosti. Ono što se aktivno koristi je funkcija ctx.replyWithPhoto Omogućuje slanje određenog fotografije ili gif-a kao odgovor na određeni tekst.

Značajan deo koda napisali su deca uzrasta od 11 do 13 godina kojima sam dao pristup bota. Uneli su svoje korisničke slučajeve. Mislim da je lako odrediti koji deo su oni napravili.

Na primer, na poruku "džejk" dolazi gif poznatog lika iz crtanog filma Adventure Time.

Vodič: kako napraviti jednostavnog bota za Telegram u JS za početnike u programiranju

Da biste dalje razvijali bota, potrebno je da povežete tastaturu gledajući primere, na primer, odavde

11. Kako ažurirati kod i ponovo pokrenuti bota

Ne zaboravite da treba ažurirati kod ne samo na github-u, već i na serveru. To je jednostavno — zaustavite bota (pritisnite ctrl+c),

— unesite u konzolu, dok se nalazite u ciljnoj fascikli, git pull
— ponovo pokrenite bota komandama node index.js

KRAJ

Mnoge stvari opisane u ovoj datoteci biće super očigledne za napredne programere. Međutim, kada sam pokušavao da preskočim ponor i uđem u svet botova, jako je nedostajao ovakav vodič. Vodič u kojem se ne propuštaju očigledne i jednostavne stvari za bilo kojeg IT stručnjaka.

U budućnosti planiram post o tome kako napraviti svoju prvu aplikaciju na ReactNative u sličnom stilu, prijavite se!

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster