Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

Nagsugod ko sa pagpaunlod sa akong kaugalingon sa kalibutan sa IT tulo lang ka semana ang milabay. Seryoso, tulo ka semana ang milabay wala ako makasabut sa HTML syntax, ug ang akong pagpaila sa mga programming language natapos sa usa ka kurikulum sa eskwelahan sa Pascal gikan sa 10 ka tuig na ang milabay. Bisan pa, nakahukom ko nga moadto sa usa ka kampo sa IT, diin maayo alang sa mga bata nga maghimo usa ka bot. Nakahukom ko nga kini dili kaayo lisud.

Kini nagsugod sa usa ka taas nga panaw diin ako:

  • nag-deploy og cloud server uban sa Ubuntu,
  • nakarehistro sa GitHub,
  • nakakat-on sa batakang JavaScript syntax,
  • pagbasa sa usa ka tonelada nga mga artikulo sa English ug Russian,
  • sa katapusan nakahimo ug bot
  • sa katapusan gisulat kini nga post.

Ang katapusan nga resulta ingon niini:

Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

Isulti ko dayon nga kini usa ka artikulo alang sa mga nagsugod - aron lang masabtan kung giunsa pagbuhat ang mga sukaranan nga mga butang gikan sa wala.

Ug usab - alang sa mga advanced programmer - aron lang makapakatawa sila og gamay.

1. Giunsa pagsulat ang code sa JS?

Nasabtan nako nga kinahanglan una nga masabtan ang syntax sa pinulongan. Ang pagpili nahulog sa JavaScript, tungod lang kay ang sunod nga lakang alang kanako mao ang paghimo og aplikasyon sa ReactNative. Nagsugod ko sa kurso sa Codecademy ug madasigon kaayo. Ang unang 7 ka adlaw libre. Tinuod nga mga proyekto. Rekomend ko. Nagkinahanglan kini og mga 25 ka oras aron makalusot. Sa pagkatinuod, dili tanan niini mapuslanon. Ingon niini ang hitsura sa istruktura sa kurso ug ang una nga bloke sa detalye.

Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

2. Giunsa pagparehistro ang usa ka bot?

Nakatabang kaayo nako sa sinugdanan Kini nga artikulo gikan sa blog sa usa ka Archakov. Nangusap siya sa sinugdanan pa lang. Apan ang nag-unang butang nga naa mao ang mga panudlo alang sa pagparehistro sa bot. Dili ko mosulat nga mas maayo, ug tungod kay kini ang pinakasayon ​​nga bahin, ako na lang isulat ang kinatibuk-an. Kinahanglan ka nga maghimo usa ka bot ug makuha ang API niini. Gihimo kini pinaagi sa laing bot - @BotFather. Pangitaa siya sa telegrama, pagsulat kaniya, pag-agi sa usa ka yano nga dalan ug pagkuha (pagluwas!) API key (kini usa ka hugpong sa mga numero ug mga letra). Kini magamit alang kanako sa ulahi.

Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

3. Unsa ang hitsura sa bot code?

Human sa dugay nga pagtuon sa mga artikulo, akong naamgohan nga angayan nga gamiton ang usa ka matang sa librarya (third-party code sa module format) aron dili mag-antos sa pagtuon sa telegrama nga API ug paghimo og dagkong mga piraso sa code gikan sa scratch. Nakakita ko og framework telegrapo, nga kinahanglan nga konektado sa usa ka butang gamit ang npm o hilo. Mao kini ang akong nasabtan kung unsa ang gilangkuban sa pag-deploy sa bot. Katawa dinhi. Dili ko masuko. Ang mga pananglitan sa ubos sa panid nakatabang kanako pag-ayo sa sunod nga pagmugna sa bot:

Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

3. Giunsa paghimo ang imong kaugalingon nga cloud server alang sa 100 nga mga rubles

Human sa daghang pagpangita, akong nahibal-an nga ang 'npm' nga sugo gikan sa hulagway sa ibabaw nagtumong sa command line. Ang command line anaa bisan asa, apan aron mahimo kini, kinahanglan nimo nga i-install ang NodePackageManager. Ang problema mao nga nagprograma ako sa usa ka PixelBook nga adunay ChromeOS. Laktawan nako ang usa ka dako nga bloke dinhi kung giunsa nako nahibal-an ang Linux - alang sa kadaghanan, wala kini ug wala kinahanglana. Kung naa kay Windows o MacBook, naa na kay console.

Sa laktod nga pagkasulti, akong gi-install ang Linux pinaagi sa Crostini.

Bisan pa, sa proseso, akong naamgohan nga aron ang bot molihok sa tanang panahon (ug dili lang kung ang akong kompyuter gi-on), nagkinahanglan ko og cloud server. Gipili nako vscale.io Migasto ko og 100 ka rubles ug gipalit ang pinakabarato nga Ubuntu server (tan-awa ang hulagway).

Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

4. Sa unsa nga paagi sa pag-andam sa usa ka server sa pagpadagan sa usa ka bot

Human niana, akong naamgohan nga kinahanglan kong maghimo ug usa ka matang sa folder sa server diin akong ibutang ang file nga adunay code text. Aron mahimo kini, sa console (direkta nga pagdagan sa website pinaagi sa buton nga "Open console"), misulod ako

mkdir bot

bot - nahimo kini nga ngalan sa akong folder. Human niana, akong gi-install ang npm ug Node.js, nga magtugot kanako sa pagdagan sa code gikan sa *.js files.

sudo apt update
sudo apt install nodejs
sudo apt install npm

Girekomenda nako sa kini nga yugto nga magbutang usa ka koneksyon sa server pinaagi sa imong console. Dinhi manwal Kini magtugot kanimo sa pagtrabaho uban sa server direkta pinaagi sa console sa imong computer.

5. Giunsa pagsulat ang code para sa imong unang bot.

Karon kini usa lamang ka pagpadayag alang kanako. Ang bisan unsang programa kay linya lang sa teksto. Mahimo nimong i-drive sila bisan asa, i-save gamit ang gusto nga extension ug mao ra kana. Gwapa ka. akong gigamit atomo, apan sa pagkatinuod, mahimo ka lang magsulat sa usa ka standard notepad. Ang nag-unang butang mao ang pagluwas sa file sa ulahi sa gusto nga extension. Sama kini sa pagsulat sa teksto sa Pulong ug pag-save niini.

Naghimo ako og bag-ong file, diin akong gisal-ot ang code gikan sa panig-ingnan sa panid sa telegraf ug gitipigan kini sa index.js file (sa kinatibuk-an dili kinahanglan nga hingalan ang file sa ingon nga paagi, apan kini naandan). Importante - imbes nga BOT_TOKEN, isulod ang imong API key gikan sa ikaduhang paragraph.

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. Giunsa pagduso ang code sa server pinaagi sa github

Karon kinahanglan nako nga i-upload kini nga code sa server ug ipadagan kini. Kini nahimong usa ka hagit alang kanako. Ingon usa ka sangputanan, pagkahuman sa daghang kalisud, akong naamgohan nga mas sayon ​​​​ang paghimo og file sa github nga nagtugot kanimo sa pag-update sa code gamit ang usa ka command sa console. Nagparehistro ko og account sa github ug gibuhat bag-ong proyektodiin ako nag-upload sa file. Pagkahuman niana, kinahanglan nako nga mahibal-an kung giunsa ang pag-set up sa pag-upload sa mga file gikan sa akong (bukas!) nga account sa server sa folder sa bot (kung kalit nimo kini gibiyaan, isulat lang ang cd bot).

7. Giunsa ang pag-upload sa mga file sa server pinaagi sa github part 2

Kinahanglan nakong ibutang ang usa ka programa sa server nga mag-download sa mga file gikan sa git. Gi-install nako ang git sa server pinaagi sa pag-type

apt-get install git

Pagkahuman niana, kinahanglan nako nga i-set up ang mga pag-upload sa file. Aron mahimo kini, nagmaneho ako sa linya sa mando

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

Ingon usa ka sangputanan, ang tanan gikan sa proyekto gi-upload sa server. Ang sayup sa kini nga yugto mao nga naghimo ako usa ka ikaduha nga folder sa sulod sa naa na nga folder sa bot. Ang adres sa file morag */bot/bot/index.js

Nakahukom ko nga ibaliwala kini nga problema.

Ug aron ma-load ang librarya sa telegraf, nga among gihangyo sa una nga linya sa code, i-type ang mando sa console.

npm install telegraf

8. Giunsa pagsugod ang bot

Aron mahimo kini, samtang naa sa folder nga adunay file (aron mobalhin gikan sa folder ngadto sa folder pinaagi sa console, padagana ang format command cd bot Aron masiguro nga naa ka kung asa nimo kinahanglan, mahimo ka magsulud usa ka mando nga ipakita sa console ang tanan nga mga file ug folder nga naa didto ls -a

Sa pagsugod, misulod ko sa console

node index.js

Kung wala’y sayup, maayo ang tanan, nagtrabaho ang bot. Pangitaa siya sa telegrama. Kung adunay sayup, gamita ang imong kahibalo gikan sa punto 1.

9. Giunsa pagpadagan ang bot sa background

Dali nimong mahibal-an nga ang bot molihok lamang kung ikaw mismo naglingkod sa console. Aron masulbad kini nga problema gigamit nako ang mando

screen

Pagkahuman niana, usa ka screen nga adunay pipila nga teksto ang makita. Kini nagpasabot nga ang tanan maayo ra. Naa ka sa virtual server sa cloud server. Aron mas masabtan kung giunsa kini tanan molihok - ania ang artikulo. Adto lang sa imong folder ug i-type ang command aron ilunsad ang bot

node index.js

10. Giunsa ang paggana sa bot ug kung giunsa pagpalapad ang pagpaandar niini

Unsa ang mahimo sa atong bot gikan sa pananglitan? Mahimo niya

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

ingna "Welcome!" sa gutlo sa pagsugod (sulayi pag-usab ang teksto)

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

agig tubag sa standard /help command, ipadala ang mensahe nga "Send me a sticker"

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

ipadala ang pagtugot agig tubag sa usa ka sticker

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

tubag "Uy didto" kung ilang isulat 'hi'
bot.launch()

Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

Kung imong tan-awon ang code sa github, unya dali nimong maamgohan nga wala pa kaayo ako nakalayo sa kini nga pagpaandar. Ang aktibo nga gigamit mao ang function ctx.replyWithPhoto Gitugotan ka niini nga magpadala usa ka piho nga litrato o gif agig tubag sa usa ka piho nga teksto.

Usa ka mahinungdanong bahin sa code ang gisulat sa mga bata nga nag-edad 11-13, nga akong gihatagan og access sa bot. Ilang gisulod ang ilang user-cases. Sa akong hunahuna dali ra mahibal-an kung unsang bahin ang nahimo nila.

Pananglitan, ang usa ka GIF nga adunay bantog nga karakter gikan sa Adventure Time cartoon moabut sa mensahe nga "jake".

Giya: kung giunsa paghimo ang usa ka yano nga bot alang sa Telegram sa JS alang sa usa ka nagsugod sa programming

Aron mapalambo pa ang bot, kinahanglan nimong ikonektar ang usa ka keyboard, tan-awa ang mga pananglitan, pananglitan, gikan dinhi

11. Giunsa ang pag-update sa code ug i-restart ang bot

Ayaw kalimti nga kinahanglan nimo nga i-update ang code dili lamang sa github, apan usab sa server. Sayon nga buhaton kini - ihunong ang bot (i-press ctrl + c),

- pagsulod sa console samtang naa sa target nga folder, git pull
- i-restart ang bot gamit ang command node index.js

END

Daghan sa mga butang nga gihulagway sa kini nga file mahimong klaro kaayo sa mga advanced programmer. Bisan pa, sa diha nga ako mismo misulay sa paglukso sa bung-aw ngadto sa kalibutan sa mga bot sa usa ka pagdagan, gimingaw gyud ko sa ingon nga giya. Usa ka giya nga dili mawala ang klaro ug yano nga mga butang alang sa bisan unsang espesyalista sa IT.

Sa umaabot, nagplano ako usa ka post kung giunsa paghimo ang imong una nga aplikasyon sa ReactNative sa parehas nga istilo, pag-subscribe!

Source: www.habr.com

Idugang sa usa ka comment