Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

Jeg begynte å fordype meg i IT-verdenen for bare tre uker siden. Seriøst, for tre uker siden forsto jeg ikke engang HTML-syntaks, og introduksjonen min til programmeringsspråk endte med en skolepensum på Pascal fra 10 år siden. Jeg bestemte meg imidlertid for å gå på en IT-leir, hvor det ville være fint for barna å lage en bot. Jeg bestemte meg for at det neppe var så vanskelig.

Dette begynte en lang reise der jeg:

  • distribuerte en skyserver med Ubuntu,
  • registrert på GitHub,
  • lært grunnleggende JavaScript-syntaks,
  • les massevis av artikler på engelsk og russisk,
  • endelig laget en bot,
  • Jeg skrev endelig denne artikkelen.

Det endelige resultatet så omtrent slik ut:

Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

Jeg vil si med en gang at dette er en artikkel for nybegynnere - bare for å forstå hvordan du gjør grunnleggende ting fra bunnen av.

Og også - for avanserte programmerere - bare for å få dem til å le litt.

1. Hvordan skrive kode i JS?

Jeg forsto at det i det minste var verdt å forstå syntaksen til språket først. Valget falt på JavaScript, rett og slett fordi neste steg for meg var å lage en applikasjon i ReactNative. jeg begynte med kurs på Codecademy og var veldig fornøyd. De første 7 dagene er gratis. Virkelige prosjekter. Jeg anbefaler. Å fullføre det tok omtrent 25 timer. Faktisk var ikke alt nyttig. Slik ser oppbyggingen av kurset ut og den første blokken i detalj.

Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

2. Hvordan registrere en bot?

Dette hjalp meg mye i starten denne artikkelen fra bloggen til en viss Archakov. Han tygger helt i begynnelsen. Men det viktigste som er det er instruksjoner for å registrere en bot. Jeg kan ikke skrive det bedre, og siden dette er den enkleste delen, vil jeg bare skrive kjernen. Du må lage en bot og få dens API. Dette gjøres gjennom en annen bot - @BotFather. Finn ham på telegram, skriv til ham, følg den enkle veien og få (lagre!) en API-nøkkel (dette er et sett med tall og bokstaver). Det kom godt med senere.

Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

3. Hvordan ser bot-koden ut?

Etter å ha studert artiklene i lang tid, innså jeg at det var verdt å bruke et slags bibliotek (tredjepartskode i modulformat) for å slippe å bekymre meg for å studere Telegram API og lage store stykker kode fra bunnen av. Jeg fant rammen telegraf, som på en eller annen måte måtte kobles til noe ved hjelp av npm eller garn. Dette er omtrent slik jeg forsto hva utrullingen av en bot besto av. Le her. Jeg vil ikke bli fornærmet. Eksemplene nederst på siden hjalp meg mest under den påfølgende opprettelsen av boten:

Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

3. Hvordan lage din egen skyserver for 100 rubler

Etter mye søk innså jeg at 'npm'-kommandoen på bildet over refererer til kommandolinjen. Kommandolinjen er overalt, men for å kunne utføre den må du installere NodePackageManager. Problemet var at jeg programmerte på en PixelBook med ChromeOS. Jeg vil hoppe over her en stor blokk om hvordan jeg lærte Linux - for de fleste er det tomt og unødvendig. Hvis du har Windows eller MacBook, har du allerede en konsoll.

I et nøtteskall, jeg installerte Linux via Crostini.

Men i prosessen innså jeg at for at boten skal fungere konstant (og ikke bare når datamaskinen min er på), trenger jeg en skyserver. jeg velger vscale.io Jeg brukte 100 rubler og kjøpte den billigste Ubuntu-serveren (se bilde).

Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

4. Hvordan forberede en server til å kjøre en bot

Etter det skjønte jeg at jeg måtte lage en slags mappe på serveren der jeg skulle legge filen med kodeteksten. For å gjøre dette, gikk jeg inn i konsollen (kjør direkte på nettstedet via "Åpne konsoll")

mkdir bot

bot - dette ble navnet på mappen min. Etter det installerte jeg npm og Node.js, som vil tillate meg å kjøre kode fra filer med *.js-oppløsning

sudo apt update
sudo apt install nodejs
sudo apt install npm

Jeg anbefaler på det sterkeste å sette opp en tilkobling til serveren via konsollen din på dette stadiet. Her instruksjon Dette vil tillate deg å jobbe med serveren direkte gjennom konsollen på datamaskinen.

5. Hvordan skrive koden for din første bot.

Men nå er det bare en oppdagelse for meg. Ethvert program er bare linjer med tekst. De kan settes inn hvor som helst, lagres med ønsket utvidelse, og det er det. Du er vakker. jeg brukte Atom, men i virkeligheten kan du bare skrive i en standard notisblokk. Det viktigste er å lagre filen senere i ønsket utvidelse. Det er som å skrive tekst i Word og lagre den.

Jeg laget en ny fil, hvor jeg satte inn koden fra eksemplet på telegraf-siden og lagret den i index.js-filen (vanligvis er det ikke nødvendig å navngi filen på den måten, men dette er vanlig). Viktig - i stedet for BOT_TOKEN, sett inn API-nøkkelen fra andre avsnitt.

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. Hvordan laste opp kode til serveren via github

Nå måtte jeg på en eller annen måte laste opp denne koden til serveren og kjøre den. Dette ble en utfordring for meg. Som et resultat, etter mye prøvelse, innså jeg at det ville være lettere å lage en fil på github som lar deg oppdatere koden ved å bruke en kommando i konsollen. Jeg registrerte en konto på GitHub og gjorde nytt prosjekt, hvor jeg lastet opp filen. Etter det trengte jeg å finne ut hvordan jeg konfigurerte opplasting av filer fra kontoen min (åpen!) til serveren i bot-mappen (hvis du plutselig forlot den, bare skriv cd-bot).

7. Hvordan laste opp filer til serveren via github del 2

Jeg trengte å installere et program på serveren som ville laste ned filer fra git. Jeg installerte git på serveren ved å skrive inn i konsollen

apt-get install git

Etter det måtte jeg konfigurere filopplastingen. For å gjøre dette, skrev jeg inn på kommandolinjen

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

Som et resultat ble alt fra prosjektet lastet opp til serveren. Feilen på dette stadiet var at jeg egentlig laget en andre mappe i den allerede eksisterende bot-mappen. Adressen til filen så ut som */bot/bot/index.js

Jeg bestemte meg for å ignorere dette problemet.

Og for å laste telegraf-biblioteket, som vi ber om i den første kodelinjen, skriv inn kommandoen i konsollen.

npm install telegraf

8. Hvordan starte en bot

For å gjøre dette, mens du er i mappen med filen (for å flytte fra mappe til mappe via konsollen, kjør formatkommandoen cd bot For å være sikker på at du er der du skal være, kan du skrive inn en kommando som vil vise alle filene og mappene som er der i konsollen ls -a

For å starte gikk jeg inn i konsollen

node index.js

Hvis det ikke er noen feil, er alt bra, boten fungerer. Se etter ham på telegram. Hvis det er en feil, bruk kunnskapen din fra punkt 1.

9. Hvordan kjøre en bot i bakgrunnen

Ganske raskt vil du innse at boten bare fungerer når du selv sitter i konsollen. For å løse dette problemet brukte jeg kommandoen

screen

Etter dette vil en skjerm med litt tekst dukke opp. Dette betyr at alt er bra. Du er på en virtuell server på en skyserver. For å forstå bedre hvordan det hele fungerer - her er artikkelen. Bare gå til mappen din og skriv inn kommandoen for å starte boten

node index.js

10. Hvordan boten fungerer og hvordan dens funksjonalitet kan utvides

Hva kan vår eksempelbot gjøre? Han kan

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

si "Velkommen!" i starten (prøv å endre teksten)

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

som svar på standard /help-kommandoen, send meldingen "Send meg et klistremerke"

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

send godkjenning som svar på et klistremerke

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

svar "Hei" hvis de skriver "hei" til ham
bot.launch()

Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

Hvis du ser på koden på GitHub, så vil du raskt forstå at jeg ikke har gått veldig langt fra denne funksjonaliteten. Det som brukes aktivt er funksjonen ctx.replyWithPhoto Den lar deg sende et spesifisert bilde eller gif som svar på en bestemt tekst.

En betydelig del av koden ble skrevet av barn i alderen 11-13 år, som jeg ga tilgang til boten. De skrev inn sin brukercase. Jeg tror det er lett å si hvilken del som ble laget av dem.

For eksempel vil meldingen "Jake" motta en GIF med en kjent karakter fra tegneserien Adventure Time.

Guide: hvordan lage en enkel Telegram-bot i JS for en nybegynner i programmering

For å utvikle boten videre må du koble til et tastatur, se eksempler, for eksempel, derav

11. Hvordan oppdatere koden og starte boten på nytt

Ikke glem at du må oppdatere koden ikke bare på github, men også på serveren. Dette er enkelt å gjøre - stopp boten (trykk ctrl+c),

- gå inn i konsollen mens du er i målmappen, git pull
— vi starter boten igjen med kommandoen node index.js

END

Mange av tingene som er beskrevet i denne filen vil være superopplagte for avanserte programmerere. Men da jeg selv prøvde å hoppe over avgrunnen til robotenes verden i ett smekk, savnet jeg virkelig en slik guide. En guide som ikke går glipp av ting som er åpenbare og enkle for enhver IT-spesialist.

I fremtiden planlegger jeg et innlegg om hvordan du lager din første søknad på ReactNative i samme stil, abonner!

Kilde: www.habr.com

Legg til en kommentar