Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

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:

Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

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 seveda na Codecademy in bil zelo navdušen. Prvih 7 dni je brezplačnih. Realni projekti. Priporočam. Dokončanje je trajalo približno 25 ur. Pravzaprav ni bilo vse uporabno. Tako izgleda struktura tečaja in prvi blok v podrobnostih.

Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

2. Kako registrirati bota?

To mi je na začetku zelo pomagalo ta članek iz bloga nekega Archakova. Žveči že na samem začetku. Toda glavna stvar, ki je, so navodila za registracijo bota. Ne znam bolje napisati, in ker je to najlažji del, bom napisal samo bistvo. Ustvariti morate bota in pridobiti njegov API. To se naredi prek drugega bota - @BotFather. Poiščite ga na telegramu, mu pišite, sledite preprosti poti in pridobite (shranite!) API ključ (to je niz številk in črk). Kasneje je prišlo prav.

Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

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 telegraf, ki ga je bilo treba nekako povezati z nečim z uporabo npm ali preje. Približno tako sem takrat razumel, iz česa je uvedba bota. Smej se tukaj. Ne bom užaljen. Pri kasnejšem ustvarjanju bota so mi najbolj pomagali primeri na dnu strani:

Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

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 vscale.io Porabil sem 100 rubljev in kupil najcenejši strežnik Ubuntu (glej sliko).

Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

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 Navodila To vam bo omogočilo delo s strežnikom neposredno prek konzole vašega računalnika.

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 Atom, v resnici pa lahko preprosto pišete v standardni beležnici. Glavna stvar je, da datoteko pozneje shranite v želeni razširitvi. To je kot pisanje besedila v Wordu in shranjevanje.

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 github in naredil nov projekt, kamor sem naložil datoteko. Po tem sem moral ugotoviti, kako nastaviti nalaganje datotek iz mojega računa (odprto!) na strežnik v mapi bot (če ste jo nenadoma zapustili, samo napišite cd bot).

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 - tukaj je članek. Samo pojdite v svojo mapo in vnesite ukaz za zagon bota

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()

Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

Če pogledate kodo na github, potem boste hitro razumeli, da nisem šel prav daleč od te funkcionalnosti. Kar se aktivno uporablja, je funkcija 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.

Vodič: kako narediti preprost Telegram bot v JS za začetnika v programiranju

Za nadaljnji razvoj bota morate povezati tipkovnico, glejte primere, na primer zato

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

Dodaj komentar