Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

Jeg begyndte at dykke ind i IT-verdenen for kun tre uger siden. Seriøst, for tre uger siden forstod jeg ikke engang HTML-syntaksen, og mit kendskab til programmeringssprog stoppede med skolens Pascal-program fra for 10 år siden. Men jeg besluttede mig for at tage til et IT-lejr, hvor børnene kunne have glæde af at lave en bot. Jeg tænkte, at det næppe kunne være så svært.

Dette markerede begyndelsen på en lang rejse, hvor jeg:

  • opsatte en cloud-server med Ubuntu,
  • registrerede mig på GitHub,
  • lærte den grundlæggende syntaks i JavaScript,
  • læsede en masse artikler på engelsk og russisk,
  • lavede endelig bot'en,
  • og skrev til sidst denne artikel.

Det endelige resultat så nogenlunde sådan ud:

Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

Jeg vil sige med det samme, at denne artikel er for begyndere — for at forstå, hvordan man laver elementære ting fra helt nul.

Og for avancerede programmører — bare for at få dem til at grine lidt.

1. Hvordan skriver man kode i JS?

Jeg vidste, at jeg skulle starte med at forstå sprogets syntaks. Valget faldt på JavaScript, simpelthen fordi det næste skridt for mig var at lave en applikation i ReactNative. Jeg begyndte med af kurset Codecademy og var meget begejstret. De første 7 dage er gratis. Rigtige projekter. Jeg kan varmt anbefale det. Det tog mig omkring 25 timer at gennemføre. I virkeligheden var meget ikke alt sammen nyttigt. Her er strukturen af kurset og detaljer om det første modul.

Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

2. Hvordan registrerer man en bot?

I starten hjalp denne her denne artikel fra bloggen af en vis Archakov mig meget. Han forklarer begyndelsen grundigt. Men det vigtigste, der er, er instruktioner til registreringen af en bot. Jeg ville ikke kunne skrive det bedre, og da det er den nemmeste del, vil jeg bare skrive essensen. Du skal oprette en bot og få dens API. Dette gøres gennem en anden bot — @BotFather. Find ham i Telegram, skriv til ham, gennemgå den enkle proces, og få (gem!) API-nøglen (en række tal og bogstaver). Jeg fik brug for det senere.

Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

3. Hvordan ser bot-koden ud?

Efter lang tids studier af artikler indså jeg, at jeg skulle bruge et eller andet bibliotek (tredjeparts kode i modulformat), så jeg ikke skulle have det svært med at lære Telegrams API og skrive store stykker kode fra bunden. Jeg fandt rammeværket telegraf, som skulle forbindes til noget ved hjælp af npm eller yarn. Det er cirka sådan, jeg dengang forstod, hvad deployment af botten bestod af. Du må gerne grine her. Jeg tager det ikke ilde op. De eksempler, der er angivet nederst på siden, har været meget hjælpsomme ved den senere oprettelse af botten.

Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

3. Hvordan man laver sin egen cloud-server for 100 kroner

Efter mange søgninger indså jeg, at ’npm’-kommandoen fra billedet ovenfor hører til kommandolinjen. Kommandolinjen findes overalt, men for at kunne køre den, skal NodePackageManager installeres. Problemet var, at jeg programmerede på en PixelBook med ChromeOS. Jeg vil springe et stort afsnit over om, hvordan jeg lærte Linux — for de fleste er det tomt og unødvendigt. Hvis du har Windows eller MacBook, har du allerede en konsol.

Kort sagt, jeg installerede Linux via Crostini.

Men i processen indså jeg, at for at botten kunne køre kontinuerligt (og ikke kun når min computer var tændt), havde jeg brug for en cloud-server. Jeg valgte vscale.io Jeg indsatte 100 kroner og købte den billigste Ubuntu-server (se billedet).

Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

4. Hvordan forbereder man serveren til at køre botten

Efter dette indså jeg, at jeg skulle oprette en mappe på serveren, hvor jeg kunne placere filen med kode. I konsollen (som kan åbnes direkte på siden ved at klikke på 'Åbn konsol') indtastede jeg

mkdir bot

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

sudo apt update
sudo apt install nodejs
sudo apt install npm

Jeg anbefaler kraftigt at konfigurere forbindelsen til serveren gennem din egen konsol på dette stadie. Her er instruktion Det vil give dig mulighed for at arbejde direkte med serveren via din computers konsol.

5. Hvordan skriver man koden til den første bot.

Og nu er det bare en åbenbaring for mig. Ethvert program er blot linjer af tekst. De kan indtastes hvor som helst, gemmes med den ønskede filtype, og det er det. Du er fantastisk. Jeg brugte Atom, men reelt kan man bare skrive i den standard notesblok. Det vigtigste er at gemme filen med den rigtige filtype. Det er ligesom at skrive tekst i Word og gemme den.

