Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

Dim ond tair wythnos yn Γ΄l y dechreuais blymio i'r byd TG. O ddifrif, tair wythnos yn Γ΄l doeddwn i ddim hyd yn oed yn deall cystrawen HTML, a daeth adnabyddiaeth o ieithoedd rhaglennu i ben gyda maes llafur Pascal 10-mlwydd-oed. Fodd bynnag, penderfynais fynd i wersyll TG, y byddai'n braf gwneud bot ar gyfer eu plant. Roeddwn i'n meddwl nad oedd hi mor anodd.

Dechreuodd hyn daith hir, lle gwnes i:

  • defnyddio gweinydd cwmwl gyda Ubuntu,
  • wedi cofrestru ar GitHub,
  • wedi dysgu cystrawen JavaScript sylfaenol,
  • darllen tunnell o erthyglau yn Saesneg a Rwsieg,
  • o'r diwedd gwnaeth bot
  • ysgrifennodd y post hwn o'r diwedd.

Roedd y canlyniad terfynol yn edrych fel hyn:

Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

Fe ddywedaf ar unwaith mai erthygl ar gyfer dechreuwyr yw hon - dim ond i ddeall sut i wneud pethau elfennol o'r cychwyn cyntaf.

A hefyd - ar gyfer rhaglenwyr uwch - dim ond i wneud iddynt chwerthin ychydig.

1. Sut i ysgrifennu cod yn JS?

Deallais ei bod yn werth o leiaf ddeall cystrawen yr iaith yn gyntaf. Syrthiodd y dewis ar JavaScript, yn syml oherwydd y cam nesaf i mi oedd creu cais yn ReactNative. Dechreuais gyda cwrs ar Codecademy ac roedd yn frwdfrydig iawn. Mae'r 7 diwrnod cyntaf yn rhad ac am ddim. Prosiectau go iawn. Rwy'n argymell. Cymerodd y daith tua 25 awr. Mewn gwirionedd, nid oedd y cyfan yn ddefnyddiol. Dyma sut olwg sydd ar strwythur y cwrs a’r bloc cyntaf yn fanwl.

Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

2. Sut i gofrestru bot?

Wedi fy helpu llawer yn y dechrau yr erthygl hon o flog rhyw Archakov. Mae'n cnoi ar y cychwyn cyntaf. Ond y prif beth sydd yno yw'r cyfarwyddiadau ar gyfer cofrestru'r bot. Ni fyddaf yn ysgrifennu'n well, a chan mai dyma'r rhan hawsaf, dim ond ysgrifennu'r byrdwn a wnaf. Mae angen i chi greu bot a chael ei API. Gwneir hyn trwy bot arall - @BotFather. Dewch o hyd iddo mewn telegram, ysgrifennwch ato, dilynwch y llwybr syml a chael (arbed!) Allwedd API (mae hon yn set o rifau a llythyrau). Daeth yn ddefnyddiol i mi yn ddiweddarach.

Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

3. Sut olwg sydd ar y cod bot?

Ar Γ΄l astudiaeth hir o'r erthyglau, sylweddolais ei bod yn werth defnyddio rhyw fath o lyfrgell (cod trydydd parti ar ffurf modiwl) er mwyn peidio Γ’ dioddef o astudio'r API telegram a chreu darnau mawr o god o'r dechrau. Des i o hyd i fframwaith telegraff, a oedd angen ei gysylltu rywsut Γ’ rhywbeth gan ddefnyddio npm neu edafedd. Dyma sut y deallais wedyn beth mae defnyddio'r bot yn ei gynnwys. Chwerthin yma. Ni fyddaf yn troseddu. Roedd yr enghreifftiau ar waelod y dudalen wedi fy helpu fwyaf yn ystod creu'r bot wedyn:

Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

3. Sut i greu eich gweinydd cwmwl eich hun ar gyfer 100 rubles

Ar Γ΄l llawer o chwilio, sylweddolais fod y gorchymyn 'npm' o'r llun uchod yn cyfeirio at y llinell orchymyn. Mae'r llinell orchymyn ym mhobman, ond er mwyn gallu ei gweithredu, mae angen i chi osod y NodePackageManager. Y broblem oedd fy mod yn rhaglennu ar PixelBook gyda ChromeOS. Byddaf yn sgipio bloc mawr yma am sut y deuthum i adnabod Linux - i'r mwyafrif, mae hyn yn wag ac yn ddiangen. Os oes gennych chi Windows neu MacBook, mae gennych chi gonsol yn barod.

