Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

Jeg begyndte at dykke ned i IT-verdenen for kun tre uger siden. Seriøst, for tre uger siden forstod jeg ikke engang HTML-syntaks, og bekendtskab med programmeringssprog endte med en 10 år gammel Pascal-pensum. Jeg besluttede mig dog for at tage på IT-lejr, for hvis børn det ville være rart at lave en bot. Jeg tænkte, at det ikke var så svært.

Dette startede en lang rejse, hvor jeg:

  • implementeret en cloud-server med Ubuntu,
  • registreret på GitHub,
  • lært grundlæggende JavaScript-syntaks,
  • læs et væld af artikler på engelsk og russisk,
  • endelig lavet en bot
  • skrev endelig dette indlæg.

Slutresultatet så således ud:

Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

Jeg vil med det samme sige, at dette er en artikel for begyndere - bare for at forstå, hvordan man gør elementære ting helt fra begyndelsen.

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

1. Hvordan skriver man kode i JS?

Jeg forstod, at det i det mindste var værd at forstå sprogets syntaks først. Valget faldt på JavaScript, simpelthen fordi næste skridt for mig var at lave en applikation i ReactNative. jeg startede med valutakurs på Codecademy og var meget entusiastisk. De første 7 dage er gratis. Rigtige projekter. Jeg anbefaler. Det tog omkring 25 timer at komme igennem. Faktisk var det ikke alt brugbart. Sådan ser kursusstrukturen ud og den første blok i detaljer.

Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

2. Hvordan registrerer man en bot?

hjalp mig meget i starten denne artikel fra en vis Archakovs blog. Han tygger på i begyndelsen. Men det vigtigste, der er der, er instruktionerne til registrering af botten. Jeg vil ikke skrive bedre, og da dette 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, følg den enkle vej og få (gem!) API-nøgle (dette er et sæt tal og bogstaver). Det kom til nytte for mig senere.

Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

3. Hvordan ser bot-koden ud?

Efter en lang undersøgelse af artiklerne indså jeg, at det er værd at bruge en form for bibliotek (tredjepartskode i modulformat) for ikke at lide under at studere telegram-API'en og skabe store stykker kode fra bunden. Jeg fandt en ramme telegraf, som på en eller anden måde skulle forbindes med noget ved hjælp af npm eller garn. Sådan forstod jeg dengang, hvad udrulningen af ​​botten består af. Grin her. Jeg vil ikke blive fornærmet. Eksemplerne nederst på siden hjalp mig mest under den efterfølgende oprettelse af botten:

Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

3. Sådan opretter du din egen skyserver for 100 rubler

Efter meget søgning fandt jeg ud af, at 'npm'-kommandoen fra billedet ovenfor refererer til kommandolinjen. Kommandolinjen er overalt, men for at kunne udføre den, skal du installere NodePackageManager. Problemet var, at jeg programmerede på en PixelBook med ChromeOS. Jeg springer en stor blok over her om, hvordan jeg lærte Linux at kende – for de fleste er dette tomt og unødvendigt. Hvis du har Windows eller en MacBook, har du allerede en konsol.

I en nøddeskal installerede jeg Linux gennem Crostini.

Men i processen indså jeg, at for at botten skal fungere hele tiden (og ikke kun når min computer er tændt), har jeg brug for en cloud-server. jeg vælger vscale.io Jeg kastede 100 rubler, købte den billigste Ubuntu-server (se billede).

Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

4. Sådan forbereder du serveren til at køre botten

Derefter indså jeg, at jeg skulle lave en mappe på serveren, hvori jeg ville lægge filen med kodens tekst. For at gøre dette kørte jeg i konsollen (kør direkte på webstedet via knappen "Åbn konsol")

mkdir bot

bot - dette blev navnet på min mappe. Derefter installerede jeg npm og Node.js, som giver mig mulighed for senere at køre kode fra *.js-filer

sudo apt update
sudo apt install nodejs
sudo apt install npm

Jeg anbefaler stærkt på dette stadium at oprette en forbindelse til serveren via din konsol. Her instruktion Dette giver dig mulighed for at arbejde med serveren direkte gennem konsollen på din computer.

5. Sådan koder du den første bot.

Nu er dette kun en åbenbaring for mig. Ethvert program er kun tekstlinjer. Du kan køre dem overalt, gemme med den ønskede udvidelse og det er det. Du er smuk. jeg brugte Atom, men egentlig kan du bare skrive i en standard notesblok. Det vigtigste er at gemme filen senere i den ønskede udvidelse. Det er som at skrive tekst i Word og gemme den.

