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:
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
2. Kaip užregistruoti botą?
Tai man labai padėjo pradžioje
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ą
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
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
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
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ą
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 -
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()
Jei pažvelgsite į kodą 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.
Norėdami toliau tobulinti robotą, turite prijungti klaviatūrą, žr. pavyzdžius, pvz.
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