Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

Min sê hefte berê dest pê kir ku xwe di cîhana IT-ê de bihêlim. Bi ciddî, ​​sê hefte berê min hevoksaziya HTML-ê jî fam nekir, û danasîna min bi zimanên bernamesaziyê re bi bernameyek dibistanê ya li ser Pascal ji 10 sal berê bi dawî bû. Lêbelê, min biryar da ku biçim kampek IT-ê, li wir dê xweş be ku zarok botek çêbikin. Min biryar da ku ew qas dijwar e.

Vê rêwîtiyek dirêj dest pê kir ku tê de min:

  • bi Ubuntu re serverek ewr saz kir,
  • li GitHub qeydkirî,
  • hevoksaziya bingehîn a JavaScript fêr bû,
  • bi îngîlîzî û rûsî gelek gotar bixwînin,
  • di dawiyê de botek çêkir,
  • Di dawiyê de min ev gotara nivîsand.

Encama dawî tiştek wiha xuya bû:

Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

Ez ê tavilê bibêjim ku ev gotarek ji bo destpêkan e - tenê ji bo ku fêm bikin ka meriv çawa tiştên bingehîn ji sifrê dike.

Û di heman demê de - ji bo bernamenûsên pêşkeftî - tenê ji bo ku ew hinekî bikenin.

1. Meriv çawa kodê di JS de binivîse?

Min fêm kir ku bi kêmanî hêjayî fêmkirina hevoksaziya ziman e. Hilbijartin li ser JavaScript ket, tenê ji ber ku gava duyemîn ji bo min ev bû ku ez di ReactNative de serîlêdanek biafirînim. Min dest pê kir kûrs li ser Codecademy û pir kêfxweş bû. 7 rojên pêşîn belaş in. Projeyên rastîn. Ez pêşniyar dikim. Temamkirina wê nêzî 25 saetan girt. Bi rastî, ne hemî ew kêrhatî bû. Ya ku strukturên qursê dixuye û bloka yekem bi hûrgulî ev e.

Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

2. Meriv çawa botek tomar dike?

Vê yekê di destpêkê de gelek alîkariya min kir vê gotarê ji bloga hin Archakov. Ew di destpêkê de dipijiqîne. Lê ya sereke ya ku heye rêwerzên ji bo qeydkirina botekê ye. Ez nikarim çêtir binivîsim, û ji ber ku ev beşa herî hêsan e, ez ê tenê esasê binivîsim. Pêdivî ye ku hûn botekek çêbikin û API-ya wê bistînin. Ev bi riya botek din - @BotFather. Wî li ser telegramê bibînin, jê re binivîsin, riya hêsan bişopînin û bişkojek API-ê (ev komek jimar û tîpan) bistînin (biparêze!). Paşê bi kêr hat.

Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

3. Koda botê çawa xuya dike?

Piştî xwendina gotaran ji bo demek dirêj, min fêhm kir ku hêja ye ku meriv cûreyek pirtûkxaneyek bikar bîne (koda sêyemîn a di forma modulê de) da ku ji xwendina API-a Telegram-ê û afirandina perçeyên mezin ên kodê ji sifirê xeman nebim. Min çarçoveyek dît têlxiraf, ku hewce bû ku bi rengek bi tiştek bi karanîna npm an yarn ve girêdayî be. Bi vî rengî min hingê fêm kir ku bicîhkirina botek ji çi pêk tê. Li vir bikenin. Ez ê aciz nebim. Nimûneyên li binê rûpelê di dema afirandina botê ya paşîn de herî zêde alîkariya min kir:

Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

3. Meriv çawa ji bo 100 rubleyan servera xweya ewr biafirîne

Piştî gelek lêgerînê, min fêm kir ku emrê 'npm' di wêneya jorîn de rêza fermanê vedigire. Rêza fermanê li her derê ye, lê ji bo ku hûn karibin wê bicîh bikin, hûn hewce ne ku NodePackageManager saz bikin. Pirsgirêk ev bû ku min bi ChromeOS re li ser PixelBookek bername dikir. Ez ê li vir blokek mezin derxim ka ez çawa fêrî Linux bûm - ji bo piran ew vala û nepêwist e. Ger Windows an MacBookek we hebe, jixwe konsolek we heye.

