Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

Alustasin IT-maailma süvenemist vaid kolm nädalat tagasi. Ausalt öeldes, kolm nädalat tagasi ei mõistnud ma isegi HTML-i süntaksit ning mu tutvumine programmeerimiskeeltega piirdus kümme aastat tagasi kooliprogrammist saadud Pascaliga. Otsustasin siiski minna IT-laagrisse, kus lastel oleks kasulik luua bot. Mõtlesin, et see ei saa olla just nii keeruline.

Sellest algas pikk teekond, mille käigus ma:

  • seadsin üles pilveserveri Ubuntu süsteemiga,
  • registreerisin end GitHubis,
  • õppisin JavaScripti põhiskeemi,
  • lugesin hunniku artikleid inglise ja vene keeles,
  • valmistasin lõpuks boti,
  • kirjutasin lõpuks selle artikli.

Valmis tulemus nägi välja umbes nii:

Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

Ütlen kohe, et see artikkel on algajatele — et aidata lihtsalt mõista, kuidas teha põhilisi asju nullpunktist.

Ja ka edasijõudnud programmeerijatele — lihtsalt natuke neid naerutada.

1. Kuidas kirjutada koodi JS-is?

Mõistsin, et alguseks on kõige olulisem vähemalt keele süntaksiga natuke tutvuda. Otsustasin JavaScripti kasuks, lihtsalt seetõttu, et järgmine samm minu jaoks oli rakenduse loomine ReactNative'i peal. Alustasin kursusest Codecademy'l õppimine jättis mulle suurepärase mulje. Esimene 7 päeva tasuta. Reaalsed projektid. Soovitan. Selle läbimine võttis umbes 25 tundi. Tegelikult ei läinud kaugeltki kõik vajalikuks. Nii umbes näeb kursuse struktuur välja ja siin on üksikasjalikult esimene blokk.

Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

2. Kuidas registreerida boti?

Alguses aitas mind väga see see artikkel blogi autorilt Arčakovi. Ta seletab algust väga hästi. Kuid peamine, mis seal on — see on juhend boti registreerimiseks. Paremini ma ei oska kirjutada ja kuna see on kõige lihtsam osa, kirjutan lihtsalt kokkuvõtte. Tuleb luua bott ja saada tema API. See toimub läbi teise boti — @BotFather. Leidke ta Telegramist, kirjutage talle, käige läbi lihtne protsess ja saage (salvestage!) API-võti (see on numbrite ja tähtede kogum). See tuli mulle hiljem kasuks.

Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

3. Kuidas botikood välja näeb?

Pärast pikki artiklite uurimisi mõistsin, et tasub kasutada mingit teeki (kolmanda osapoole koodi mooduliformaadis), et mitte piinelda Telegrami API õppimise ja suure kooditüki nullist loomisega. Leidsin raamistikku telegraf, mida pidi kuidagi ühendama millegagi npm või yarn'i abil. Täpselt nii ma siis mõistsin, kuidas bot'i ülesseadmine käib. Siin naerda. Ma ei solvu. Kõige rohkem aitas mind bot'i hilisemal loomisel allpool lehe peal toodud näited:

Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

3. Kuidas luua oma pilveserver 100 rubla eest

Pika otsimise järel sain aru, et pildil näidatud ‘npm’ käsk kuulub käsureale. Käsurida on igal pool, kuid selle täitmiseks peab olema paigaldatud NodePackageManager. Probleem oli aga selles, et programmeerisin PixelBook'il ChromeOS'is. Jätan siia kõrvale suure osa oma Linux'i avastamisest — enamikule on see tühi ja mittevajalik. Kui sul on Windows või MacBook, siis on sul juba konsool.

Kokkuvõttes, installisin Linux'i Crostini kaudu.

Kuid protsessi käigus sain aru, et bot'i pidevaks tööks (mitte ainult siis, kui mu arvuti on sisse lülitatud) on mul vaja pilveserverit. Valisin vscale.io Sain 100 rubla ja ostsin kõige odavama Ubuntu serveri (vt. pilti).

Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

4. Kuidas valmistada server bot'i käivitamiseks ette

Pärast seda sain aru, et serveris tuleb teha kaust, kuhu ma panen koodi faili. Selleks valisin konsoolis (ava otse veebisaidilt nupuga „Ava konsool”) järgmise käsu

mkdir bot

bot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Soovitan väga sel etapil seadistada ühendus serveriga läbi oma konsooli. Siin on juhend See võimaldab töötada serveriga otse oma arvuti konsoolist.

5. Kuidas kirjutada oma esimest boti koodi.

Nüüd on see minu jaoks avastus. Iga programm on lihtsalt tekstiridu. Need saab sisestada kuhu iganes, salvestada soovitud laiendiga ja ongi kõik. Sa oled suurepärane. Ma kasutasin Atom, kuid tõeliselt, lihtsasti saab kirjutada ka tavalises märkmetes. Peamine on hiljem salvestada fail soovitud laiendiga. See on nagu teksti kirjutamine Wordis ja salvestamine.

