Jag började dyka in i IT-vÀrlden för bara tre veckor sedan. Allvarligt talat, för tre veckor sedan förstod jag inte ens HTML-syntax, och mina kunskaper om programmeringssprÄk slutade med skolans lÀroplan pÄ Pascal frÄn 10 Är sedan. Jag bestÀmde mig dock för att gÄ pÄ ett IT-lÀger, för vars barn det skulle vara trevligt att göra en bot. Jag bestÀmde mig för att det inte kunde vara sÄ svÄrt.
Det hÀr var början pÄ en lÄng resa dÀr jag:
- driftsatte en molnserver med Ubuntu,
- registrerad pÄ GitHub,
- lÀrt sig grundlÀggande JavaScript-syntax,
- Jag lÀste massor av artiklar pÄ engelska och ryska,
- Àntligen gjort en bot,
- Jag skrev Àntligen den hÀr artikeln.
Slutresultatet sÄg ut ungefÀr sÄ hÀr:

LÄt mig sÀga direkt att den hÀr artikeln Àr för nybörjare - bara för att förstÄ hur man gör grundlÀggande saker frÄn grunden.
Och Àven - för avancerade programmerare - bara för att fÄ dem att skratta lite.
1. Hur skriver man kod i JS?
Jag förstod att det var vÀrt att Ätminstone förstÄ syntaxen i sprÄket först. Valet föll pÄ JavaScript helt enkelt för att nÀsta steg för mig var att skapa en applikation i ReactNative. Jag började med pÄ Codecademy och var mycket nöjd. De första 7 dagarna Àr gratis. Riktiga projekt. Jag rekommenderar det. Det tog cirka 25 timmar att slutföra det. I sjÀlva verket var inte allt anvÀndbart. UngefÀr sÄ ser kursstrukturen ut och det första blocket i detalj.

2. Hur registrerar man en bot?
I början hjÀlpte det mig mycket frÄn en viss Archakovs blogg. Han tuggar över i början. Men det viktigaste som finns Àr instruktionerna om hur man registrerar en bot. Jag kan inte skriva det bÀttre, och eftersom det hÀr Àr den enklaste delen skriver jag bara kÀrnan. Du mÄste skapa en bot och fÄ dess API. Detta görs genom en annan bot - @BotFather. Hitta honom i telegram, skriv till honom, följ den enkla vÀgen och fÄ (spara!) en API-nyckel (detta Àr en uppsÀttning siffror och bokstÀver). Det kom vÀl till pass senare.

3. Hur ser botkoden ut?
Efter att ha studerat artiklarna under en lÀngre tid insÄg jag att det Àr vÀrt att anvÀnda nÄgot bibliotek (tredjepartskod i modulformat) för att inte lida av att studera Telegram API och skapa stora bitar av kod frÄn grunden. Jag hittade en ram , som pÄ nÄgot sÀtt behövde kopplas till nÄgot med hjÀlp av npm eller garn. UngefÀr sÄ förstod jag dÄ vad bot-distribution bestod av. Skratta hÀr. Jag kommer inte att bli förolÀmpad. Det som hjÀlpte mig mest nÀr jag sedan skapade boten var exemplen lÀngst ner pÄ sidan:

3. Hur man skapar din egen molnserver för 100 rubel
Efter mycket letande insÄg jag att kommandot 'npm' i bilden ovan refererar till kommandoraden. Kommandoraden finns överallt, men för att köra den mÄste du installera NodePackageManager. Problemet var att jag programmerade pÄ en PixelBook med ChromeOS. Jag hoppar över den stora delen om hur jag lÀrde mig det. Linux - För de flesta Àr det tomt och onödigt. Om du har Windows eller MacBook, har du redan en konsol.
I ett nötskal, jag satte Linux via Crostini.
Men i processen insÄg jag att för att boten ska fungera konstant (och inte bara nÀr min dator Àr pÄ) behöver jag en molnserver. jag valde Jag satte in 100 rubel och köpte den billigaste servern. Ubuntu (se bild).