Jeg lavede en ny fil, hvor jeg indsatte koden fra eksemplet på telegrafsiden og gemte den i filen index.js (det er slet ikke nødvendigt at navngive filen sådan, men det er accepteret). Vigtigt - i stedet for BOT_TOKEN, indsæt din API-nøgle fra andet afsnit.

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. Sådan skubber du koden til serveren via github

Nu skulle jeg på en eller anden måde uploade denne kode til serveren og køre den. For mig blev det en udfordring. Til sidst, efter mange prøvelser, indså jeg, at det ville være lettere at oprette en fil på github, der giver dig mulighed for at opdatere koden ved hjælp af en kommando i konsollen. Jeg har registreret en konto hos github og gjorde nyt projekthvor jeg har uploadet filen. Derefter skulle jeg finde ud af, hvordan jeg skulle konfigurere upload af filer fra min (åbne!) konto til serveren i bot-mappen (hvis du pludselig forlod den, skal du bare skrive cd-bot).

7. Sådan uploader du filer til serveren via github del 2

Jeg havde brug for at sætte et program på serveren, der kunne downloade filer fra git. Jeg installerede git på serveren ved at skrive

apt-get install git

Derefter skulle jeg konfigurere filuploads. For at gøre dette kørte jeg ind i kommandolinjen

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

Som et resultat blev alt fra projektet uploadet til serveren. Fejlen på dette tidspunkt var, at jeg i det væsentlige lavede en anden mappe inde i den allerede eksisterende bot-mappe. Adressen til filen lignede */bot/bot/index.js

Jeg besluttede at ignorere dette problem.

Og for at indlæse telegraf-biblioteket, som vi anmoder om i den første kodelinje, skal du indtaste kommandoen i konsollen.

npm install telegraf

8. Sådan starter du botten

For at gøre dette, mens du er i mappen med filen (for at flytte fra mappe til mappe gennem konsollen, kør formateringskommandoen cd bot For at sikre dig, at du er, hvor du skal, kan du køre i en kommando, der viser alle de filer og mapper, der er der i konsollen ls -a

For at starte gik jeg ind i konsollen

node index.js

Hvis der ikke er nogen fejl, er alt i orden, botten virker. Kig efter ham på telegram. Hvis der er en fejl, så brug din viden fra punkt 1.

9. Sådan kører du botten i baggrunden

Du vil hurtigt indse, at botten kun virker, når du selv sidder i konsollen. For at løse dette problem brugte jeg kommandoen

screen

Derefter vises en skærm med noget tekst. Det betyder, at alt er i orden. Du er på en virtuel server på en cloud-server. For bedre at forstå, hvordan det hele fungerer - her er artiklen. Bare gå til din mappe og skriv kommandoen for at starte botten

node index.js

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

Hvad kan vores bot fra eksemplet? Han kan

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

sig "Velkommen!" i startøjeblikket (prøv at ændre teksten)

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

som svar på standard /help kommandoen, send beskeden "Send mig et klistermærke"

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

sende godkendelse som svar på et klistermærke

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

svar "hej" hvis de skriver "hej"
bot.launch()

Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

Hvis du ser på koden på github, så vil du hurtigt indse, at jeg ikke er gået ret langt fra denne funktionalitet. Det der aktivt bruges er funktionen ctx.replyWithPhoto Det giver dig mulighed for at sende et givet 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 brugersager. Jeg tror, ​​det er let at sige, hvilken del der blev lavet af dem.

For eksempel kommer en GIF med en berømt karakter fra Adventure Time-tegneserien til beskeden "jake".

Guide: hvordan man laver en simpel bot til Telegram i JS til en begynder i programmering

For at udvikle botten yderligere skal du tilslutte tastaturet, se eksempler, f.eks. dermed

11. Sådan opdaterer du koden og genstarter botten

Glem ikke, at du skal opdatere koden ikke kun på github, men også på serveren. For at gøre dette er enkelt - stop botten (tryk ctrl + c),

- gå ind i konsollen, være i målmappen, git pull
- genstart botten med kommandoen node index.js

SLUT

Mange af de ting, der er beskrevet i denne fil, vil være super indlysende for avancerede programmører. Men da jeg selv forsøgte at hoppe over afgrunden til bots-verdenen i ét hug, savnede jeg virkelig sådan en guide. En guide, der ikke går glip af indlysende og enkle ting for enhver it-specialist.

I fremtiden planlægger jeg et indlæg om, hvordan jeg laver min første ansøgning på ReactNative i samme stil, abonner!

Kilde: www.habr.com

Tilføj en kommentar