Jeg oprettede en ny fil, hvor jeg indtastede koden fra eksemplet på telegraf-siden og gemte den som index.js (det er slet ikke nødvendigt at navngive filen sådan, men det er almindeligt). Vigtigt — erstat BOT_TOKEN med din API-nøgle fra punkt to.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Velkommen!'))
bot.help((ctx) => ctx.reply('Send mig et klistermærke'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hej der'))
bot.launch()

6. Hvordan man uploader koden til serveren via github

Nu måtte jeg finde en måde at uploade denne kode til serveren og køre den. Det blev en udfordring for mig. Til sidst, efter lang tids søgen, indså jeg, at det ville være lettere at oprette en fil på github, som tillader at opdatere koden ved hjælp af en kommando i terminalen. Jeg registrerede en konto på github og lavede et nyt projekt, hvor jeg uploadede filen. Efter det måtte jeg finde ud af, hvordan jeg skulle konfigurere upload af filer fra min (åbne!) konto til serveren i mappen bot (hvis du er blevet logged ud — skriv cd bot).

7. Hvordan uploader man filer til serveren via github del 2

Jeg havde brug for at installere et program på serveren, der ville hente filer fra git. Jeg installerede git på serveren ved at skrive i terminalen

apt-get install git

Derefter måtte jeg konfigurere upload af filer. For at gøre dette skrev jeg i kommandoprompten

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

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

Jeg besluttede at ignorere dette problem.

Og for at hente bibliotket telegraf, som vi anmoder om i den første linje af koden, skal du skrive følgende kommando i terminalen.

npm install telegraf

8. Hvordan starter man botten

For at gøre dette, mens du er i mappen med filen (for at skifte mellem mapper i terminalen - udfør kommandoen i formatet cd bot For at sikre, at du er, hvor du skal være, kan du skrive en kommando, der viser alle filer og mapper i terminalen ls -a

For at starte skrev jeg i terminalen

node index.js

Hvis der ikke er nogen fejl — alt er godt, botten kører. Søg efter den i telegram. Hvis der er en fejl — brug din viden fra punkt 1.

9. Hvordan kører man botten i baggrunden

Du vil hurtigt forstå, at botten kun kører, når du selv sidder i terminalen. For at løse dette problem brugte jeg kommandoen

screen

Derefter vil en skærm med noget tekst dukke op. Det betyder, at alt er i orden. Du er på den virtuelle server i skyløsningen. For at forstå bedre, hvordan det hele fungerer — her er en artikel. Bare gå ind i din mappe og skriv kommandoen for at starte botten

node index.js

10. Hvordan fungerer botten, og hvordan udvider man dens funktionalitet

Hvad kan vores bot fra eksemplet? Den kan

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

sige «Velkommen!» ved opstart (prøv at ændre teksten)

bot.help((ctx) => ctx.reply('Send mig et klistermærke'))

som svar på den standardkommando \/help sende beskeden «Send mig et klistermærke»

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

sende en godkendelse som svar på et klistermærke

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

svare «Hej der», hvis nogen skriver ‘hi’
bot.launch()

Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

Hvis du ser på koden på github, vil du hurtigt forstå, at jeg ikke er langt fra denne funktionalitet. Hvad der bruges aktivt, er funktionen ctx.replyWithPhoto Den giver mulighed for at sende et bestemt billede eller gif som svar på en bestemt tekst.

En væsentlig del af koden blev skrevet af børn i alderen 11-13 år, som jeg gav adgang til botten. De indtastede deres user-cases. Jeg tror, det er let at bestemme, hvilken del der blev lavet af dem.

For eksempel, når der sendes en besked som «jake», kommer der en gif med en kendt karakter fra tegneserien Adventure Time.

Guide: hvordan man laver en simpel bot til Telegram på JS for nybegyndere i programmering

For at udvikle botten videre skal man se eksempler på at tilføje tastatur, f.eks. from here

11. Sådan opdaterer du koden og genstarter botten

Husk, at du skal opdatere koden ikke kun på github, men også på serveren. Det er enkelt — stop botten (tryk ctrl+c),

— indtast i konsollen, mens du er i den ønskede mappe, git pull
— start igen botten med kommandoen node index.js

END

Mange af de ting, der er beskrevet i denne fil, vil være super åbenlyse for avancerede programmører. Men da jeg selv forsøgte at springe over kløften til bot-verdenen, manglede jeg virkelig en sådan guide. En guide, der ikke udelader de indlysende og simple ting for enhver IT-specialist.

I fremtiden planlægger jeg et indlæg om, hvordan man laver sin første app i ReactNative i samme stil, så husk at følge med!

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster