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:
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
2. Kako registrovati bota?
Puno mi je pomoglo na početku
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
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
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
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
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
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 -
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()
Ako pogledate kod na 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".
Da biste dalje razvijali bot, morate povezati tastaturu, pogledajte primjere, na primjer,
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