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:

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 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.

2. Kako registrirati bota?
Na početku mi je jako pomogla ova 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.

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 , 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:

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 Uložio sam 100 kuna, kupio najjeftiniji Ubuntu server (vidi sliku).

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 botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmPreporučujem da u ovoj fazi postavite vezu s serverom putem svoje konzole. Evo 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 , 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 i napravio , 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 gitNakon 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 telegraf8. 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
screenNakon 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 — . Jednostavno uđite u svoju mapu i upišite naredbu za pokretanje bota
node index.js10. 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()

Ako pogledate kod na , 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.

Da biste dalje razvijali bota, potrebno je da povežete tastaturu gledajući primere, na primer,
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