Bi kurtasî, min Linux bi Crostini saz kir.

Lêbelê, di vê pêvajoyê de, min fêm kir ku ji bo ku bot bi domdarî bixebite (û ne tenê dema ku komputera min vekirî ye), ez hewceyê serverek ewr e. Min hilbijart vscale.io Min 100 ruble xerc kir û servera Ubuntu ya herî erzan kirî (binihêre wêne).

Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

4. Meriv çawa serverek amade dike ku botek bimeşîne

Piştî wê, min fêm kir ku ez hewce dikim ku peldankek li ser serverê çêkim ku tê de ez ê pelê bi nivîsa kodê bixim. Ji bo kirina vê yekê, di konsolê de (rasterast li ser malperê bi bişkoja "Konsolê Vekirî" ve were xebitandin), ez ketim

mkdir bot

bot - ev bû navê peldanka min. Piştî wê, min npm û Node.js saz kir, ku dê bihêle ez paşê kodê ji pelên bi çareseriya * .js vekim.

sudo apt update
sudo apt install nodejs
sudo apt install npm

Ez bi tundî pêşniyar dikim ku di vê qonaxê de bi konsolê xwe ve têkiliyek bi serverê re saz bikin. Vir destûra Ev ê dihêle hûn rasterast bi navgîniya konsolê komputera xwe bi serverê re bixebitin.

5. Çawa kodê ji bo bota xweya yekem binivîse.

Lê niha ew ji bo min tenê vedîtinek e. Her bername tenê rêzikên nivîsê ye. Ew dikarin li her deverê werin danîn, bi dirêjkirina xwestinê werin hilanîn, û ew e. Hûn rindikin. Min bi kar anî Atom, lê di rastiyê de, hûn dikarin tenê di notepadek standard de binivîsin. Ya sereke ev e ku pelê paşê di dirêjkirina xwestinê de hilîne. Mîna nivîsandina nivîsê di Wordê de û tomarkirina wê ye.

Min pelek nû çêkir, ku min koda ji mînaka li ser rûpela telegrafê xist nav wê û di pelê index.js de tomar kir (bi gelemperî ne hewce ye ku pelê bi vî rengî were nav kirin, lê ev adetî ye). Girîng - li şûna BOT_TOKEN, mifteya API-ya xwe ji paragrafa duyemîn têxin.

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. Meriv çawa kodê li serverê bi riya github bar dike

Naha min hewce kir ku bi rengekî vê kodê li serverê bar bikim û wê bimeşînim. Ev ji bo min bû dijwariyek. Wekî encamek, piştî gelek ceribandinan, min fêm kir ku ew ê hêsantir be ku meriv pelek li ser github biafirîne ku dihêle hûn kodê bi karanîna fermanek di konsolê de nûve bikin. Min li ser hesabek qeyd kir github û kir projeya nû, ku min pelê lê barkir. Piştî wê, min hewce kir ku ez fêhm bikim ka meriv çawa pelan barkirina ji hesabê xwe (vekirî!) li servera di peldanka botê de saz dike (heke we ji nişka ve ew hiştin, tenê cd bot binivîsin).

7. Meriv çawa pelan li serverê bi riya github part 2 bar dike

Min hewce kir ku bernameyek li ser serverê saz bikim ku pelan ji git dakêşin. Min git li ser serverê bi nivîsandina konsolê saz kir

apt-get install git

Piştî wê min hewce kir ku barkirina pelê mîheng bikim. Ji bo vê yekê, min di rêza fermanê de nivîsand

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

Wekî encamek, her tişt ji projeyê li serverê hate barkirin. Di vê qonaxê de xeletî ev bû ku min di bingeh de peldankek duyemîn di hundurê peldanka botê ya heyî de çêkir. Navnîşana pelê wekî */bot/bot/index.js xuya bû

Min biryar da ku ez vê pirsgirêkê paşguh bikim.

Û ji bo barkirina pirtûkxaneya telegrafê, ya ku em di rêza yekem a kodê de daxwaz dikin, fermanê li konsolê binivîsin.

