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:
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
2. Hvordan registrerer man en bot?
hjalp mig meget i starten
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
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
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
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
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
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 -
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()
Hvis du ser på koden på 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".
For at udvikle botten yderligere skal du tilslutte tastaturet, se eksempler, f.eks.
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