4. Hur man förbereder en server för att köra en bot
Efter det insĂ„g jag att jag behövde skapa nĂ„gon form av mapp pĂ„ servern, dĂ€r jag skulle lĂ€gga filen med kodtexten. För att göra detta gick jag in i konsolen (kör direkt pĂ„ webbplatsen via knappen "Ăppna konsolen")
mkdir botbot - detta blev namnet pÄ min mapp. Efter det installerade jag npm och Node.js, vilket gör att jag kan köra kod frÄn filer med tillÀgget *.js.
sudo apt update
sudo apt install nodejs
sudo apt install npmJag rekommenderar starkt att du i detta skede konfigurerar en anslutning till servern via din konsol. HÀr Detta gör att du kan arbeta med servern direkt via konsolen pÄ din dator.
5. Hur man skriver koden för din första bot.
Men nu Àr det bara en uppenbarelse för mig. Alla program Àr bara rader med text. Du kan ange dem var som helst, spara dem med önskat tillÀgg och det Àr allt. Du Àr vacker. jag anvÀnde , men egentligen kan du bara skriva i ett vanligt anteckningsblock. Det viktigaste Àr att spara filen senare i önskat tillÀgg. Det Àr som att skriva text i Word och spara den.
Jag gjorde en ny fil, klistrade in koden frÄn exemplet pÄ telegrafsidan i den och sparade den som index.js (det Àr inte nödvÀndigt att namnge filen pÄ det sÀttet, men det Àr praxis). Viktigt: ersÀtt BOT_TOKEN med din API-nyckel frÄn den andra punkten.
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. Hur man laddar upp kod till servern via github
Nu behövde jag pÄ nÄgot sÀtt kasta den hÀr koden pÄ servern och köra den. Det blev en utmaning för mig. Till slut, efter mycket lidande, insÄg jag att det skulle vara lÀttare att skapa en fil pÄ github som lÄter dig uppdatera koden med ett kommando i konsolen. Jag registrerade ett konto pÄ och gjorde , dÀr jag laddade upp filen. Efter det behövde jag ta reda pÄ hur jag stÀller in filuppladdningar frÄn mitt konto (öppet!) till servern i bot-mappen (om du plötsligt avslutar den, skriv bara cd-bot).
7. Hur man laddar upp filer till servern via github del 2
Jag behövde installera ett program pÄ servern som skulle ladda ner filer frÄn git. Jag installerade git pÄ servern genom att skriva in i konsolen
apt-get install gitEfter det behövde jag stÀlla in filuppladdningar. För att göra detta gick jag in pÄ kommandoraden
git clone git://github.com/b0tank/bot.git bot
Som ett resultat laddades allt frÄn projektet upp till servern. Felet i det hÀr skedet var att jag i princip skapade en andra mapp i den befintliga botmappen. Adressen före filen sÄg ut som */bot/bot/index.js
Jag bestÀmde mig för att ignorera detta problem.
Och för att ladda telegrafbiblioteket, som vi begÀr i den första raden kod, skriv in kommandot i konsolen.
npm install telegraf8. Hur man startar en bot
För att göra detta, medan du Àr i mappen med filen (för att flytta frÄn mapp till mapp via konsolen, kör formatkommandot cd bot För att vara sÀker pÄ att du Àr dÀr du behöver vara kan du ange ett kommando som visar alla filer och mappar som finns dÀr i konsolen. ls -a
För att börja gick jag in i konsolen
node index.js
Om det inte finns nÄgot fel Àr allt bra, boten fungerar. Leta efter honom pÄ Telegram. Om det finns ett fel, tillÀmpa dina kunskaper frÄn punkt 1.
9. Hur man kör en bot i bakgrunden
Du kommer snabbt att inse att boten bara fungerar nÀr du sjÀlv sitter i konsolen. För att lösa detta problem anvÀnde jag kommandot
screenEfter detta kommer en skÀrm med lite text upp. Det betyder att allt Àr bra. Du Àr pÄ en virtuell server pÄ en molnserver. För att bÀttre förstÄ hur det hela fungerar - . GÄ bara till din mapp och ange kommandot för att starta boten
node index.js10. Hur boten fungerar och hur man utökar dess funktionalitet
Vad kan vÄr bot frÄn exemplet göra? Han kan göra det
bot.start((ctx) => ctx.reply('Welcome!'))sÀg "VÀlkommen!" i början (försök att Àndra texten)
bot.help((ctx) => ctx.reply('Send me a sticker'))som svar pÄ standardkommandot /help, skicka meddelandet "Skicka mig en klistermÀrke"
bot.on('sticker', (ctx) => ctx.reply(''))som svar pÄ klistermÀrket skicka godkÀnnande
bot.hears('hi', (ctx) => ctx.reply('Hey there')) svara "Hej dÀr" om nÄgon skriver "hej" till honom
bot.launch()

Om du tittar pÄ koden pÄ , dÄ förstÄr du snabbt att jag inte har gÄtt sÀrskilt lÄngt frÄn denna funktionalitet. Det som anvÀnds aktivt Àr funktionen ctx.replyWithPhoto Det lÄter dig skicka ett specifikt foto eller gif som svar pÄ en specifik text.
En betydande del av koden skrevs av barn i Äldern 11-13, som jag gav tillgÄng till boten. De presenterade sitt anvÀndarfall. Jag tror att det Àr lÀtt att sÀga vilken del som gjordes av dem.
Till exempel fÄr meddelandet "Jake" en GIF med en kÀnd karaktÀr frÄn den tecknade Adventure Time.

För att utveckla boten ytterligare behöver du ansluta tangentbordet, titta pÄ exempel, till exempel,
11. Hur man uppdaterar koden och startar om boten
Glöm inte att du behöver uppdatera koden inte bara pÄ github, utan Àven pÄ servern. Det Àr lÀtt att göra - stoppa boten (tryck pÄ ctrl+c),
- gÄ in i konsolen medan du Àr i mÄlmappen, git pull
â vi startar boten igen med kommandot node index.js
SLUT
MÄnga av de saker som beskrivs i den hÀr filen kommer att vara superuppenbara för avancerade programmerare. Men nÀr jag sjÀlv försökte hoppa över avgrunden till botsvÀrlden i ett svep saknade jag verkligen en sÄdan guide. En guide som inte hoppar över saker som Àr sjÀlvklara och enkla för vilken IT-specialist som helst.
I framtiden planerar jag att skriva om hur du gör din första ReactNative-app i samma stil, prenumerera!
KĂ€lla: will.com
