Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

Ek het net drie weke gelede in die IT-wêreld begin duik. Ernstig, drie weke gelede het ek nie eers HTML-sintaksis verstaan ​​nie, en kennismaking met programmeertale het geëindig met 'n 10-jarige Pascal-sillabus. Ek het egter besluit om na 'n IT-kamp te gaan, vir wie se kinders dit lekker sal wees om 'n bot te maak. Ek het gedink dis nie so moeilik nie.

Dit het 'n lang reis begin, waarin ek:

  • het 'n wolkbediener met Ubuntu ontplooi,
  • geregistreer op GitHub,
  • basiese JavaScript-sintaksis geleer,
  • lees 'n klomp artikels in Engels en Russies,
  • uiteindelik 'n bot gemaak
  • het uiteindelik hierdie pos geskryf.

Die eindresultaat het soos volg gelyk:

Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

Ek sal dadelik sê dit is 'n artikel vir beginners - net om te verstaan ​​hoe om elementêre dinge van die begin af te doen.

En ook - vir gevorderde programmeerders - net om hulle 'n bietjie te laat lag.

1. Hoe om kode in JS te skryf?

Ek het verstaan ​​dat dit die moeite werd was om ten minste eers die sintaksis van die taal te verstaan. Die keuse het op JavaScript geval, bloot omdat die volgende stap vir my was om 'n toepassing in ReactNative te skep. Ek het begin met kursus op Codecademy en was baie entoesiasties. Die eerste 7 dae is gratis. Regte projekte. Ek beveel aan. Die deurtog het ongeveer 25 uur geneem. Trouens, nie alles was nuttig nie. Dit is hoe die kursusstruktuur lyk en die eerste blok in detail.

Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

2. Hoe om 'n bot te registreer?

Het my in die begin baie gehelp Hierdie artikel van die blog van 'n sekere Archakov. Hy kou heel aan die begin. Maar die belangrikste ding wat daar is, is die instruksies vir die registrasie van die bot. Ek sal nie beter skryf nie, en aangesien dit die maklikste deel is, skryf ek maar die kern. Jy moet 'n bot skep en sy API kry. Dit word gedoen deur 'n ander bot - @BotFather. Vind hom in telegram, skryf aan hom, volg die eenvoudige pad en kry (stoor!) API-sleutel (dit is 'n stel syfers en letters). Dit het later vir my handig te pas gekom.

Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

3. Hoe lyk die bot-kode?

Na 'n lang studie van die artikels het ek besef dat dit die moeite werd is om 'n soort biblioteek (derdeparty-kode in module-formaat) te gebruik om nie te ly om die telegram API te bestudeer en groot stukke kode van nuuts af te skep nie. Ek het 'n raamwerk gevind telegraaf, wat op een of ander manier aan iets gekoppel moes word deur npm of garing te gebruik. Dit is hoe ek toe verstaan ​​het waaruit die ontplooiing van die bot bestaan. Lag hier. Ek sal nie aanstoot neem nie. Die voorbeelde onderaan die bladsy het my die meeste gehelp tydens die daaropvolgende skepping van die bot:

Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

3. Hoe om jou eie wolkbediener vir 100 roebels te skep

Na baie gesoek het ek agtergekom dat die 'npm'-opdrag van die prent hierbo na die opdragreël verwys. Die opdragreël is oral, maar om dit te kan uitvoer, moet jy die NodePackageManager installeer. Die probleem was dat ek op 'n PixelBook met ChromeOS geprogrammeer het. Ek sal 'n groot blok hier oorslaan oor hoe ek Linux leer ken het - vir die meeste is dit leeg en onnodig. As jy Windows of 'n MacBook het, het jy reeds 'n konsole.

In 'n neutedop, ek het Linux deur Crostini geïnstalleer.

Ek het egter in die proses besef dat vir die bot om heeltyd te werk (en nie net wanneer my rekenaar aangeskakel is nie), het ek 'n wolkbediener nodig. Ek het gekies vscale.io Ek het 100 roebels gegooi, die goedkoopste Ubuntu-bediener gekoop (sien foto).

Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

4. Hoe om die bediener voor te berei om die bot te laat loop

Daarna het ek besef dat ek een of ander vouer op die bediener moes maak, waarin ek die lêer met die teks van die kode sou plaas. Om dit te doen, het ek in die konsole (hardloop direk op die webwerf deur die "Open Console"-knoppie) gery

mkdir bot

bot - dit het die naam van my gids geword. Daarna het ek npm en Node.js geïnstalleer, wat my in staat sal stel om later kode vanaf *.js-lêers te laat loop

sudo apt update
sudo apt install nodejs
sudo apt install npm

Ek beveel sterk aan om op hierdie stadium 'n verbinding met die bediener op te stel deur jou konsole. Hier opdrag Dit sal jou toelaat om direk met die bediener te werk deur die konsole van jou rekenaar.

5. Hoe om die eerste bot te kodeer.

Nou is dit net 'n openbaring vir my. Enige program is net teksreëls. Jy kan hulle enige plek ry, stoor met die verlangde uitbreiding en dit is dit. Jy is pragtig. ek het gebruik Atom, maar regtig, jy kan net in 'n standaard notaboek skryf. Die belangrikste ding is om die lêer later in die gewenste uitbreiding te stoor. Dit is soos om teks in Word te skryf en dit te stoor.

Ek het 'n nuwe lêer gemaak, waarin ek die kode van die voorbeeld op die telegraf bladsy ingesit het en dit in die index.js lêer gestoor het (dis glad nie nodig om die lêer so te noem nie, maar dit word aanvaar). Belangrik - in plaas van BOT_TOKEN, voeg jou API-sleutel vanaf die tweede paragraaf in.

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. Hoe om die kode via github na die bediener te druk

Nou moes ek op een of ander manier hierdie kode na die bediener oplaai en dit laat loop. Vir my het dit 'n uitdaging geword. Op die ou end, na baie beproewing, het ek besef dat dit makliker sou wees om 'n lêer op github te skep wat jou toelaat om die kode op te dateer met 'n opdrag in die konsole. Ek het 'n rekening geregistreer by Github en gedoen het nuwe projekwaar ek die lêer opgelaai het. Daarna moes ek uitvind hoe om die oplaai van lêers vanaf my (oop!) rekening op te stel na die bediener in die bot-lêergids (as jy dit skielik verlaat het, skryf net cd-bot).

7. Hoe om lêers op te laai na die bediener via github deel 2

Ek moes 'n program op die bediener plaas wat lêers vanaf git sou aflaai. Ek het git op die bediener geïnstalleer deur te tik

apt-get install git

Daarna moes ek lêeroplaaie opstel. Om dit te doen, het ek in die opdragreël ingery

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

Gevolglik is alles van die projek na die bediener opgelaai. Die fout op hierdie stadium was dat ek in wese 'n tweede vouer in die reeds bestaande bot-lêergids gemaak het. Die adres na die lêer het gelyk soos */bot/bot/index.js

Ek het besluit om hierdie probleem te ignoreer.

En om die telegraf-biblioteek te laai, wat ons in die eerste reël kode versoek, tik die opdrag in die konsole in.

npm install telegraf

8. Hoe om die bot te begin

Om dit te doen, terwyl jy in die vouer met die lêer is (om van vouer na vouer deur die konsole te skuif, voer die formaatopdrag uit cd bot Om seker te maak dat jy is waar jy moet, kan jy 'n opdrag inry wat al die lêers en vouers wat daar is in die konsole sal vertoon ls -a

Om te begin, het ek in die konsole ingegaan

node index.js

As daar geen fout is nie, is alles in orde, die bot werk. Soek hom op telegram. As daar 'n fout is, pas jou kennis vanaf punt 1 toe.

9. Hoe om die bot in die agtergrond te laat loop

Jy sal vinnig agterkom dat die bot net werk as jy self in die konsole sit. Om hierdie probleem op te los, het ek die opdrag gebruik

screen

Daarna sal 'n skerm met 'n bietjie teks verskyn. Dit beteken alles is reg. Jy is op 'n virtuele bediener op 'n wolkbediener. Om beter te verstaan ​​hoe dit alles werk - hier is die artikel. Gaan net na jou gids en tik die opdrag in om die bot te begin

node index.js

10. Hoe die bot werk en hoe om sy funksionaliteit uit te brei

Wat kan ons bot uit die voorbeeld doen? Hy kan

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

sê "Welkom!" op die oomblik van begin (probeer om die teks te verander)

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

in reaksie op die standaard /help-opdrag, stuur die boodskap "Stuur vir my 'n plakker"

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

stuur goedkeuring in reaksie op 'n plakker

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

antwoord "Haai daar" as hulle 'hallo' skryf
bot.launch()

Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

As jy kyk na die kode by Github, dan sal jy vinnig besef dat ek nie baie ver van hierdie funksionaliteit gegaan het nie. Wat aktief gebruik word, is die funksie ctx.replyWithPhoto Dit laat jou toe om 'n gegewe foto of gif te stuur in reaksie op sekere teks.

'n Beduidende deel van die kode is geskryf deur kinders van 11-13 jaar, aan wie ek toegang tot die bot gegee het. Hulle het hul gebruikersgevalle ingevoer. Ek dink dit is maklik om te sê watter deel deur hulle gedoen is.

Byvoorbeeld, 'n GIF met 'n bekende karakter uit die Adventure Time-spotprent kom na die boodskap "jake".

Gids: hoe om 'n eenvoudige bot vir Telegram in JS te maak vir 'n beginner in programmering

Om die bot verder te ontwikkel, moet jy die sleutelbord koppel, sien voorbeelde, byvoorbeeld, vandaar

11. Hoe om die kode op te dateer en die bot weer te begin

Moenie vergeet dat u die kode nie net op github moet opdateer nie, maar ook op die bediener. Dit is maklik om dit te doen - stop die bot (druk ctrl + c),

- gaan in die konsole in, in die teikengids, git pull
- herbegin die bot met die opdrag node index.js

EINDE

Baie van die dinge wat in hierdie lêer beskryf word, sal baie duidelik wees vir gevorderde programmeerders. Toe ek self egter in een klap oor die afgrond na die wêreld van bots probeer spring het, het ek so 'n gids regtig gemis. 'n Gids wat nie ooglopende en eenvoudige dinge vir enige IT-spesialis mis nie.

In die toekoms beplan ek 'n plasing oor hoe om my eerste aansoek op ReactNative in dieselfde styl te maak, teken in!

Bron: will.com

Voeg 'n opmerking