npm install telegraf

8. Meriv çawa botek dest pê dike

Ji bo vê yekê, dema ku di peldanka pelê de ye (ji bo ku bi konsolê ve ji peldankê berbi peldankê bigerin, emrê formatê bişopînin cd bot Ji bo ku hûn pê ewle bin ku hûn li cihê ku hûn hewce ne lê bin, hûn dikarin fermanek têkevin ku dê hemî pel û peldankên ku li wir hene di konsolê de nîşan bide. ls -a

Ji bo destpêkê, ez ketim konsolê

node index.js

Heke xeletiyek tune, her tişt baş e, bot dixebite. Li ser telegramê li wî bigerin. Ger xeletiyek hebe, zanîna xwe ji xala 1-ê bicîh bînin.

9. Meriv çawa botekê di paşerojê de dimeşîne

Pir zû hûn ê fêm bikin ku bot tenê gava ku hûn bi xwe di konsolê de rûniştin dixebite. Ji bo çareserkirina vê pirsgirêkê min ferman bikar anî

screen

Piştî vê yekê, ekranek bi hin nivîsê dê xuya bibe. Ev tê wateya ku her tişt baş e. Hûn li ser serverek virtual li ser serverek ewr in. Ji bo ku çêtir fêm bikin ka ew hemî çawa dixebite - li vir gotar e. Tenê biçin peldanka xwe û fermanê têkevin ku botê dest pê bike

node index.js

10. Bot çawa dixebite û çawa fonksiyona xwe berfireh dike

Bota mînaka me dikare çi bike? Ew dikare

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

bêje "Bi xêr hatî!" di dema destpêkê de (biceribînin ku nivîsê biguherînin)

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

di bersiva fermana standard / alîkariyê de, peyama "Ji min re çîçek bişîne" bişînin

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

di bersivê de erêkirinê bişînin

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

Heke ji wî re "silav" binivîsin bersiv bidin "Hey li wir".
bot.launch()

Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

Ger hûn li kodê binêrin github, wê hingê hûn ê zû fêm bikin ku ez ji vê fonksiyonê pir dûr neçûm. Ya ku bi çalak tê bikar anîn fonksiyon e ctx.replyWithPhoto Ew dihêle hûn di bersiva nivîsarek taybetî de wêneyek an gifek diyarkirî bişînin.

Beşek girîng a kodê ji hêla zarokên 11-13 salî ve hatî nivîsandin, ku min gihîştina botê da wan. Ew ketin doseya bikarhênerê xwe. Ez difikirim ku hêsan e ku meriv bibêje ka kîjan beş ji hêla wan ve hatî çêkirin.

Mînakî, peyama "Jake" dê GIF-ek bi karakterek navdar ji kartona Adventure Time bistîne.

Rêber: meriv çawa ji bo destpêkek di bernamekirinê de botek Telegram-a hêsan di JS-ê de çêdike

Ji bo pêşdebirina botê bêtir, hûn hewce ne ku klavyeyekê girêdin, mînakan bibînin, mînakî, ji vir

11. Çawa kodê nûve bikin û botê ji nû ve bidin destpêkirin

Ji bîr nekin ku hûn hewce ne ku kodê ne tenê li ser github, lê di heman demê de li ser serverê jî nûve bikin. Ev hêsan e ku meriv bike - botê rawestîne (ctrl+c çap bike),

- Di peldanka armancê de têkevin konsolê, git pull
- em bi fermanê dîsa botê dest pê dikin node index.js

DAWÎ

Gelek tiştên ku di vê pelê de têne vegotin dê ji bo bernamenûsên pêşkeftî pir eşkere bin. Lêbelê, gava ku min bi xwe hewl da ku bi yek lingê xwe ji ser qulikê berbi cîhana botan ve biçim, min bi rastî bêriya rêberek wusa kir. Rêbernameyek ku ji bo her pisporek IT-ê tiştên ku eşkere û hêsan in ji bîr nake.

Di pêşerojê de, ez plansaz dikim ku meriv çawa serlêdana xweya yekem a li ser ReactNative bi heman şêwazê çêbike, bibe abone!

Source: www.habr.com

Add a comment