Yn gryno, gosodais Linux trwy Crostini.

Fodd bynnag, yn y broses, sylweddolais fod angen gweinydd cwmwl arnaf er mwyn i'r bot weithio drwy'r amser (ac nid dim ond pan fydd fy nghyfrifiadur ymlaen). Rwy'n dewis vscale.io Taflais 100 rubles, prynais y gweinydd Ubuntu rhataf (gweler y llun).

Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

4. Sut i baratoi'r gweinydd i redeg y bot

Ar Γ΄l hynny, sylweddolais fod angen i mi wneud rhywfaint o ffolder ar y gweinydd, lle byddwn yn rhoi'r ffeil gyda thestun y cod. I wneud hyn, yn y consol (rhedeg yn uniongyrchol ar y safle trwy'r botwm "Console Agored"), gyrrais

mkdir bot

bot - daeth hwn yn enw fy ffolder. Ar Γ΄l hynny, gosodais npm a Node.js, a fydd yn caniatΓ‘u imi redeg cod yn ddiweddarach o ffeiliau * .js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Rwy'n argymell yn fawr ar hyn o bryd i sefydlu cysylltiad Γ’'r gweinydd trwy'ch consol. Yma cyfarwyddyd Bydd hyn yn caniatΓ‘u ichi weithio gyda'r gweinydd yn uniongyrchol trwy gonsol eich cyfrifiadur.

5. Sut i godio'r bot cyntaf.

Nawr mae hyn yn ddim ond datguddiad i mi. Dim ond llinellau testun yw unrhyw raglen. Gallwch eu gyrru yn unrhyw le, arbed gyda'r estyniad dymunol a dyna ni. Rydych chi'n brydferth. Defnyddiais i Atom, ond mewn gwirionedd, gallwch chi ysgrifennu mewn llyfr nodiadau safonol. Y prif beth yw arbed y ffeil yn ddiweddarach yn yr estyniad a ddymunir. Mae fel ysgrifennu testun yn Word a'i gadw.

Gwneuthum ffeil newydd, lle rhoddais y cod o'r enghraifft ar y dudalen telegraf a'i gadw i'r ffeil index.js (nid oes angen enwi'r ffeil fel 'na o gwbl, ond fe'i derbynnir). Pwysig - yn lle BOT_TOKEN, mewnosodwch eich allwedd API o'r ail baragraff.

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. Sut i wthio'r cod i'r gweinydd trwy github

Nawr roedd yn rhaid i mi rywsut uwchlwytho'r cod hwn i'r gweinydd a'i redeg. I mi daeth yn her. Yn y diwedd, ar Γ΄l llawer o ddioddefaint, sylweddolais y byddai'n haws creu ffeil ar github sy'n eich galluogi i ddiweddaru'r cod gan ddefnyddio gorchymyn yn y consol. Cofrestrais i gyfrif gyda GitHub a gwnaeth prosiect newyddlle wnes i uwchlwytho'r ffeil. Ar Γ΄l hynny, roedd angen i mi ddarganfod sut i sefydlu llwytho ffeiliau o fy nghyfrif (agored!) i'r gweinydd yn y ffolder bot (os gwnaethoch chi ei adael yn sydyn, dim ond ysgrifennu cd bot).

7. Sut i uwchlwytho ffeiliau i'r gweinydd trwy github rhan 2

Roedd angen i mi roi rhaglen ar y gweinydd a fyddai'n lawrlwytho ffeiliau o git. Gosodais git ar y gweinydd trwy deipio

apt-get install git

Ar Γ΄l hynny, roedd angen i mi sefydlu uwchlwythiadau ffeil. I wneud hyn, gyrrais i'r llinell orchymyn

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

O ganlyniad, lanlwythwyd popeth o'r prosiect i'r gweinydd. Y camgymeriad ar y pwynt hwn oedd fy mod yn ei hanfod wedi gwneud ail ffolder y tu mewn i'r ffolder bot sydd eisoes yn bodoli. Roedd cyfeiriad y ffeil yn edrych fel */bot/bot/index.js

Penderfynais anwybyddu'r broblem hon.

