Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

Би гуравхан долоо хоногийн өмнөөс л IT ертөнцөд өөрийгөө шимтэн үзэж эхэлсэн. Үнэнийг хэлэхэд, гурван долоо хоногийн өмнө би HTML синтаксийг ч ойлгодоггүй байсан бөгөөд програмчлалын хэлний талаархи миний танилцуулга 10 жилийн өмнөх Паскал хэлний сургуулийн сургалтын хөтөлбөрөөр төгссөн. Гэсэн хэдий ч би IT-ийн зусланд явахаар шийдсэн бөгөөд хүүхдүүдэд бот хийх нь сайхан байх болно. Энэ нь тийм ч хэцүү биш гэж би шийдсэн.

Энэ нь миний урт удаан аялал эхэлсэн:

  • Ubuntu-тай үүлэн сервер байршуулсан,
  • GitHub дээр бүртгүүлсэн,
  • үндсэн JavaScript синтакс сурсан,
  • англи, орос хэл дээр олон тонн нийтлэл уншиж,
  • эцэст нь робот хийсэн,
  • Би эцэст нь энэ нийтлэлийг бичсэн.

Эцсийн үр дүн нь иймэрхүү харагдаж байв.

Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

Энэ бол эхлэгчдэд зориулсан нийтлэл гэдгийг би шууд хэлье - зүгээр л үндсэн зүйлийг эхнээс нь хэрхэн хийхийг ойлгохын тулд.

Мөн ахисан түвшний програмистуудын хувьд тэднийг бага зэрэг инээлгэхийн тулд.

1. JS дээр хэрхэн код бичих вэ?

Эхлээд хэлний синтаксийг ойлгох нь зүйтэй юм байна гэж би ойлгосон. Сонголт нь JavaScript дээр унасан, учир нь миний дараагийн алхам бол ReactNative дээр програм үүсгэх явдал байв. Би эхэлсэн мэдээж Codecademy дээр байсан бөгөөд маш их баяртай байсан. Эхний 7 хоног үнэгүй. Бодит төслүүд. Би зөвлөж байна. Үүнийг дуусгахад 25 цаг зарцуулсан. Үнэн хэрэгтээ энэ бүхэн ашиг тустай байсангүй. Энэ бол хичээлийн бүтэц, эхний блокийн дэлгэрэнгүй харагдах байдал юм.

Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

2. Ботыг хэрхэн бүртгүүлэх вэ?

Энэ нь надад эхэндээ их тусалсан энэ нийтлэл тодорхой Арчаковын блогоос. Тэр хамгийн эхэнд зажилдаг. Гэхдээ хамгийн гол зүйл бол робот бүртгүүлэх заавар юм. Би үүнийг илүү сайн бичиж чадахгүй бөгөөд энэ нь хамгийн хялбар хэсэг тул би зөвхөн гол зүйлийг бичих болно. Та робот үүсгэж, API-г нь авах хэрэгтэй. Үүнийг өөр роботоор хийдэг - @BotFather. Түүнийг телеграм дээр хайж олоод, түүнд бичиж, энгийн замыг дагаж, API түлхүүрийг (хадгалах!) аваарай (энэ нь тоо, үсгийн багц юм). Энэ нь хожим хэрэг болсон.

Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

3. Бот код ямар харагддаг вэ?

Нийтлэлүүдийг удаан хугацаанд судалсны дараа Telegram API-г судалж, эхнээс нь том код үүсгэх талаар санаа зовохгүй байхын тулд зарим төрлийн номын сан (модуль форматын гуравдагч талын код) ашиглах нь зүйтэй гэдгийг би ойлгосон. Би хүрээг олсон телеграфnpm эсвэл утсыг ашиглан ямар нэг зүйлтэй ямар нэгэн байдлаар холбогдох шаардлагатай байсан. Ботыг байршуулах нь юунаас бүрддэгийг би ойролцоогоор ингэж ойлгосон. Энд инээ. Би гомдохгүй. Хуудасны доод талд байгаа жишээнүүд нь дараагийн роботыг бүтээхэд надад хамгийн их тусалсан:

Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

3. 100 рубльд өөрийн үүлэн серверийг хэрхэн үүсгэх вэ

