Yandex.Cloud'та Telegram ботун түзүү

Yandex.Cloud'та Telegram ботун түзүү

Бүгүн, сыныктарынан, биз чогултабыз Yandex.Cloud Telegram боту менен Yandex Cloud функциялары (же Яндекс функциялары - кыскача) жана Yandex объект сактагычы (же Объектти сактоо - тактык үчүн). Код күйгүзүлөт Node.js. Бирок, бир курч жагдай бар - белгилүү бир уюм деп аталат, айталы, RossKomTsenzur (цензура Россия Федерациясынын Конституциясынын 29-беренесинде тыюу салынган), орус интернет-провайдерлерине суроо-талаптарды жөнөтүүгө жол бербейт. Telegram API адрес боюнча: https://api.telegram.org/. Ооба, биз болбойт - жок, жок. Анткени, биздин баштыкта ​​делгендер бар. вебхуктар — алардын жардамы менен биз конкреттүү дарекке суроо-талаптарды жасабайбыз, жөн гана бизге кандайдыр бир суроо-талапка жооп катары өз өтүнүчүбүздү жөнөтөбүз. Айтор, Одессадагыдай суроого суроо менен жооп беребиз. Ошол үчүн Telegram API биздин кодубузда көрүнбөйт.

Жоопкерчиликтен баш тартууБул макалада айтылган ар кандай мамлекеттик уюмдардын аттары ойдон чыгарылган жана реалдуу уюмдардын аттары менен дал келиши мүмкүн болгон кокустуктар.

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

Yandex.Cloud'та Telegram ботун түзүү

Сиз аны иш жүзүндө сынап көрсөңүз болот - бул жерде аты: @SmartThoughtsBot. баскычын байкадым "Алисанын чеберчилиги"? Себеби, бот ошол эле аталыштагы боттун бир түрү болуп саналат. Алисанын чеберчилиги, б.а. сыяктуу функцияларды аткарат Алисанын чеберчилиги ал эми бири-бирин рекламалоо менен тынчтыкта ​​жанаша жашоого жетише алат. Кантип түзүү жөнүндө акылдуу ойлор макалада баяндалган Алиса чеберчиликке ээ болот. Эми (жогоруда макала жарыялангандан кийин кээ бир өзгөртүүлөрдү киргизгенден кийин) смартфондо бул өнөрдүүлүк бул сыяктуу бир нерсе көрүнөт:

Yandex.Cloud'та Telegram ботун түзүү

Бот түзүү

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

Тиркемени ачыңыз Telegaram, келгиле, бардык боттордун атасын атайлы (аларда адамдар сыяктуу баары бар) - @BotFather - жана адегенде биз ага эмне кыла аларыбызды эс тутумун жаңыртуу үчүн / help буйругун беребиз. Эми командага кызыгып калабыз / newbot.

Yandex.Cloud'та Telegram ботун түзүү

Бул жерде сүрөттөлгөн бот мурунтан эле түзүлгөндүктөн, демонстрациялоо максатында мен кыска убакытка башка бот түзөм (андан кийин аны жок кылам). Мен ага чалам DemoHabrBot. аттары (колдонуучунун аты) бардык телеграмма боттору сөз менен аякташы керек ботМисалы: MyCoolBot же my_cool_bot - бул боттор үчүн. Бирок адегенде ботко ат беребиз (ысым) - жана бул адамдар үчүн. Аты каалаган тилде болушу мүмкүн, боштуктарды камтышы жана сөз менен бүтүшү керек эмес бот, жана уникалдуу болушу керек эмес. Бул мисалда мен бул ботту чакырдым Demo Habr.

Yandex.Cloud'та Telegram ботун түзүү

Эми боттун атын тандаңыз (колдонуучунун аты, боттор үчүн). Аны чакыралы DemoHabrBot. боттун атына байланыштуу баары (ысым) анын атына такыр тиешеси жок - колдонуучунун аты (же колдонулат, бирок так карама-каршы). Боттун уникалдуу атын ийгиликтүү жараткандан кийин, скриншотто кызыл жебе менен көрсөтүлгөн белгини көчүрүп, сактообуз керек (катуу түрдө!). Анын жардамы менен биз кийинчерээк келип чыгышын аныктайбыз телеграмма'биздин вебхук Яндекс функциясы.

Yandex.Cloud'та Telegram ботун түзүү

Эми бардык боттордун атасына буйрук берели: /mybots, жана ал бизге биз жараткан бардык боттордун тизмесин көрсөтөт. Азырынча жаңы бышкан ботту жалгыз калтыралы Demo Habr (ал ботторду кантип түзүүнү көрсөтүү үчүн түзүлгөн, бирок биз аны бүгүн башка демонстрациялык максаттар үчүн да колдонобуз), келгиле ботту карап көрөлү. Акылдуу ойлор (@SmartThoughtsBot). Боттордун тизмесинде анын аты жазылган баскычты чыкылдатыңыз.

Yandex.Cloud'та Telegram ботун түзүү

