Мен үч жума мурун эле IT дүйнөсүнө аралаша баштадым. Чынында, үч жума мурун мен HTML синтаксисин да түшүнгөн эмесмин жана менин программалоо тилдерине киришүүм 10 жыл мурун Паскаль боюнча мектеп окуу планы менен аяктаган. Бирок, мен IT лагерине барууну чечтим, ал жерде балдар бот жасаса жакшы болмок. Бул анчалык деле кыйын эмес деп чечтим.
Бул мен узак жолду баштадым:
- Ubuntu менен булут серверин жайгаштырган,
- GitHubда катталган,
- негизги JavaScript синтаксисин үйрөнгөн,
- англис жана орус тилдеринде көптөгөн макалаларды окуп,
- акыры бот жасады,
- Акыры бул макаланы жаздым.
Акыркы жыйынтык төмөнкүдөй болду:
Мен дароо айтам, бул башталгычтар үчүн макала - нөлдөн баштап негизги нерселерди кантип жасоону түшүнүү үчүн.
Жана ошондой эле - алдыңкы программисттер үчүн - аларды бир аз күлдүрүү үчүн.
1. JSде кодду кантип жазуу керек?
Мен алгач тилдин синтаксисин түшүнүү керек экенин түшүндүм. Тандоо JavaScript'ке туура келди, анткени мен үчүн кийинки кадам ReactNative тиркемесин түзүү болчу. менен баштадым
2. Ботту кантип каттаса болот?
Бул мага башында көп жардам берди
3. Бот коду кандай болот?
Макалаларды көпкө изилдеп чыккандан кийин, Telegram API'ни изилдөө жана нөлдөн баштап коддун чоң бөлүктөрүн түзүү жөнүндө кабатыр болбоо үчүн кандайдыр бир китепкананы (модуль форматындагы үчүнчү тараптын коду) колдонуу баалуу экенин түшүндүм. Мен алкакты таптым
3. 100 рублга өз булут серверин кантип түзүү керек
Көп издегенден кийин, мен жогорудагы сүрөттөгү "npm" буйругу буйрук сабына тиешелүү экенин түшүндүм. Буйрук сабы бардык жерде, бирок аны аткаруу үчүн NodePackageManager орнотуу керек. Маселе мен ChromeOS менен PixelBookте программалап жатканымда болду. Мен бул жерде Linux жөнүндө кантип үйрөнгөнүм тууралуу чоң блокту өткөрүп жиберем - көпчүлүк үчүн ал бош жана керексиз. Эгер сизде Windows же MacBook болсо, анда сизде мурунтан эле консол бар.
Кыскача айтканда, мен Linuxту Crostini аркылуу орноттум.
Бирок, процесстин жүрүшүндө мен бот тынымсыз иштеши үчүн (менин компьютерим күйүп турганда эле эмес) мага булут сервери керектигин түшүндүм. Мен тандадым
4. Ботту иштетүү үчүн серверди кантип даярдоо керек
Ошондон кийин мен серверде кандайдыр бир папканы жасоо керек экенин түшүндүм, анда мен код тексти бар файлды коём. Бул үчүн, консолдо (түздөн-түз веб-сайтта “Ачык консол” баскычы аркылуу иштетиңиз), мен кирдим.
mkdir bot
bot - бул менин папкамдын аты болуп калды. Андан кийин мен npm жана Node.js орноттум, алар мага *.js резолюциясы бар файлдардан кодду иштетүүгө мүмкүндүк берет
sudo apt update
sudo apt install nodejs
sudo apt install npm
Мен бул этапта консолуңуз аркылуу серверге туташууну орнотууну сунуштайм. Бул жерде
5. Биринчи ботуңуздун кодун кантип жазуу керек.
Бирок азыр мен үчүн бул жөн гана ачылыш. Ар кандай программа жөн гана текст саптары. Аларды каалаган жерге киргизсе болот, каалаган кеңейтүү менен сактаса болот, ошону менен бүттү. Сен сулуу. Мен колдондум
Мен жаңы файл жасадым, ага телеграф бетиндеги мисалдын кодун киргизип, аны 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да консолдогу буйрукту колдонуп кодду жаңыртууга мүмкүндүк берген файлды түзүү оңой болорун түшүндүм. Мен аккаунтту каттадым
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()
Эгер сиз кодду карасаңыз ctx.replyWithPhoto
Ал белгилүү бир текстке жооп катары көрсөтүлгөн сүрөттү же GIF жөнөтүүгө мүмкүндүк берет.
Коддун олуттуу бөлүгүн 11-13 жаштагы балдар жазган, мен аларга ботко кирүүгө уруксат бердим. Алар өздөрүнүн колдонуучу корпусуна киришти. Кайсы бөлүгүн алар жасаганын айтуу оңой деп ойлойм.
Мисалы, "Джейк" билдирүүсү Adventure Time мультфильминин белгилүү каарманы менен GIF алат.
Ботту андан ары өнүктүрүү үчүн, клавиатураны туташтыруу керек, мисалдарды караңыз, мисалы,
11. Кодду кантип жаңыртуу жана ботту кайра иштетүү
Кодду githubда гана эмес, серверде да жаңылашыңыз керек экенин унутпаңыз. Муну жасоо оңой - ботту токтотуу (ctrl+c баскычтарын басыңыз),
- максаттуу папкада турганда консолго кириңиз, git pull
— деген буйрук менен ботту кайрадан ишке киргизебиз node index.js
END
Бул файлда сүрөттөлгөн нерселердин көбү өнүккөн программисттер үчүн ачык-айкын болот. Бирок, мен өзүм туңгуюктан боттор дүйнөсүнө секирип өтүүгө аракет кылганымда, мен мындай жол көрсөтүүчүнү сагындым. Ар бир IT адиси үчүн ачык жана жөнөкөй нерселерди колдон чыгарбаган жол көрсөткүч.
Келечекте мен ReactNative боюнча биринчи тиркемеңизди ошол эле стилде кантип жасоо керектиги жөнүндө пост жазууну пландаштырып жатам, жазылыңыз!
Source: www.habr.com