Loomisin uue faili, kuhu panin koodi näite lehelt telegraf ja salvestasin faili nimega index.js (pole üldse kohustuslik fail nii nimetada, kuid see on tavaks). Oluline on see, et BOT_TOKEN tuleks asendada oma API võtmega, mis saadakse teises punktis.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Tere tulemast!'))
bot.help((ctx) => ctx.reply('Saada mulle kleebis'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Tere!'))
bot.launch()

6. Kuidas laadida kood serverisse läbi GitHubi

Nüüd pidi ma kuidagi selle koodi serverisse saama ja selle käivitama. See oli minu jaoks väljakutse. Lõpuks, pärast pikki vaevarikkaid üritusi, sain aru, et oli lihtsam luua fail GitHubis, mis võimaldab koodi uuendada käsu kaudu terminalis. Loodasin konto github ja tegin uus projekt, kuhu ma faili laadisin. Pärast seda pidin aru saama, kuidas seada üles failide laadimine minu (avatud!) konto kaudu serverisse kausta bot (kui te olete sellest väljunud — kirjutage lihtsalt cd bot).

7. Kuidas laadida faile serverisse läbi GitHubi osa 2

Pidi ma panema serverisse programmi, mis laadib faile Git-ilt. Paigaldasin Git serverisse, sisestades terminalisse

apt-get install git

Pärast seda pidin ma seadma failide laadimise. Selleks sisestasin käsureale

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

В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js

Otsustasin sellest probleemist üle vaadata.

Ja et laadida teegid, mida me koodi esimeses reas küsime, sisestage konsooli käsk.

npm install telegraf

8. Kuidas bot tööle panna

Selleks, et olla kaustas, kus fail asub (kaustast kausta liikuda, täitke käsk, mis on vormingus cd bot Veendumiseks, et oled õiges kohas, saab sisestada käsu, mis kuvab konsoolis kõik failid ja kaustad, mis seal on ls -a

Käivitamiseks sisestasin konsooli

node index.js

Kui viga ei esine — kõik on hästi, bot töötab. Otsige teda Telegramis. Kui vea olemasolu — rakendage oma teadmisi punktist 1.

9. Kuidas bot tööle panna taustal

Te mõistate kiiresti, et bot töötab ainult seni, kuni viibite konsoolis. Selle probleemi lahendamiseks olen kasutanud käsku

ekraan

Pärast seda kuvatakse ekraan mingi tekstiga. See tähendab, et kõik on hästi. Olete virtuaalses serveris pilveserveris. Parema arusaamise saamiseks sellest, kuidas see kõik töötab — siin on artikkel. Lihtsalt minge oma kausta ja sisestage bot'i käivitamise käsk

node index.js

10. Kuidas bot töötab ja kuidas laiendada selle funktsionaalsust

Mida oskab meie näidisbot? Ta oskab

bot.start((ctx) => ctx.reply('Tere tulemast!'))

ütle «Tere tulemast!» käivitamise hetkel (proovi teksti muuta)

bot.help((ctx) => ctx.reply('Saada mulle kleebis'))

standardse käsu /help vastusena saata sõnum «Saada mulle kleebis»

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

kleebisele vastusena saata heakskiitu

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

vastata «Tere», kui talle kirjutatakse ‘hi’
bot.launch()

Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

Kui vaatate koodi aadressil github, siis mõistate kiiresti, et ei ole kaugele sattunud sellest funktsionaalsusest. Aktiivselt kasutatakse funktsiooni ctx.replyWithPhoto See võimaldab saata määratud foto või gif'i vastusena kindlale tekstile.

Oluline osa koodist oli kirjutatud 11-13-aastaste laste poolt, kellele ma andsin boti juurde ligipääsu. Nad esitasid oma kasutusjuhtumid. Arvan, et on lihtne määrata, milline osa on kirjutatud nende poolt.

Näiteks, kui saadetakse sõnum «jake», saadetakse gif tuntud tegelasest multifilmist Adventure Time.

Juhend: kuidas luua algajale lihtne bot Telegramis JS-i abil

Boti edasiviimiseks tuleb klaviatuuri ühendamiseks vaadata näite, näiteks siit

11. Kuidas koodi uuendada ja boti taaskäivitada

Ärge unustage, et koodi tuleb uuendada mitte ainult github'is, vaid ka serveris. Seda on lihtne teha — peatame boti (vajutage ctrl+c),

— sisestame konsoolis, olles sihtkaustas, git pull
— taaskäivitame boti käsuga node index.js

LÕPP

Palju asju, mis on selles failis kirjeldatud, on edasijõudnud programmeerijatele ülimalt ilmsed. Kuid kui ma proovisin ühel korral astuda sammu botide maailma, tundsin ma väga tugevat vajadust sellise juhendi järele. Juhendi, kus ei jäeta kõrvale ilmselgeid ja igale IT-spetsialistile lihtsaid asju.

Tulevikus plaanin postitust, kuidas teha oma esimest rakendust ReactNative'i stiilis, jälgige!

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster