Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

Nilianza kujitumbukiza katika ulimwengu wa IT wiki tatu zilizopita. Kwa kweli, wiki tatu zilizopita hata sikuelewa sintaksia ya HTML, na utangulizi wangu kwa lugha za programu ulimalizika na mtaala wa shule juu ya Pascal kutoka miaka 10 iliyopita. Hata hivyo, niliamua kwenda kwenye kambi ya IT, ambapo itakuwa nzuri kwa watoto kufanya bot. Niliamua kwamba haikuwa ngumu sana.

Hii ilianza safari ndefu ambayo mimi:

  • ilipeleka seva ya wingu na Ubuntu,
  • imesajiliwa kwenye GitHub,
  • kujifunza syntax ya msingi ya JavaScript,
  • soma tani ya nakala kwa Kiingereza na Kirusi,
  • hatimaye alifanya bot,
  • Hatimaye niliandika makala hii.

Matokeo ya mwisho yalionekana kama hii:

Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

Nitasema mara moja kwamba hii ni makala kwa Kompyuta - tu kuelewa jinsi ya kufanya mambo ya msingi kutoka mwanzo.

Na pia - kwa waandaaji wa programu za hali ya juu - kuwafanya wacheke kidogo.

1. Jinsi ya kuandika msimbo katika JS?

Nilielewa kuwa ilifaa angalau kuelewa sintaksia ya lugha kwanza. Chaguo lilianguka kwenye JavaScript, kwa sababu hatua iliyofuata kwangu ilikuwa kuunda programu katika ReactNative. Nilianza na kozi kwenye Codecademy na alifurahiya sana. Siku 7 za kwanza ni bure. Miradi ya kweli. Napendekeza. Kukamilisha kulichukua kama masaa 25. Kwa kweli, sio yote yalikuwa yenye manufaa. Hivi ndivyo muundo wa kozi unavyoonekana na kizuizi cha kwanza kwa undani.

Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

2. Jinsi ya kusajili bot?

Hii ilinisaidia sana hapo mwanzo Makala hii kutoka kwa blogi ya Archakov fulani. Anatafuna mwanzo kabisa. Lakini jambo kuu ambalo kuna maagizo ya kusajili bot. Siwezi kuandika vizuri zaidi, na kwa kuwa hii ndiyo sehemu rahisi zaidi, nitaandika tu kiini. Unahitaji kuunda bot na kupata API yake. Hii inafanywa kupitia bot nyingine - @BotFather. Mtafute kwenye telegramu, mwandikie, fuata njia rahisi na upate (hifadhi!) Kitufe cha API (hii ni seti ya nambari na barua). Ilikuja kwa manufaa baadaye.

Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

3. Je, msimbo wa bot unaonekanaje?

Baada ya kusoma nakala kwa muda mrefu, niligundua kuwa inafaa kutumia aina fulani ya maktaba (msimbo wa mtu wa tatu katika muundo wa moduli) ili usiwe na wasiwasi juu ya kusoma API ya Telegraph na kuunda vipande vikubwa vya nambari kutoka mwanzo. Nimepata mfumo telegrafu, ambayo ilihitaji kuunganishwa kwa namna fulani na kitu kwa kutumia npm au uzi. Hivi ndivyo nilivyoelewa basi kupelekwa kwa bot kulijumuisha nini. Cheka hapa. Sitachukizwa. Mifano iliyo chini ya ukurasa ilinisaidia zaidi wakati wa uundaji uliofuata wa bot:

Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

3. Jinsi ya kuunda seva yako ya wingu kwa rubles 100

Baada ya utaftaji mwingi, niligundua kuwa amri ya 'npm' kwenye picha hapo juu inarejelea safu ya amri. Mstari wa amri iko kila mahali, lakini ili uweze kutekeleza, unahitaji kusakinisha NodePackageManager. Shida ilikuwa kwamba nilikuwa nikipanga kwenye PixelBook na ChromeOS. Nitaruka hapa kizuizi kikubwa kuhusu jinsi nilivyojifunza Linux - kwa wengi ni tupu na sio lazima. Ikiwa una Windows au MacBook, tayari unayo console.

Kwa kifupi, niliweka Linux kupitia Crostini.

Walakini, katika mchakato huo, niligundua kuwa ili bot ifanye kazi kila wakati (na sio tu wakati kompyuta yangu iko), ninahitaji seva ya wingu. Nilichagua vscale.io Nilitumia rubles 100 na kununua seva ya Ubuntu ya bei nafuu (tazama picha).

Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

4. Jinsi ya kuandaa seva ili kuendesha bot

Baada ya hapo, niligundua kuwa nilihitaji kutengeneza aina fulani ya folda kwenye seva ambayo ningeweka faili na maandishi ya nambari. Ili kufanya hivyo, katika console (kukimbia moja kwa moja kwenye tovuti kupitia kifungo cha "Fungua console"), niliingia

mkdir bot

bot - hili likawa jina la folda yangu. Baada ya hapo, nilisakinisha npm na Node.js, ambayo itaniruhusu kuendesha msimbo kutoka kwa faili zilizo na azimio la *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Ninapendekeza sana kusanidi muunganisho kwa seva kupitia koni yako katika hatua hii. Hapa maelekezo Hii itawawezesha kufanya kazi na seva moja kwa moja kupitia console ya kompyuta yako.

5. Jinsi ya kuandika msimbo wa roboti yako ya kwanza.

Lakini sasa ni ugunduzi tu kwangu. Mpango wowote ni mistari tu ya maandishi. Wanaweza kuingizwa popote, kuokolewa na ugani unaohitajika, na ndivyo. Wewe ni mrembo. nilitumia Atom, lakini kwa kweli, unaweza kuandika tu kwenye daftari la kawaida. Jambo kuu ni kuokoa faili baadaye katika ugani uliotaka. Ni kama kuandika maandishi katika Neno na kuyahifadhi.

Nilifanya faili mpya, ambayo niliingiza msimbo kutoka kwa mfano kwenye ukurasa wa telegraf na kuihifadhi kwenye faili ya index.js (kwa ujumla si lazima kutaja faili kwa njia hiyo, lakini hii ni desturi). Muhimu - badala ya BOT_TOKEN, weka ufunguo wako wa API kutoka kwa aya ya pili.

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. Jinsi ya kupakia msimbo kwa seva kupitia github

Sasa nilihitaji kupakia nambari hii kwa seva na kuiendesha. Hii ikawa changamoto kwangu. Kama matokeo, baada ya shida nyingi, niligundua kuwa itakuwa rahisi kuunda faili kwenye github ambayo hukuruhusu kusasisha nambari kwa kutumia amri kwenye koni. Nilisajili akaunti kwenye github na alifanya mradi mpya, ambapo nilipakia faili. Baada ya hapo, nilihitaji kujua jinsi ya kusanidi kupakia faili kutoka kwa akaunti yangu (kufungua!) kwa seva kwenye folda ya bot (ikiwa umeiacha ghafla, andika tu cd bot).

7. Jinsi ya kupakia faili kwa seva kupitia github sehemu ya 2

Nilihitaji kusanikisha programu kwenye seva ambayo ingepakua faili kutoka kwa git. Niliweka git kwenye seva kwa kuandika kwenye koni

apt-get install git

Baada ya hapo nilihitaji kusanidi upakiaji wa faili. Ili kufanya hivyo, niliandika kwenye mstari wa amri

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

Kama matokeo, kila kitu kutoka kwa mradi kilipakiwa kwenye seva. Kosa katika hatua hii ni kwamba kimsingi nilitengeneza folda ya pili ndani ya folda iliyopo tayari ya bot. Anwani ya faili ilionekana kama */bot/bot/index.js

Niliamua kupuuza shida hii.

Na kupakia maktaba ya telegraf, ambayo tunaomba katika mstari wa kwanza wa kanuni, chapa amri kwenye console.

