Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

Panirti į IT pasaulį pradėjau tik prieš tris savaites. Jei rimtai, prieš tris savaites aš net nesupratau HTML sintaksės, o mano įvadas į programavimo kalbas baigėsi prieš 10 metų mokykline programa Pascal. Tačiau nusprendžiau vykti į IT stovyklą, kur būtų smagu vaikams pasigaminti botą. Nusprendžiau, kad vargu ar tai taip sunku.

Taip prasidėjo ilga kelionė, kurios metu aš:

  • įdiegė debesies serverį su Ubuntu,
  • registruotas GitHub,
  • išmoko pagrindinę JavaScript sintaksę,
  • perskaityti daugybę straipsnių anglų ir rusų kalbomis,
  • pagaliau sukūrė botą,
  • Pagaliau parašiau šį straipsnį.

Galutinis rezultatas atrodė maždaug taip:

Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

Iš karto pasakysiu, kad tai yra straipsnis pradedantiesiems - kad suprastumėte, kaip atlikti pagrindinius dalykus nuo nulio.

Ir taip pat – pažengusiems programuotojams – tik tam, kad jie šiek tiek nusijuoktų.

1. Kaip parašyti kodą JS?

Supratau, kad pirmiausia verta suprasti bent kalbos sintaksę. Pasirinkimas krito dėl „JavaScript“ vien todėl, kad kitas žingsnis buvo sukurti programą „ReactNative“. Aš pradėjau nuo žinoma „Codecademy“ ir buvo labai patenkintas. Pirmos 7 dienos nemokamos. Realūs projektai. Rekomenduoju. Jo užbaigimas užtruko apie 25 valandas. Tiesą sakant, ne visa tai buvo naudinga. Taip atrodo kurso struktūra ir pirmasis blokas detaliau.

Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

2. Kaip užregistruoti botą?

Tai man labai padėjo pradžioje šis straipsnis iš tam tikro Archakovo dienoraščio. Jis kramto pačią pradžią. Tačiau pagrindinis dalykas, kuris yra, yra roboto registravimo instrukcijos. Negaliu parašyti geriau, o kadangi tai lengviausia dalis, parašysiu tik esmę. Turite sukurti robotą ir gauti jo API. Tai daroma per kitą robotą - @BotFather. Raskite jį telegramoje, parašykite jam, eikite paprastu keliu ir gaukite (išsaugokite!) API raktą (tai yra skaičių ir raidžių rinkinys). Vėliau tai pravertė.

Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

3. Kaip atrodo boto kodas?

Ilgai studijuodamas straipsnius supratau, kad verta naudoti kažkokią biblioteką (trečiosios šalies kodą modulio formatu), kad nereikėtų rūpintis Telegram API studijomis ir didelių kodo dalių kūrimu nuo nulio. Radau karkasą telegrafas, kurį reikėjo kažkaip su kažkuo prijungti naudojant npm arba verpalus. Maždaug taip aš tada supratau, ką sudaro roboto dislokavimas. Juokis čia. neįsižeisiu. Puslapio apačioje pateikti pavyzdžiai man labiausiai padėjo vėliau kuriant robotą:

Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

3. Kaip susikurti savo debesų serverį už 100 rublių

Po ilgų paieškų supratau, kad aukščiau esančiame paveikslėlyje esanti komanda „npm“ reiškia komandų eilutę. Komandų eilutė yra visur, bet kad galėtumėte ją vykdyti, turite įdiegti NodePackageManager. Problema ta, kad programavau „PixelBook“ su „ChromeOS“. Praleisiu čia didelį bloką apie tai, kaip išmokau Linux – daugumai jis tuščias ir nereikalingas. Jei turite „Windows“ arba „MacBook“, jau turite konsolę.

Trumpai tariant, aš įdiegiau Linux per Crostini.

Tačiau proceso metu supratau, kad norint, kad robotas veiktų nuolat (ir ne tik tada, kai kompiuteris įjungtas), man reikia debesies serverio. aš pasirinkau vscale.io Išleidau 100 rublių ir nusipirkau pigiausią Ubuntu serverį (žr. paveikslėlį).

Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

4. Kaip paruošti serverį botui paleisti

Po to supratau, kad reikia serveryje padaryti kažkokį aplanką, į kurį įdėčiau failą su kodo tekstu. Norėdami tai padaryti, konsolėje (paleiskite tiesiogiai svetainėje per mygtuką „Atidaryti pultą“) įvedžiau

mkdir bot

botas – tai tapo mano aplanko pavadinimu. Po to įdiegiau npm ir Node.js, kurie leis paleisti kodą iš failų su *.js raiška

sudo apt update
sudo apt install nodejs
sudo apt install npm

Labai rekomenduoju šiame etape nustatyti ryšį su serveriu per konsolę. Čia mokymas Tai leis jums dirbti su serveriu tiesiogiai per kompiuterio konsolę.

5. Kaip parašyti kodą pirmajam robotui.

Bet dabar man tai tik atradimas. Bet kuri programa yra tik teksto eilutės. Juos galima įterpti bet kur, išsaugoti su norimu plėtiniu, ir viskas. Tu esi gražus. aš naudojau Atomas, bet iš tikrųjų galite tiesiog rašyti į standartinę bloknotą. Svarbiausia yra išsaugoti failą vėliau norimu plėtiniu. Tai tarsi teksto rašymas „Word“ ir jo išsaugojimas.

Padariau naują failą, į kurį įterpiau kodą iš pavyzdžio telegrafo puslapyje ir išsaugojau index.js faile (apskritai taip pavadinti failo nereikia, bet taip įprasta). Svarbu – vietoj BOT_TOKEN įterpkite API raktą iš antrosios pastraipos.

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. Kaip įkelti kodą į serverį per github

Dabar man reikėjo kažkaip įkelti šį kodą į serverį ir jį paleisti. Tai man tapo iššūkiu. Dėl to po daugybės išbandymų supratau, kad būtų lengviau github sukurti failą, leidžiantį atnaujinti kodą naudojant komandą konsolėje. Užregistravau paskyrą GitHub ir padarė naujas projektas, kur įkėliau failą. Po to man reikėjo sugalvoti, kaip nustatyti failų įkėlimą iš savo paskyros (atidaryti!) į serverį, esantį boto aplanke (jei staiga jį palikote, tiesiog parašykite cd bot).

7. Kaip įkelti failus į serverį per github 2 dalis

Man reikėjo įdiegti programą serveryje, kuri atsisiųstų failus iš git. Įdiegiau git serveryje įvesdamas į konsolę

apt-get install git

Po to man reikėjo sukonfigūruoti failo įkėlimą. Norėdami tai padaryti, įvedžiau į komandinę eilutę

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

Dėl to viskas iš projekto buvo įkelta į serverį. Klaida šiame etape buvo ta, kad iš esmės sukūriau antrą aplanką jau esamame roboto aplanke. Failo adresas atrodė kaip */bot/bot/index.js

Nusprendžiau nekreipti dėmesio į šią problemą.

Ir norėdami įkelti telegrafo biblioteką, kurios prašome pirmoje kodo eilutėje, įveskite komandą į konsolę.

npm install telegraf

8. Kaip paleisti robotą

Norėdami tai padaryti, būdami aplanke su failu (norėdami pereiti iš aplanko į aplanką naudodami konsolę, paleiskite formatavimo komandą cd bot Norėdami įsitikinti, kad esate ten, kur turite būti, galite įvesti komandą, kuri konsolėje parodys visus ten esančius failus ir aplankus ls -a

Norėdami pradėti, įėjau į konsolę

node index.js

Jei klaidos nėra, viskas gerai, botas veikia. Ieškokite jo telegramoje. Jei yra klaida, pritaikykite savo žinias iš 1 punkto.

9. Kaip paleisti robotą fone

Gana greitai suprasite, kad botas veikia tik tada, kai jūs pats sėdite pulte. Norėdami išspręsti šią problemą, panaudojau komandą

screen

Po to pasirodys ekranas su tekstu. Tai reiškia, kad viskas gerai. Esate virtualiame serveryje debesies serveryje. Norėdami geriau suprasti, kaip visa tai veikia - štai straipsnis. Tiesiog eikite į savo aplanką ir įveskite komandą, kad paleistumėte robotą

node index.js

10. Kaip veikia robotas ir kaip išplėsti jo funkcionalumą

Ką gali padaryti mūsų pavyzdinis robotas? Jis gali

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

pasakykite "Sveiki atvykę!" pradžioje (pabandykite pakeisti tekstą)

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

atsakydami į standartinę komandą /help, išsiųskite pranešimą „Siųsk man lipduką“

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

atsiųskite patvirtinimą atsakydami į lipduką

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

atsakykite „Labas“, jei jie jam parašys „labas“.
bot.launch()

Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

Jei pažvelgsite į kodą GitHub, tada greitai suprasite, kad iki šios funkcijos labai toli nenuėjau. Aktyviai naudojama funkcija ctx.replyWithPhoto Tai leidžia siųsti nurodytą nuotrauką ar gif atsakymą į konkretų tekstą.

Nemažą kodo dalį parašė 11-13 metų vaikai, kuriems daviau prieigą prie boto. Jie įvedė savo vartotojo atvejį. Manau, nesunku pasakyti, kurią dalį jie pagamino.

Pavyzdžiui, žinutė „Jake“ gaus GIF failą su žinomu animacinio filmo „Nuotykių laikas“ personažu.

Vadovas: kaip sukurti paprastą „Telegram“ robotą JS pradedantiesiems programuoti

Norėdami toliau tobulinti robotą, turite prijungti klaviatūrą, žr. pavyzdžius, pvz. taigi

11. Kaip atnaujinti kodą ir iš naujo paleisti robotą

Nepamirškite, kad kodą reikia atnaujinti ne tik github, bet ir serveryje. Tai padaryti lengva – sustabdykite robotą (paspauskite ctrl+c),

- įeikite į konsolę, kai esate tiksliniame aplanke, git pull
— vėl paleidžiame botą su komanda node index.js

PABAIGA

Daugelis šiame faile aprašytų dalykų bus labai akivaizdūs pažengusiems programuotojams. Tačiau kai pats vienu ypu bandžiau peršokti per bedugnę į botų pasaulį, tokio vadovo labai pasiilgau. Vadovas, nepraleidžiantis dalykų, kurie yra akivaizdūs ir paprasti bet kuriam IT specialistui.

Ateityje planuoju įrašą apie tai, kaip sukurti pirmąją programą „ReactNative“ tokiu pat stiliumi, užsiprenumeruokite!

Šaltinis: www.habr.com

Добавить комментарий