Ac i lwytho'r llyfrgell telegraf, y gofynnwn amdani yn y llinell gyntaf o god, teipiwch y gorchymyn i'r consol.

npm install telegraf

8. Sut i gychwyn y bot

I wneud hyn, tra yn y ffolder gyda'r ffeil (i symud o ffolder i ffolder drwy'r consol, rhedeg y gorchymyn fformat cd bot I wneud yn siΕ΅r eich bod lle mae angen i chi, gallwch yrru mewn gorchymyn a fydd yn dangos yn y consol yr holl ffeiliau a ffolderi sydd yno ls -a

I ddechrau, fe wnes i fynd i mewn i'r consol

node index.js

Os nad oes gwall, mae popeth yn iawn, mae'r bot yn gweithio. Chwiliwch amdano ar telegram. Os oes gwall, cymhwyswch eich gwybodaeth o bwynt 1.

9. Sut i redeg y bot yn y cefndir

Byddwch yn sylweddoli'n gyflym mai dim ond pan fyddwch chi'ch hun yn eistedd yn y consol y bydd y bot yn gweithio. I ddatrys y broblem hon defnyddiais y gorchymyn

screen

Ar Γ΄l hynny, bydd sgrin gyda rhywfaint o destun yn ymddangos. Mae hyn yn golygu bod popeth yn iawn. Rydych chi ar weinydd rhithwir ar weinydd cwmwl. Er mwyn deall yn well sut mae'r cyfan yn gweithio - dyma'r erthygl. Ewch i'ch ffolder a theipiwch y gorchymyn i lansio'r bot

node index.js

10. Sut mae'r bot yn gweithio a sut i ehangu ei swyddogaethau

Beth all ein bot o'r enghraifft ei wneud? Mae'n gallu

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

dweud "Croeso!" ar hyn o bryd (ceisiwch newid y testun)

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

mewn ymateb i'r gorchymyn safonol / help, anfonwch y neges "Anfon sticer ataf"

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

anfon cymeradwyaeth mewn ymateb i sticer

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

ateb "Hei yna" os ydyn nhw'n ysgrifennu 'hi'
bot.launch()

Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

Os edrychwch ar y cod ar GitHub, yna byddwch yn sylweddoli'n gyflym nad wyf wedi mynd yn bell iawn o'r swyddogaeth hon. Yr hyn a ddefnyddir yn weithredol yw'r swyddogaeth ctx.replyWithPhoto Mae'n caniatΓ‘u ichi anfon llun neu gif penodol mewn ymateb i destun penodol.

Ysgrifennwyd rhan sylweddol o'r cod gan blant 11-13 oed, a rhoddais fynediad i'r bot iddynt. Aethant i mewn i'w hachosion defnyddwyr. Rwy'n meddwl ei bod yn hawdd dweud pa ran a wnaed ganddynt.

Er enghraifft, mae GIF gyda chymeriad enwog o'r cartΕ΅n Adventure Time yn dod i'r neges β€œjake”.

Canllaw: sut i wneud bot syml ar gyfer Telegram yn JS ar gyfer dechreuwr mewn rhaglennu

I ddatblygu'r bot ymhellach, mae angen i chi gysylltu'r bysellfwrdd, gweler enghreifftiau, er enghraifft, felly

11. Sut i ddiweddaru'r cod ac ailgychwyn y bot

Peidiwch ag anghofio bod angen i chi ddiweddaru'r cod nid yn unig ar github, ond hefyd ar y gweinydd. Mae'n hawdd gwneud hyn - stopiwch y bot (pwyswch ctrl + c),

- mynd i mewn i'r consol, gan fod yn y ffolder targed, git pull
- ailgychwyn y bot gyda'r gorchymyn node index.js

DIWEDD

Bydd llawer o'r pethau a ddisgrifir yn y ffeil hon yn hynod amlwg i raglenwyr uwch. Fodd bynnag, pan geisiais i fy hun neidio dros yr affwys i fyd y bots mewn un swoop syrthio, collais arweiniad o'r fath yn fawr. Canllaw nad yw'n colli pethau amlwg a syml i unrhyw arbenigwr TG.

Yn y dyfodol, rwy'n cynllunio post ar sut i wneud fy nghais cyntaf ar ReactNative yn yr un arddull, tanysgrifiwch!

Ffynhonnell: hab.com

Ychwanegu sylw