V svet IT-ja sem se začel poglabljati šele pred tremi tedni. Resno, pred tremi tedni sploh nisem razumel sintakse HTML in moj uvod v programske jezike se je končal s šolskim učnim načrtom o Pascalu izpred 10 let. Vseeno sem se odločil za IT kamp, kjer bi bilo fino, da bi otroci naredili bota. Odločil sem se, da ni tako težko.
S tem se je začelo dolgo potovanje, na katerem sem:
- uvedel strežnik v oblaku z Ubuntujem,
- registriran na GitHub,
- naučil osnovno sintakso JavaScript,
- prebral ogromno člankov v angleščini in ruščini,
- končno naredil bota,
- Končno sem napisal ta članek.
Končni rezultat je izgledal nekako takole:
Takoj bom rekel, da je to članek za začetnike - samo zato, da razumete, kako narediti osnovne stvari iz nič.
Pa tudi - za napredne programerje - samo zato, da se malo nasmejijo.
1. Kako napisati kodo v JS?
Razumel sem, da je vredno najprej razumeti vsaj sintakso jezika. Izbira je padla na JavaScript, preprosto zato, ker je bil moj naslednji korak ustvariti aplikacijo v ReactNative. Začel sem z
2. Kako registrirati bota?
To mi je na začetku zelo pomagalo
3. Kako je videti koda bota?
Po dolgotrajnem preučevanju člankov sem ugotovil, da je vredno uporabiti nekakšno knjižnico (koda tretjih oseb v obliki modula), da ne bi bilo treba skrbeti za preučevanje API-ja Telegram in ustvarjanje velikih kosov kode iz nič. Našel sem okvir
3. Kako ustvariti svoj strežnik v oblaku za 100 rubljev
Po dolgem iskanju sem ugotovil, da se ukaz 'npm' na zgornji sliki nanaša na ukazno vrstico. Ukazna vrstica je povsod, a da jo lahko izvedete, morate namestiti NodePackageManager. Težava je bila v tem, da sem programiral na PixelBooku s ChromeOS. Tu bom preskočil velik blok o tem, kako sem se naučil o Linuxu - za večino je prazen in nepotreben. Če imate Windows ali MacBook, že imate konzolo.
Na kratko, namestil sem Linux prek Crostinija.
Vendar sem v procesu ugotovil, da za stalno delovanje bota (in ne samo, ko je moj računalnik prižgan) potrebujem strežnik v oblaku. izberem
4. Kako pripraviti strežnik za zagon bota
Po tem sem ugotovil, da moram na strežniku narediti nekakšno mapo, v katero bom dal datoteko z besedilom kode. Da bi to naredil, sem v konzoli (zaženi neposredno na spletnem mestu prek gumba »Odpri konzolo«) vnesel
mkdir bot
bot - to je postalo ime moje mape. Po tem sem namestil npm in Node.js, kar mi bo omogočilo zagon kode iz datotek z ločljivostjo *.js
sudo apt update
sudo apt install nodejs
sudo apt install npm
Zelo priporočam, da na tej stopnji nastavite povezavo s strežnikom prek vaše konzole. Tukaj
5. Kako napisati kodo za svojega prvega bota.
Ampak zdaj je to samo odkritje zame. Vsak program je samo vrstica besedila. Lahko jih vstavimo kamorkoli, shranimo z želeno končnico in to je to. Lepa si. uporabil sem
Naredil sem novo datoteko, v katero sem vstavil kodo iz primera na telegrafski strani in jo shranil v datoteko index.js (načeloma ni nujno, da datoteko tako poimenujemo, vendar je to običajno). Pomembno – namesto BOT_TOKEN vstavite svoj API ključ iz drugega odstavka.
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 naložiti kodo na strežnik prek githuba
Zdaj sem moral to kodo nekako naložiti na strežnik in jo zagnati. To je zame postal izziv. Posledično sem po dolgih preizkušnjah spoznal, da bi bilo lažje ustvariti datoteko na githubu, ki bi omogočala posodobitev kode z ukazom v konzoli. Registriral sem račun na
7. Kako naložiti datoteke na strežnik prek github 2. del
Na strežnik sem moral namestiti program, ki bi prenašal datoteke iz gita. Git sem namestil na strežnik z vpisom v konzolo
apt-get install git
Po tem sem moral konfigurirati nalaganje datoteke. Da bi to naredil, sem vtipkal v ukazno vrstico
git clone git://github.com/b0tank/bot.git bot
Posledično je bilo vse iz projekta naloženo na strežnik. Napaka na tej stopnji je bila, da sem v bistvu naredil drugo mapo znotraj že obstoječe mape botov. Naslov datoteke je bil videti kot */bot/bot/index.js
Odločil sem se, da bom to težavo ignoriral.
In za nalaganje telegrafske knjižnice, ki jo zahtevamo v prvi vrstici kode, vnesite ukaz v konzolo.
npm install telegraf
8. Kako zagnati bota
Če želite to narediti, medtem ko ste v mapi z datoteko (za premikanje iz mape v mapo prek konzole zaženite ukaz format cd bot
Če želite zagotoviti, da ste tam, kjer morate biti, lahko vnesete ukaz, ki bo v konzoli prikazal vse datoteke in mape, ki so tam ls -a
Za začetek sem vstopil v konzolo
node index.js
Če ni napake, je vse v redu, bot deluje. Poiščite ga na telegramu. Če pride do napake, uporabite svoje znanje iz 1. točke.
9. Kako zagnati bota v ozadju
Zelo hitro boste razumeli, da bot deluje le, ko sami sedite v konzoli. Za rešitev te težave sem uporabil ukaz
screen
Po tem se prikaže zaslon z nekaj besedila. To pomeni, da je vse v redu. Ste na virtualnem strežniku na strežniku v oblaku. Da bi bolje razumeli, kako vse skupaj deluje -
node index.js
10. Kako bot deluje in kako razširiti njegovo funkcionalnost
Kaj lahko naredi naš vzorčni bot? On lahko
bot.start((ctx) => ctx.reply('Welcome!'))
reči "Dobrodošli!" na začetku (poskusite spremeniti besedilo)
bot.help((ctx) => ctx.reply('Send me a sticker'))
kot odgovor na standardni ukaz /help pošlji sporočilo »Pošlji mi nalepko«
bot.on('sticker', (ctx) => ctx.reply(''))
pošljite odobritev kot odgovor na nalepko
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
odgovori "Hej tam", če mu napišejo "živjo".
bot.launch()
Če pogledate kodo na ctx.replyWithPhoto
Omogoča vam, da pošljete določeno fotografijo ali gif kot odgovor na določeno besedilo.
Precejšen del kode so napisali otroci stari 11-13 let, ki sem jim omogočil dostop do bota. Vnesli so svoj uporabniški primer. Mislim, da je enostavno ugotoviti, kateri del so naredili oni.
Na primer, sporočilo "Jake" bo prejelo GIF z znanim likom iz risanke Adventure Time.
Za nadaljnji razvoj bota morate povezati tipkovnico, glejte primere, na primer
11. Kako posodobiti kodo in znova zagnati bota
Ne pozabite, da morate posodobiti kodo ne samo na githubu, ampak tudi na strežniku. To je preprosto - ustavite bota (pritisnite ctrl+c),
- vstopite v konzolo, ko ste v ciljni mapi, git pull
— z ukazom znova zaženemo bota node index.js
KONEC
Veliko stvari, opisanih v tej datoteki, bo nadvse očitnih naprednim programerjem. Ko pa sem sam poskušal z enim zamahom preskočiti prepad v svet botov, sem tak vodnik res pogrešal. Priročnik, ki ne spregleda stvari, ki so očitne in preproste za vsakega IT strokovnjaka.
V prihodnosti načrtujem objavo o tem, kako narediti svojo prvo aplikacijo na ReactNative v enakem slogu, naročite se!
Vir: www.habr.com