Бул жерде биз ботту конфигурациялай алабыз. баскычын басуу Түзөтүү… Биз тигил же бул вариантты түзөтүүгө өтөбүз. Мисалы, баскычты чыкылдатуу менен Атын өзгөртүү биз боттун атын өзгөртө алабыз, анын ордуна айтабыз Акылдуу ойлор, жаз Crazy Ideas. Botpic - бул боттун аватары, жок дегенде болушу керек 150 х 150 PX. баяндоо — бул колдонуучу ботту биринчи жолу баштаганда көргөн кыскача сүрөттөмө, суроого жооп катары: Бул бот эмне кыла алат? жөнүндө - ботко шилтеме менен берилген дагы кыскараак сүрөттөмө (https://t.me/SmartThoughtsBot) же ал жөнүндө маалыматты көргөндө.

Yandex.Cloud'та Telegram ботун түзүү

Болгону бизге буйруктарды орнотуу керек. Бул үчүн, баскычты басыңыз Буйруктарды түзөтүү. Колдонуучу практикасын стандартташтыруу телеграмма ар дайым эки буйрукту колдонууну сунуш кылат: / баштоо и / help, жана бот жөндөөлөргө муктаж болсо, кошумча / орнотуулар буйругун колдонуңуз. Биздин бот шар сыяктуу жөнөкөй, андыктан ага азырынча эч кандай орнотуунун кереги жок. Биз биринчи эки буйрукту жазабыз, аларды код менен иштетебиз. Эми, эгерде колдонуучу киргизүү талаасына слэш (кыйык белгиси: /) киргизсе, тез тандоо үчүн буйруктардын тизмеси пайда болот. Баары сүрөттөгүдөй: сол жакта - биз ата-бот аркылуу буйруктарды орнотобуз; оң жакта, бул буйруктар биздин боттун колдонуучулары үчүн мурунтан эле жеткиликтүү.

Yandex.Cloud'та Telegram ботун түзүү

Яндекс функциясы

Эми биздин бот түзүлгөндөн кийин, келгиле Yandex.Cloudбиздин боттун кодун аткара турган функцияны түзүү. Эгер сиз менен иштеше элек болсоңуз Yandex.Cloud материалды оку Алиса Битрикс жеринде, жана андан кийин - Яндекс функциялары почта жөнөтүү. Бул эки салыштырмалуу кыска макала сизге тема боюнча негизги түшүнүккө ээ болуу үчүн жетиштүү болот деп ишенем.

Ошентип, консолдо Yandex.Cloud сол багыттоо менюсунда нерсени тандоо Булут функциялары, анан баскычты басыңыз Функция түзүү. Биз ага ат жана өзүбүз үчүн кыскача мүнөздөмө беребиз.

Yandex.Cloud'та Telegram ботун түзүү

Баскычын баскандан кийин Түзүү жана бир нече секунддан кийин жаңы функция бардык функциялардын тизмесинде пайда болот. Анын атын чыкылдатыңыз - бул бизди баракчага алып барат жалпы көрүнүш биздин функция. Бул жерде сиз иштетүү керек (On) которуу Коомдук функцияал сырттан жеткиликтүү болушу үчүн (үчүн Yandex.Cloud) дуйненун, жана талаалардын мааниси Чалуу шилтемеси и Идентификатор — Сиздин функцияңызды ар кандай шылуундар чакырып албашы үчүн, аны өзүңүздөн жана Telegramдан башкалардын баарынан жашырыңыз.

Yandex.Cloud'та Telegram ботун түзүү

Эми, сол менюну колдонуп, өтүңүз редактор функциялары. Келгиле, өзүбүздү бир азга четке кагалы Акылдуу ойлор, жана биздин боттун функционалдуулугун текшерүү үчүн минималдуу шаблон функциясын түзүңүз... Бирок, бул контекстте бул функция биздин бот... Кыскасы, азыр жана дал ушул жерден биз “күзгүдөй” турган жөнөкөй бот жасайбыз ( б.а. кайра жөнөтүү ) колдонуучунун суроо-талаптарын. Бул шаблонду ар дайым жаңы телеграмма боттору менен байланышуу үчүн колдонсо болот Telegram'ом жакшы иштейт. Click Файл түзүү, келгиле деп атайлы index.js, жана онлайн Код редактору бул файлга төмөнкү кодду чаптаңыз:

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

Yandex.Cloud консолунда ал төмөнкүдөй көрүнүшү керек:

Yandex.Cloud'та Telegram ботун түзүү

Андан ары төмөндө көрсөтөбүз Кирүү чекити - index.botкайда көрсөткүч бул файлдын аты (index.js), жана бот - функциянын аталышы (module.exports.bot). Бардык башка талааларды ошол бойдон калтырып, жогорку оң бурчтагы баскычты чыкылдатыңыз Версияны түзүү. Бир нече секунддан кийин функциянын бул версиясы түзүлөт. Тестирлөөдөн кийин көп өтпөй вебхук, биз жаңы версиясын түзөбүз - Акылдуу ойлор.

Yandex.Cloud'та Telegram ботун түзүү

Объектти сактоо

Эми биз түздүк Яндекс функциясы, келгиле, биз консолдо турганда Yandex.Cloud, деп аталганды жараталы чака (чака, б.а. орусча чака, дегеле букет эмес) биздин ботто колдонула турган сүрөт файлдарын сактоо үчүн Акылдуу ойлор. Сол жактагы навигация менюсунда нерсени тандаңыз Object сактоо, баскычын басыңыз Чака түзүү, анын атын ойлоп табыңыз, мисалы, img-чака, жана эң маанилүү, Объекттерге окуу мүмкүнчүлүгү Биз аны жалпыга ачык кылабыз - болбосо Telegram сүрөттөрүбүздү көрбөйт. Калган бардык талааларды өзгөрүүсүз калтырабыз. баскычын басыңыз Чака түзүү.

Yandex.Cloud'та Telegram ботун түзүү

Андан кийин, бардык чакалардын тизмеси төмөнкүдөй көрүнүшү мүмкүн (эгерде бул сиздин жалгыз чакаңыз болсо):

Yandex.Cloud'та Telegram ботун түзүү

Эми мен чаканын атын чыкылдатууну жана анын ичинде ар кандай колдонмолоруңуз үчүн сүрөттөрдү сактоону уюштуруу үчүн папканы түзүүнү сунуштайм. Мисалы, телеграмма боту үчүн Акылдуу ойлор деп аталган папканы түздүм tg-bot-smart-thoughts (эч нерсе эмес, мен бул кодду түшүнөм). Бир да түзүңүз.

Yandex.Cloud'та Telegram ботун түзүү

Эми сиз папканын атын басып, ага кирип, файлдарды жүктөй аласыз:

Yandex.Cloud'та Telegram ботун түзүү

Жана файлдын атын чыкылдатуу менен - ​​аны алыңыз URL биздин ботто жана жалпысынан каалаган жерде колдонуу үчүн (бирок муну жарыялабаңыз URL керексиз, анткени трафик баштап Объектти сактоо айыпталган).

Yandex.Cloud'та Telegram ботун түзүү

Бул, негизинен, баары бар Объектти сактоо. Эми сиз ал жерде файлдарды жүктөө сунушун көргөндө эмне кылуу керектигин билесиз.

Вебхук

Эми биз орнотобуз вебхук - б.а. бот серверден жаңыртууну (мисалы, колдонуучудан кабар) алганда телеграмма биздин Яндекс функциясы сурам жөнөтүлөт (өтүнүч) маалыматтар менен. Бул жерде сиз жөн гана браузериңиздин дарек талаасына чаптап, андан соң баракты жаңырта аласыз (бул бир гана жолу жасашыңыз керек): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Биз жөн эле алмаштырабыз {bot_token} ботубузду түзүүдө ата-боттон алган токенге жана {webhook_url} - күнү URL биздин Яндекс функциялары. Күтө туруңуз! Бирок RossKomTsenzur Россия Федерациясындагы провайдерлерге даректи тейлөөгө тыюу салат https://api.telegram.org. Ооба туура. Бирок бир нерсе ойлоп табыңыз. Кантсе да, мисалы, Украинада, Израилде же Канадада бул жөнүндө чоң энеңизден сурасаңыз болот - ал жерде "Росскомцензура" жок, ансыз адамдар кандай жашашын Кудай гана билет. Натыйжада, вебхукту орнотууда суроо-жооп төмөнкүдөй болушу керек:

Yandex.Cloud'та Telegram ботун түзүү

Биз сынап жатабыз. Ал "күзгү" болушу керек.

Yandex.Cloud'та Telegram ботун түзүү

Бул чыныгы. Биздин куттуктоолор - азыр Яндекс функциясы болду телеграмма-бот!

Акылдуу ойлор

Эми акылдуу ойлорду жасайлы. Код ачык жана күйүп турат GitHub. Бул абдан жакшы комментарийленген жана болгону жүз саптан турат. Аны опера дива либреттосундай окуңуз!

Yandex.Cloud'та Telegram ботун түзүү

Долбоорду клондоштуруу жана көз карандылыкты орнотуу:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

Файлга керектүү өзгөртүүлөрдү киргизиңиз index.js (милдеттүү эмес; эч нерсени өзгөртүүнүн кереги жок). Түзүү индекс- архив, файл менен index.js жана папка node_modules ичинде, мисалы, аты менен smart.zip.

Yandex.Cloud'та Telegram ботун түзүү

Эми биздин консолго өтүңүз Яндекс функциялары, өтмөктү тандаңыз ZIP архив, баскычын басыңыз Файлды тандаңыз, жана биздин архивди жүктөп алыңыз smart.zip. Акырында, жогорку оң бурчта баскычты чыкылдатыңыз Версияны түзүү.

Yandex.Cloud'та Telegram ботун түзүү

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

Yandex.Cloud'та Telegram ботун түзүү

Бүгүнкү күндө бардыгы ушул. Кийинки макалалар. Эгер сиз муну окууга кызыксаңыз, жаңы макалалар жөнүндө эскертмелерге жазылыңыз. Бул жерден же бул жерден жазылсаңыз болот телеграмма-channel IT Tutorial Zakharже Twitter @mikezharov.

шилтемелер

GitHubдагы код
Yandex Cloud функциялары
Yandex объект сактагычы
Боттор: Иштеп чыгуучулар үчүн киришүү
Telegram Bot API

Кайрымдуулук

Yandex.Cloud'та Telegram ботун түзүү

Source: www.habr.com

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