Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

Men uch hafta oldin IT olamiga sho'ng'ishni boshladim. Jiddiy ravishda, uch hafta oldin men HTML sintaksisini ham tushunmasdim va dasturlash tillariga kirishim 10 yil oldin Paskal bo'yicha maktab o'quv dasturi bilan yakunlandi. Biroq, men IT-lagerga borishga qaror qildim, u erda bolalar uchun bot qilish yaxshi bo'lardi. Bu unchalik qiyin emas deb qaror qildim.

Bu uzoq safarni boshladi, unda men:

  • Ubuntu bilan bulutli serverni o'rnatdi,
  • GitHub-da ro'yxatdan o'tgan,
  • asosiy JavaScript sintaksisini o'rgangan,
  • ingliz va rus tillarida bir nechta maqolalarni o'qing,
  • nihoyat bot yaratdi,
  • Men nihoyat ushbu maqolani yozdim.

Yakuniy natija quyidagicha ko'rindi:

Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

Men darhol aytamanki, bu yangi boshlanuvchilar uchun maqola - oddiy narsalarni noldan qanday qilishni tushunish uchun.

Va shuningdek - ilg'or dasturchilar uchun - shunchaki ularni biroz kuldirish uchun.

1. JS da kod qanday yoziladi?

Men hech bo'lmaganda tilning sintaksisini tushunishga arziydi, deb tushundim. Tanlov JavaScript-ga tushdi, chunki men uchun keyingi qadam ReactNative-da dastur yaratish edi. bilan boshladim kursi Codecademy-da va juda xursand bo'ldi. Birinchi 7 kun bepul. Haqiqiy loyihalar. Men Tavsiya qilaman. Uni yakunlash taxminan 25 soat davom etdi. Aslida, hammasi ham foydali emas edi. Kursning tuzilishi shunday ko'rinadi va batafsil birinchi blok.

Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

2. Botni qanday ro'yxatdan o'tkazish kerak?

Bu menga boshida juda yordam berdi ushbu maqola ma'lum bir Archakovning blogidan. U eng boshida chaynadi. Ammo asosiy narsa - botni ro'yxatdan o'tkazish bo'yicha ko'rsatmalar. Men buni yaxshiroq yoza olmayman va bu eng oson qismi bo'lgani uchun men faqat asosiy narsani yozaman. Siz bot yaratishingiz va uning API-ni olishingiz kerak. Bu boshqa bot orqali amalga oshiriladi - @BotFather. Uni telegramda toping, unga yozing, oddiy yo'ldan boring va API kalitini oling (saqlang!) (bu raqamlar va harflar to'plami). Keyinchalik foydali bo'ldi.

Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

3. Bot kodi qanday ko'rinishga ega?

Maqolalarni uzoq vaqt o'rganib chiqqanimdan so'ng, Telegram API-ni o'rganish va noldan katta kod qismlarini yaratish haqida tashvishlanmaslik uchun qandaydir kutubxonadan (modul formatidagi uchinchi tomon kodi) foydalanishga arziydi. Men ramkani topdim telegraf, bu qandaydir tarzda npm yoki ip yordamida biror narsaga ulanishi kerak edi. Men botni joylashtirish nimani anglatishini taxminan shunday tushundim. Bu erda kuling. Men xafa bo'lmayman. Sahifaning pastki qismidagi misollar botni keyingi yaratishda menga eng ko'p yordam berdi:

Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

3. 100 rubl uchun o'z bulutli serveringizni qanday yaratish mumkin

Ko'p izlanishlardan so'ng, yuqoridagi rasmdagi "npm" buyrug'i buyruq satriga tegishli ekanligini angladim. Buyruqlar qatori hamma joyda, lekin uni bajarish uchun NodePackageManager-ni o'rnatishingiz kerak. Muammo shundaki, men ChromeOS bilan PixelBook-da dasturlashayotgan edim. Men bu erda Linuxni qanday o'rganganligim haqidagi katta blokni o'tkazib yuboraman - ko'pchilik uchun bu bo'sh va keraksiz. Agar sizda Windows yoki MacBook bo'lsa, sizda allaqachon konsol mavjud.

Xulosa qilib aytganda, men Linuxni Crostini orqali o'rnatdim.

Biroq, bu jarayonda men botning doimiy ishlashi uchun (faqat mening kompyuterim yoqilganda emas) menga bulutli server kerakligini angladim. Men tanladim vscale.io Men 100 rubl sarfladim va eng arzon Ubuntu serverini sotib oldim (rasmga qarang).

Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

4. Botni ishga tushirish uchun serverni qanday tayyorlash mumkin

Shundan so'ng, men serverda kod matni bilan faylni joylashtiradigan qandaydir papka yaratish kerakligini tushundim. Buni amalga oshirish uchun konsolda (to'g'ridan-to'g'ri veb-saytda "Konsolni ochish" tugmasi orqali ishga tushiring) men kiritdim

mkdir bot

bot - bu mening papkamning nomiga aylandi. Shundan so'ng men npm va Node.js ni o'rnatdim, bu menga *.js o'lchamli fayllardan kodni ishga tushirishga imkon beradi.

sudo apt update
sudo apt install nodejs
sudo apt install npm

Ushbu bosqichda konsol orqali serverga ulanishni o'rnatishni tavsiya qilaman. Bu yerga ko'rsatmalar Bu sizga to'g'ridan-to'g'ri kompyuteringiz konsoli orqali server bilan ishlash imkonini beradi.

5. Birinchi botingiz uchun kodni qanday yozish kerak.

Ammo endi bu men uchun shunchaki kashfiyot. Har qanday dastur faqat matn satrlari. Ular istalgan joyga kiritilishi mumkin, kerakli kengaytma bilan saqlanishi mumkin va bu ham. Siz go'zalsiz. foydalandim atom, lekin aslida siz oddiy bloknotda yozishingiz mumkin. Asosiysi, faylni keyinchalik kerakli kengaytmada saqlash. Bu Word-da matn yozish va uni saqlashga o'xshaydi.

Men yangi fayl yaratdim, unga telegraf sahifasidagi misoldagi kodni kiritdim va uni index.js faylida saqladim (umuman faylni shunday nomlash shart emas, lekin bu odatiy hol). Muhim – BOT_TOKEN oβ€˜rniga ikkinchi xatboshidan API kalitingizni kiriting.

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 orqali serverga kodni qanday yuklash mumkin

Endi men qandaydir tarzda ushbu kodni serverga yuklashim va uni ishga tushirishim kerak edi. Bu men uchun qiyinchilikka aylandi. Natijada, ko'p sinovlardan so'ng, men konsoldagi buyruq yordamida kodni yangilash imkonini beruvchi github-da fayl yaratish osonroq bo'lishini tushundim. Men hisob qaydnomasini ro'yxatdan o'tkazdim Github qildi va qildi yangi loyiha, faylni yuklagan joy. Shundan so'ng, men hisobimdan fayllarni yuklashni qanday sozlashni aniqlashim kerak edi (ochiq!) bot papkasidagi serverga (agar siz uni birdan tark etgan bo'lsangiz, faqat cd bot yozing).

7. github orqali serverga fayllarni yuklash 2-qism

Men serverga git-dan fayllarni yuklab oladigan dasturni o'rnatishim kerak edi. Men konsolga yozish orqali gitni serverga o'rnatdim

apt-get install git

Shundan so'ng men faylni yuklashni sozlashim kerak edi. Buning uchun men buyruq satriga yozdim

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

Natijada, loyihadan hamma narsa serverga yuklandi. Ushbu bosqichdagi xato shundaki, men allaqachon mavjud bot papkasida ikkinchi papka yaratdim. Fayl manzili */bot/bot/index.js ga o'xshardi

Men bu muammoni e'tiborsiz qoldirishga qaror qildim.

Va biz kodning birinchi qatorida so'ragan telegraf kutubxonasini yuklash uchun konsolga buyruqni kiriting.

npm install telegraf

8. Botni qanday ishga tushirish kerak

Buning uchun fayl bilan papkada bo'lganingizda (konsol orqali jilddan jildga o'tish uchun format buyrug'ini bajaring. cd bot Siz bo'lishingiz kerak bo'lgan joyda ekanligingizga ishonch hosil qilish uchun konsolda mavjud bo'lgan barcha fayl va papkalarni ko'rsatadigan buyruqni kiritishingiz mumkin. ls -a

Boshlash uchun men konsolga kirdim

node index.js

Agar xato bo'lmasa, hamma narsa yaxshi, bot ishlaydi. Uni telegramdan qidiring. Agar xato bo'lsa, 1-banddan olingan bilimlaringizni qo'llang.

9. Botni fonda qanday ishga tushirish kerak

Tez orada siz bot faqat konsolda o'tirganingizda ishlashini tushunasiz. Ushbu muammoni hal qilish uchun men buyruqni ishlatdim

screen

Shundan so'ng, ba'zi matnli ekran paydo bo'ladi. Bu hamma narsa yaxshi ekanligini anglatadi. Siz bulutli serverdagi virtual serverdasiz. Bularning barchasi qanday ishlashini yaxshiroq tushunish uchun - bu erda maqola. Faqat papkangizga o'ting va botni ishga tushirish buyrug'ini kiriting

node index.js

10. Bot qanday ishlaydi va uning funksionalligini qanday kengaytirish mumkin

Bizning misol botimiz nima qila oladi? U qila oladi

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

"Xush kelibsiz!" boshida (matnni o'zgartirishga harakat qiling)

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

standart / yordam buyrug'iga javoban "Menga stiker yuboring" xabarini yuboring

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

stikerga javob sifatida tasdiqlashni yuboring

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

Agar ular unga "salom" deb yozishsa, "Salom" deb javob bering
bot.launch()

Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

Agar siz kodga qarasangiz Github, keyin siz men bu funksiyadan unchalik uzoqqa bormaganimni tezda tushunasiz. Faol ishlatiladigan narsa funktsiyadir ctx.replyWithPhoto Bu sizga ma'lum bir matnga javob sifatida ko'rsatilgan fotosurat yoki gif yuborish imkonini beradi.

Kodning muhim qismini 11-13 yoshli bolalar yozgan, men ularga botga kirish huquqini berganman. Ular o'zlarining foydalanuvchi ishiga kirishdi. Menimcha, qaysi qism ular tomonidan yaratilganligini aniqlash oson.

Masalan, "Jeyk" xabari "Adventure Time" multfilmidagi mashhur qahramon bilan GIF oladi.

Qo'llanma: dasturlashni boshlayotganlar uchun JSda oddiy Telegram botini qanday qilish kerak

Botni yanada rivojlantirish uchun siz klaviaturani ulashingiz kerak, misollarni ko'rib chiqing, masalan, shu yerda

11. Kodni qanday yangilash va botni qayta ishga tushirish

Kodni nafaqat githubda, balki serverda ham yangilashingiz kerakligini unutmang. Buni qilish oson - botni to'xtating (ctrl+c tugmalarini bosing),

- maqsadli papkada konsolga kiring, git pull
β€” buyrug'i bilan botni yana ishga tushiramiz node index.js

OXIRI

Ushbu faylda tasvirlangan ko'p narsalar ilg'or dasturchilar uchun juda aniq bo'ladi. Biroq, men o'zim bir zarbada jarlikdan oshib, botlar dunyosiga sakrab o'tmoqchi bo'lganimda, men bunday qo'llanmani juda sog'indim. Har qanday IT mutaxassisi uchun aniq va oddiy narsalarni o'tkazib yubormaydigan qo'llanma.

Kelajakda men ReactNative-da birinchi arizangizni xuddi shu uslubda qanday qilish haqida post yozmoqchiman, obuna bo'ling!

Manba: www.habr.com

a Izoh qo'shish