Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

Мен үч жума мурун эле IT дүйнөсүнө аралаша баштадым. Чынында, үч жума мурун мен HTML синтаксисин да түшүнгөн эмесмин жана менин программалоо тилдерине киришүүм 10 жыл мурун Паскаль боюнча мектеп окуу планы менен аяктаган. Бирок, мен IT лагерине барууну чечтим, ал жерде балдар бот жасаса жакшы болмок. Бул анчалык деле кыйын эмес деп чечтим.

Бул мен узак жолду баштадым:

  • Ubuntu менен булут серверин жайгаштырган,
  • GitHubда катталган,
  • негизги JavaScript синтаксисин үйрөнгөн,
  • англис жана орус тилдеринде көптөгөн макалаларды окуп,
  • акыры бот жасады,
  • Акыры бул макаланы жаздым.

Акыркы жыйынтык төмөнкүдөй болду:

Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

Мен дароо айтам, бул башталгычтар үчүн макала - нөлдөн баштап негизги нерселерди кантип жасоону түшүнүү үчүн.

Жана ошондой эле - алдыңкы программисттер үчүн - аларды бир аз күлдүрүү үчүн.

1. JSде кодду кантип жазуу керек?

Мен алгач тилдин синтаксисин түшүнүү керек экенин түшүндүм. Тандоо JavaScript'ке туура келди, анткени мен үчүн кийинки кадам ReactNative тиркемесин түзүү болчу. менен баштадым алмашуу курсу Codecademy боюнча жана абдан кубанычтамын. Биринчи 7 күн акысыз. Чыныгы долбоорлор. мен сунуштайм. Аны бүтүрүү 25 саатка жакын убакытты алды. Чынында, анын баары эле пайдалуу болгон эмес. Бул курстун структурасы жана майда-чүйдөсүнө чейин биринчи блок кандай көрүнөт.

Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

2. Ботту кантип каттаса болот?

Бул мага башында көп жардам берди бул макалада бир Арчаковдун блогунан. Ал эң башында чайнайт. Бирок эң негизгиси ботту каттоо боюнча көрсөтмөлөр бар. Мен аны жакшыраак жаза албайм, бул эң оңой бөлүгү болгондуктан, мен жөн гана өзөгүн жазам. Сиз бот түзүп, анын API'син алышыңыз керек. Бул башка бот аркылуу жасалат - @BotFather. Аны телеграммадан табыңыз, ага жазыңыз, жөнөкөй жолду ээрчип, API ачкычын (сактоо!) алыңыз (бул сандар менен тамгалардын жыйындысы). Кийинчерээк пайдалуу болду.

Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

3. Бот коду кандай болот?

Макалаларды көпкө изилдеп чыккандан кийин, Telegram API'ни изилдөө жана нөлдөн баштап коддун чоң бөлүктөрүн түзүү жөнүндө кабатыр болбоо үчүн кандайдыр бир китепкананы (модуль форматындагы үчүнчү тараптын коду) колдонуу баалуу экенин түшүндүм. Мен алкакты таптым телеграф, кандайдыр бир жол менен npm же жипти колдонуп бир нерсеге туташтырылышы керек болчу. Мен ботту жайгаштыруу эмнеден турганын болжол менен ушундайча түшүндүм. Бул жерде күл. Мен таарынбайм. Барактын ылдый жагындагы мисалдар ботту кийинки түзүү учурунда мага эң көп жардам берди:

Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

3. 100 рублга өз булут серверин кантип түзүү керек

Көп издегенден кийин, мен жогорудагы сүрөттөгү "npm" буйругу буйрук сабына тиешелүү экенин түшүндүм. Буйрук сабы бардык жерде, бирок аны аткаруу үчүн NodePackageManager орнотуу керек. Маселе мен ChromeOS менен PixelBookте программалап жатканымда болду. Мен бул жерде Linux жөнүндө кантип үйрөнгөнүм тууралуу чоң блокту өткөрүп жиберем - көпчүлүк үчүн ал бош жана керексиз. Эгер сизде Windows же MacBook болсо, анда сизде мурунтан эле консол бар.

Кыскача айтканда, мен Linuxту Crostini аркылуу орноттум.

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

Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

4. Ботту иштетүү үчүн серверди кантип даярдоо керек

Ошондон кийин мен серверде кандайдыр бир папканы жасоо керек экенин түшүндүм, анда мен код тексти бар файлды коём. Бул үчүн, консолдо (түздөн-түз веб-сайтта “Ачык консол” баскычы аркылуу иштетиңиз), мен кирдим.

mkdir bot

bot - бул менин папкамдын аты болуп калды. Андан кийин мен npm жана Node.js орноттум, алар мага *.js резолюциясы бар файлдардан кодду иштетүүгө мүмкүндүк берет