Нилээн хайсны эцэст дээрх зурган дээрх 'npm' команд командын мөрөнд хамаатай гэдгийг ойлгосон. Тушаалын мөр хаа сайгүй байдаг, гэхдээ үүнийг ажиллуулахын тулд та NodePackageManager-ийг суулгах хэрэгтэй. Асуудал нь би ChromeOS-той PixelBook дээр программчилж байсан явдал байв. Би энд Линуксыг хэрхэн сурсан тухай том хэсгийг алгасах болно - ихэнх хүмүүсийн хувьд энэ нь хоосон бөгөөд шаардлагагүй байдаг. Хэрэв танд Windows эсвэл MacBook байгаа бол танд аль хэдийн консол байна.

Товчхондоо би Crostini-ээр дамжуулан Линукс суулгасан.

Гэсэн хэдий ч, процессын явцад би роботыг байнга ажиллуулахын тулд (мөн миний компьютер асаалттай үед ч биш) надад үүлэн сервер хэрэгтэй гэдгийг ойлгосон. би сонгосон vscale.io Би 100 рубль зарцуулж, хамгийн хямд Ubuntu сервер худалдаж авсан (зураг харна уу).

Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

4. Бот ажиллуулах серверийг хэрхэн бэлтгэх

Үүний дараа би сервер дээр кодын текст бүхий файлыг байрлуулах ямар нэгэн хавтас хийх хэрэгтэйг ойлгосон. Үүнийг хийхийн тулд консол дээр ("Нээлттэй консол" товчлуураар дамжуулан вэбсайт дээр шууд ажиллуулна уу) би оруулав.

mkdir bot

bot - энэ нь миний хавтасны нэр болсон. Үүний дараа би npm болон Node.js суулгасан бөгөөд энэ нь надад *.js нягтралтай файлуудаас код ажиллуулах боломжийг олгоно.

sudo apt update
sudo apt install nodejs
sudo apt install npm

Энэ үе шатанд консолоор дамжуулан сервертэй холбогдохыг зөвлөж байна. Энд гарын авлага Ингэснээр та компьютерийнхээ консолоор дамжуулан сервертэй шууд ажиллах боломжтой болно.

5. Анхны роботынхоо кодыг хэрхэн бичих вэ.

Харин одоо энэ бол миний хувьд зүгээр л нээлт. Аливаа программ нь зөвхөн текстийн мөрүүд юм. Тэдгээрийг хаана ч оруулж, хүссэн өргөтгөлөөр хадгалах боломжтой, тэгээд л болоо. Та үзэсгэлэнтэй байна. би хэрэглэсэн Atom, гэхдээ бодит байдал дээр та ердийн дэвтэрт бичиж болно. Хамгийн гол нь файлыг дараа нь хүссэн өргөтгөлдөө хадгалах явдал юм. Энэ нь Word дээр текст бичээд хадгалахтай адил юм.

Би шинэ файл хийж, телеграф хуудсан дээрх жишээний кодыг оруулаад index.js файлд хадгалсан (ерөнхийдөө файлыг ингэж нэрлэх шаардлагагүй, гэхдээ энэ нь заншил юм). Чухал - BOT_TOKEN-ийн оронд API түлхүүрээ хоёр дахь догол мөрөнд оруулна уу.

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. Github-ээр серверт код оруулах арга

Одоо би ямар нэгэн байдлаар энэ кодыг серверт байршуулж, ажиллуулах шаардлагатай болсон. Энэ нь миний хувьд сорилт болсон. Үүний үр дүнд маш их зовлон зүдгүүрийн дараа би консол дээрх командыг ашиглан кодыг шинэчлэх боломжтой github дээр файл үүсгэх нь илүү хялбар болохыг ойлгосон. Би дансаа бүртгүүлсэн github мөн хийсэн шинэ төсөл, миний файлыг байршуулсан газар. Үүний дараа би өөрийн акаунтаас (нээлттэй!) bot хавтсанд байгаа сервер рүү файл байршуулах тохиргоог хийх хэрэгтэй болсон (хэрэв та үүнийг гэнэт орхисон бол зүгээр л cd bot гэж бичээрэй).

7. github-ээр серверт файл оруулах 2-р хэсэг

Би сервер дээр git-ээс файл татах програм суулгах хэрэгтэй болсон. Би консол дээр бичиж сервер дээр git суулгасан

apt-get install git

Үүний дараа би файл байршуулах тохиргоог хийх шаардлагатай болсон. Үүнийг хийхийн тулд би командын мөрөнд бичсэн

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

Үүний үр дүнд төслийн бүх зүйлийг серверт байршуулсан. Энэ үе шатанд гарсан алдаа нь би аль хэдийн байгаа bot хавтас дотор хоёр дахь хавтас хийсэн явдал юм. Файлын хаяг нь */bot/bot/index.js шиг харагдсан