npm install telegraf

8. Jinsi ya kuzindua bot

Ili kufanya hivyo, ukiwa kwenye folda na faili (kuhama kutoka folda hadi folda kupitia koni, endesha amri ya umbizo cd bot Ili kuhakikisha kuwa uko mahali unahitaji kuwa, unaweza kuingiza amri ambayo itaonyesha kwenye koni faili zote na folda zilizo hapo. ls -a

Kuanza, niliingia kwenye koni

node index.js

Ikiwa hakuna kosa, kila kitu ni sawa, bot inafanya kazi. Mtafute kwenye telegramu. Ikiwa kuna hitilafu, tumia ujuzi wako kutoka kwa nukta ya 1.

9. Jinsi ya kuendesha bot kwa nyuma

Haraka sana utagundua kuwa bot inafanya kazi tu wakati wewe mwenyewe umekaa kwenye koni. Ili kutatua shida hii nilitumia amri

screen

Baada ya hayo, skrini iliyo na maandishi fulani itaonekana. Hii inamaanisha kuwa kila kitu kiko sawa. Uko kwenye seva pepe kwenye seva ya wingu. Ili kuelewa vizuri jinsi yote inavyofanya kazi - hii hapa makala. Nenda tu kwenye folda yako na uweke amri ya kuzindua bot

node index.js

10. Jinsi bot inavyofanya kazi na jinsi ya kupanua utendaji wake

Mfano wetu unaweza kufanya nini? Anaweza

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

sema "Karibu!" wakati wa kuanza (jaribu kubadilisha maandishi)

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

kwa kujibu amri ya kawaida / msaada, tuma ujumbe "Nitumie kibandiko"

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

tuma idhini kwa kujibu kibandiko

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

jibu "Halo huko" ikiwa wanamwandikia "hi".
bot.zindua()

Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

Ukiangalia kanuni katika github, basi utaelewa haraka kwamba sijaenda mbali sana na utendaji huu. Kinachotumika kikamilifu ni kazi ctx.replyWithPhoto Inakuruhusu kutuma picha au gif maalum kwa kujibu maandishi mahususi.

Sehemu kubwa ya kanuni iliandikwa na watoto wenye umri wa miaka 11-13, ambao niliwapa ufikiaji wa bot. Waliingia kwenye kesi ya mtumiaji. Nadhani ni rahisi kusema ni sehemu gani ilitengenezwa nao.

Kwa mfano, ujumbe "Jake" utapokea GIF na mhusika maarufu kutoka kwa Wakati wa Matangazo ya katuni.

Mwongozo: jinsi ya kutengeneza bot rahisi ya Telegraph katika JS kwa anayeanza katika upangaji

Ili kuendeleza bot zaidi, unahitaji kuunganisha kibodi, angalia mifano, kwa mfano, hivyo

11. Jinsi ya kusasisha msimbo na kuanzisha upya bot

Usisahau kwamba unahitaji kusasisha msimbo sio tu kwenye github, lakini pia kwenye seva. Hii ni rahisi kufanya - simamisha bot (bonyeza ctrl+c),

- ingiza kwenye koni ukiwa kwenye folda inayolengwa, git pull
- tunazindua bot tena kwa amri node index.js

MWISHO

Mambo mengi yaliyofafanuliwa katika faili hii yatakuwa dhahiri sana kwa watengeneza programu wa hali ya juu. Walakini, nilipojaribu kuruka juu ya shimo kwenye ulimwengu wa roboti kwa haraka, nilikosa mwongozo kama huo. Mwongozo ambao haukosa mambo ambayo ni dhahiri na rahisi kwa mtaalamu yeyote wa IT.

Katika siku zijazo, ninapanga chapisho kuhusu jinsi ya kutuma ombi lako la kwanza kwenye ReactNative kwa mtindo sawa, jisajili!

Chanzo: mapenzi.com

Kuongeza maoni