sudo apt update
sudo apt install nodejs
sudo apt install npm

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

5. Биринчи ботуңуздун кодун кантип жазуу керек.

Бирок азыр мен үчүн бул жөн гана ачылыш. Ар кандай программа жөн гана текст саптары. Аларды каалаган жерге киргизсе болот, каалаган кеңейтүү менен сактаса болот, ошону менен бүттү. Сен сулуу. Мен колдондум атом, бирок чындыгында сиз жөн гана стандарттык блокнотко жаза аласыз. Эң негизгиси, файлды кийинчерээк керектүү кеңейтүүдө сактоо. Бул 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 менен жасалган Жаңы долбоор, мен файлды жүктөгөн жерден. Андан кийин, мен бот папкасындагы серверге өзүмдүн аккаунтумдан (ачык!) файлдарды жүктөөнү кантип орнотууну түшүнүшүм керек болчу (эгерде сиз аны капысынан таштап койсоңуз, CD-бот деп жазыңыз).

7. github аркылуу серверге файлдарды кантип жүктөө керек 2-бөлүк

Мен серверге gitтен файлдарды жүктөй турган программаны орнотуум керек болчу. Мен консолго терүү менен gitти серверге орнотуп алдым

apt-get install git

Андан кийин мен файлды жүктөөнү конфигурациялашым керек болчу. Бул үчүн, мен буйрук сабына тердим

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

Натыйжада, долбоордон бардыгы серверге жүктөлгөн. Бул этаптагы ката мен буга чейин эле бар бот папкасынын ичинде экинчи папканы жасаганымда болду. Файлдын дареги */bot/bot/index.js сыяктуу көрүндү

Мен бул көйгөйдү четке кагууну чечтим.

Ал эми биз коддун биринчи сабында сураган телеграф китепканасын жүктөө үчүн, консолго буйрукту териңиз.

npm install telegraf

8. Ботту кантип ишке киргизүү керек

Бул үчүн, файлы бар папкада турганда (консоль аркылуу папкадан папкага өтүү үчүн формат буйругун иштетиңиз cd bot Сиз керектүү жерде экениңизди текшерүү үчүн консолдо ал жердеги бардык файлдарды жана папкаларды көрсөтө турган буйрукту киргизсеңиз болот. ls -a

Баштоо үчүн мен консолго кирдим

node index.js

Ката жок болсо, баары жакшы, бот иштеп жатат. Аны телеграммадан изде. Эгер ката болсо, 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()

Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

Эгер сиз кодду карасаңыз Github, анда мен бул функциядан анча деле алыс кетпегенимди тез түшүнөсүз. жигердүү колдонулган нерсе болуп саналат ctx.replyWithPhoto Ал белгилүү бир текстке жооп катары көрсөтүлгөн сүрөттү же GIF жөнөтүүгө мүмкүндүк берет.

Коддун олуттуу бөлүгүн 11-13 жаштагы балдар жазган, мен аларга ботко кирүүгө уруксат бердим. Алар өздөрүнүн колдонуучу корпусуна киришти. Кайсы бөлүгүн алар жасаганын айтуу оңой деп ойлойм.

Мисалы, "Джейк" билдирүүсү Adventure Time мультфильминин белгилүү каарманы менен GIF алат.

Көрсөтмө: программалоону үйрөнүп жаткандар үчүн JSде жөнөкөй Telegram ботун кантип жасоо керек

Ботту андан ары өнүктүрүү үчүн, клавиатураны туташтыруу керек, мисалдарды караңыз, мисалы, бул жерде

11. Кодду кантип жаңыртуу жана ботту кайра иштетүү

Кодду githubда гана эмес, серверде да жаңылашыңыз керек экенин унутпаңыз. Муну жасоо оңой - ботту токтотуу (ctrl+c баскычтарын басыңыз),

- максаттуу папкада турганда консолго кириңиз, git pull
— деген буйрук менен ботту кайрадан ишке киргизебиз node index.js

END

Бул файлда сүрөттөлгөн нерселердин көбү өнүккөн программисттер үчүн ачык-айкын болот. Бирок, мен өзүм туңгуюктан боттор дүйнөсүнө секирип өтүүгө аракет кылганымда, мен мындай жол көрсөтүүчүнү сагындым. Ар бир IT адиси үчүн ачык жана жөнөкөй нерселерди колдон чыгарбаган жол көрсөткүч.

Келечекте мен ReactNative боюнча биринчи тиркемеңизди ошол эле стилде кантип жасоо керектиги жөнүндө пост жазууну пландаштырып жатам, жазылыңыз!

Source: www.habr.com

Комментарий кошуу