Би энэ асуудлыг үл тоомсорлохоор шийдсэн.

Кодын эхний мөрөнд бидний хүссэн телеграф номын санг ачаалахын тулд командыг консол руу оруулна уу.

npm install telegraf

8. Ботыг хэрхэн эхлүүлэх вэ

Үүнийг хийхийн тулд файлтай хавтсанд байхдаа (консолоор хавтаснаас хавтас руу шилжихийн тулд форматлах командыг ажиллуулна уу. cd bot Та байх ёстой газраа байгаа эсэхээ шалгахын тулд консол дээр байгаа бүх файл, хавтаснуудыг харуулах командыг оруулж болно. ls -a

Эхлэхийн тулд би консол руу орлоо

node index.js

Хэрэв алдаа байхгүй бол бүх зүйл хэвийн, bot ажиллаж байна. Түүнийг телеграмаас хай. Хэрэв алдаа гарсан бол 1-р цэгээс олж авсан мэдлэгээ хэрэглээрэй.

9. Цаана нь роботыг хэрхэн ажиллуулах вэ

Бот нь зөвхөн консол дээр сууж байх үед л ажилладаг гэдгийг та маш хурдан ойлгох болно. Энэ асуудлыг шийдэхийн тулд би командыг ашигласан

screen

Үүний дараа зарим текст бүхий дэлгэц гарч ирнэ. Энэ нь бүх зүйл сайхан байна гэсэн үг юм. Та үүлэн сервер дээрх виртуал сервер дээр байна. Энэ бүхэн хэрхэн ажилладагийг илүү сайн ойлгохын тулд - Энд нийтлэл байна. Зүгээр л хавтас руугаа ороод роботыг ажиллуулах командыг оруулна уу

node index.js

10. Бот хэрхэн ажилладаг, түүний функцийг хэрхэн өргөжүүлэх вэ

Бидний жишээ бот юу хийж чадах вэ? Тэр чадна

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()

Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

Хэрэв та кодыг харвал github, тэгвэл та намайг энэ функцээс тийм ч хол яваагүй гэдгийг хурдан ойлгох болно. Идэвхтэй хэрэглэгддэг зүйл бол функц юм ctx.replyWithPhoto Энэ нь танд тодорхой текстийн хариу болгон тодорхой зураг эсвэл gif илгээх боломжийг олгодог.

Кодын нэлээд хэсгийг 11-13 насны хүүхдүүд бичсэн бөгөөд би тэдэнд робот руу нэвтрэх эрх олгосон. Тэд хэрэглэгчийн нэрээ оруулсан. Аль хэсгийг нь тэд хийсэн гэдгийг хэлэхэд амархан гэж бодож байна.

Жишээлбэл, "Жэйк" гэсэн мессеж нь "Адал явдалт цаг" хүүхэлдэйн киноны алдартай дүр бүхий GIF авах болно.

Удирдамж: програмчлалын чиглэлээр суралцагчдад зориулсан энгийн Telegram ботыг JS дээр хэрхэн хийх вэ

Ботыг цаашид хөгжүүлэхийн тулд та гар холбох хэрэгтэй, жишээг үзнэ үү, жишээлбэл, Эндээс

11. Кодоо хэрхэн шинэчлэх, ботыг дахин эхлүүлэх

Та зөвхөн github дээр биш, сервер дээр ч гэсэн кодыг шинэчлэх хэрэгтэй гэдгийг бүү мартаарай. Үүнийг хийхэд хялбар - роботыг зогсоо (ctrl+c дарна уу),

- зорилтот хавтсанд байхдаа консол руу орох, git pull
- бид ботыг тушаалаар дахин ажиллуулна node index.js

ТӨГСГӨЛ

Энэ файлд тайлбарласан олон зүйл нь дэвшилтэт програмистуудад ойлгомжтой байх болно. Гэсэн хэдий ч би өөрөө ботуудын ертөнц рүү ангалын дундуур үсрэх гэж оролдохдоо ийм хөтөчийг үнэхээр санасан. Мэдээллийн технологийн ямар ч мэргэжилтэнд ойлгомжтой, энгийн зүйлсийг орхигдуулдаггүй гарын авлага.

Ирээдүйд би ReactNative дээр анхны програмаа ижил хэв маягаар хэрхэн хийх талаар нийтлэл оруулахаар төлөвлөж байна, бүртгүүлээрэй!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх