Yandex.Cloud жүйесінде Telegram ботын құру

Yandex.Cloud жүйесінде Telegram ботын құру

Бүгін біз сынықтардан жинаймыз Yandex.Cloud Telegram боты қолдану арқылы Яндекс бұлтты функциялары (немесе Яндекс функциялары - қысқаша) және Яндекс объектінің қоймасы (немесе Объектіні сақтау - түсінікті болу үшін). Код қосулы болады Node.js. Дегенмен, бір қызық жағдай бар - белгілі бір ұйым шақырды, айталық, РоссКомЦензур (Ресей Федерациясы Конституциясының 29-бабында цензураға тыйым салынады), ресейлік интернет-провайдерлерге сұрауларды жіберуге рұқсат бермейді. Telegram API мекенжай бойынша: https://api.telegram.org/. Біз болмайды - жоқ, жоқ. Өйткені, біздің сөмкеде осындайлар бар. вебхуктар — олардың көмегімен біз белгілі бір мекен-жайға сұраныс жасамаймыз, тек бізге кез келген сұранысқа жауап ретінде өз өтінішімізді жібереміз. Яғни, Одессадағыдай сұраққа сұрақпен жауап береміз. Сондықтан Telegram API біздің кодымызда пайда болмайды.

ЕскертуОсы мақалада аталған кез келген мемлекеттік ұйымдардың атаулары жалған, ал нақты өмірдегі ұйымдардың атауларымен сәйкес келуі мүмкін.

Сонымен, біз ақылды ойлармен қамтамасыз ететін бот жасаймыз. Дәл суреттегідей:

Yandex.Cloud жүйесінде Telegram ботын құру

Сіз оны әрекетте көре аласыз - бұл атау: @SmartThoughtsBot. Түймені байқады «Алиса шеберлігі»? Себебі, бот аттас бот үшін «серіктес» болып табылады. Алисаның шеберлігі, яғни. сияқты функцияларды орындайды Алисаның шеберлігі және бірін-бірі жарнамалау арқылы тату-тәтті өмір сүруі мүмкін. Қалай жасау керектігі туралы Ақылды ойлар дағдысы мақалада сипатталған Алиса шеберлікке ие болады. Енді (жоғарыдағы мақала жарияланғаннан кейін кейбір өзгерістер енгізілгеннен кейін) смартфонда бұл шеберлік келесідей болады:

Yandex.Cloud жүйесінде Telegram ботын құру

Бот құру

Мен бұл оқулық барлығына пайдалы болғанын қалаймын, соның ішінде. және жаңадан бот құрастырушылар. Сондықтан, бұл бөлімде мен жалпы қалай жасау керектігін егжей-тегжейлі сипаттаймын Telegram'боттар. Бұл ақпаратты қажет етпейтіндер үшін келесі бөлімдерге өтіңіз.

Қолданбаны ашыңыз Telegaram, барлық боттардың әкесін шақырайық (оларда адамдар сияқты бәрі бар) - @Бота - және алдымен біз оған не істей алатынымыз туралы есте сақтау үшін / help пәрменін береміз. Енді біз командаға қызығушылық танытамыз / newbot.

Yandex.Cloud жүйесінде Telegram ботын құру

Мұнда сипатталған бот бұрыннан жасалғандықтан, демонстрациялық мақсатта мен қысқа уақытқа басқа бот жасаймын (содан кейін оны жоямын). Мен оған қоңырау шаламын DemoHabrBot. аттары (пайдаланушы аты) барлық телеграмма боттары сөзбен аяқталуы керек Bot, мысалы: MyCoolBot немесе менің_салқын_ботым - бұл боттарға арналған. Бірақ алдымен ботқа атау береміз (ат) - бұл адамдарға арналған. Атау кез келген тілде болуы мүмкін, бос орындардан тұрады және сөзбен аяқталмауы керек Bot, және тіпті бірегей болуы міндетті емес. Бұл мысалда мен бұл ботты шақырдым Demo Habr.

Yandex.Cloud жүйесінде Telegram ботын құру

Енді боттың атын таңдаңыз (пайдаланушы аты, боттарға арналған). Оны шақырайық DemoHabrBot. Боттың атына қатысты барлығы (ат) оның атына мүлдем қатысы жоқ - пайдаланушы аты (немесе қолданылады, бірақ керісінше). Бірегей бот атауын сәтті жасағаннан кейін, қызыл көрсеткі бар скриншотта көрсетілген таңбалауышты көшіріп, сақтауымыз керек (қатты сенімділікпен!). Оның көмегімен біз кейінірек қайдан шыққанын анықтаймыз Telegram'біздің вебхук Яндекс функциясы.

Yandex.Cloud жүйесінде Telegram ботын құру

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

Yandex.Cloud жүйесінде Telegram ботын құру

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

Yandex.Cloud жүйесінде Telegram ботын құру

Бізге тек пәрмендерді орнату ғана қалды. Мұны істеу үшін түймені басыңыз Пәрмендерді өңдеу. Пайдаланушы тәжірибесін стандарттау үшін Telegram әрқашан екі пәрменді пайдалануды ұсынады: / бастау и / Көмектесіңдер, ал егер ботқа параметрлер қажет болса, қосымша /settings пәрменін пайдаланыңыз. Біздің бот доп сияқты қарапайым, сондықтан оған әлі ешқандай параметрлер қажет емес. Біз алғашқы екі пәрменді жазамыз, содан кейін оларды кодта өңдейміз. Енді, егер пайдаланушы енгізу өрісіне қиғаш сызықты (қиғаш сызық белгісі: /) енгізсе, жылдам таңдау үшін пәрмендер тізімі пайда болады. Барлығы суреттегідей: сол жақта - біз әкесі бот арқылы командаларды орнатамыз; оң жақта, бұл пәрмендер біздің боттағы пайдаланушылар үшін қол жетімді.

Yandex.Cloud жүйесінде Telegram ботын құру

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

Біздің бот жасалды, енді келесіге көшейік Yandex.Cloudбіздің бот кодын орындайтын функцияны жасау үшін. Егер сіз жұмыс істемеген болсаңыз Yandex.Cloud материалды оқыңыз Алиса Битрикс елінде, сосын - Яндекс функциялары поштаны жіберу. Осы екі салыстырмалы қысқа мақаланың сізге тақырып туралы негізгі түсінікке ие болу үшін жеткілікті болатынына сенімдімін.

Сонымен, консольде Yandex.Cloud сол жақ шарлау мәзірінде элементті таңдаңыз Бұлтты функциялартүймесін басып, түймесін басыңыз Функция құру. Біз оған ат беріп, өзіміз үшін қысқаша сипаттама береміз.

Yandex.Cloud жүйесінде Telegram ботын құру

Түймені басқаннан кейін жасау және бірнеше секундтан кейін жаңа функция барлық функциялар тізімінде пайда болады. Оның атын басыңыз - бұл бізді бетке апарады қайта қарау біздің функциямыз. Мұнда қосу керек (On) ауыстырып қосқыш Қоғамдық функцияол сырттан қолжетімді болуы үшін (үшін Yandex.Cloud) әлемнің және өрістердің мағынасы Қоңырау сілтемесі и ID — әр түрлі алаяқтар сіздің функцияңызды шақырмауы үшін оны өзіңізден және Telegram-дан басқа барлық адамдардан терең құпия ұстаңыз.

Yandex.Cloud жүйесінде Telegram ботын құру

Енді сол жақ мәзірді пайдаланып, өтіңіз Редактор функциялары. Бір сәтке өзімізді былай қойып көрейік Ақылды ойлар, және біздің боттың функционалдығын тексеру үшін минималды үлгі функциясын жасаңыз... Дегенмен, бұл контексте бұл функция біздің бот болып табылады... Қысқасы, қазір және дәл осы жерде біз «айна» болатын қарапайым бот жасаймыз ( яғни кері жіберу ) пайдаланушы сұраулары. Бұл үлгіні әрқашан жаңа телеграмма боттарымен байланыс орнату үшін пайдалануға болады Telegram'Ом жақсы жұмыс істейді. басыңыз Файл жасау, оны шақырайық 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), және Bot - функция атауы (module.exports.bot). Барлық қалған өрістерді сол күйінде қалдырып, жоғарғы оң жақ бұрыштағы түймені басыңыз Нұсқа жасау. Бірнеше секундтан кейін функцияның бұл нұсқасы жасалады. Тестілеуден кейін көп ұзамай вебхук, біз жаңа нұсқасын жасаймыз - Ақылды ойлар.

Yandex.Cloud жүйесінде Telegram ботын құру

Объектіні сақтау

Енді біз құрдық Яндекс функциясы, келіңіздер, біз консольде болғанша Yandex.Cloud, деп аталатынды жасайық шелек (шелек, яғни. орыс тіліндегі шелек, мүлде букет емес) біздің ботта қолданылатын кескін файлдарын сақтауға арналған Ақылды ойлар. Сол жақ шарлау мәзірінде элементті таңдаңыз Нысанды сақтау, түймесін басыңыз Шелек жасаңыз, оның атын ойлап табыңыз, мысалы, img-шелек, және, ең бастысы, Объектілерге қол жеткізу Біз оны жария етеміз - әйтпесе Telegram суреттерімізді көрмейді. Біз барлық басқа өрістерді өзгеріссіз қалдырамыз. түймешігін басыңыз Шелек жасаңыз.

Yandex.Cloud жүйесінде Telegram ботын құру

Осыдан кейін барлық шелектердің тізімі келесідей болуы мүмкін (егер бұл сіздің жалғыз шелекіңіз болса):

Yandex.Cloud жүйесінде Telegram ботын құру

Енді мен әртүрлі қолданбаларыңыз үшін кескіндерді сақтауды ұйымдастыру үшін шелек атауын басып, оның ішінде қалта жасауды ұсынамын. Мысалы, телеграмма боты үшін Ақылды ойлар деп аталатын қалта жасадым tg-bot-smart-ойлар (ештеңе емес, мен бұл кодты түсінемін). Біреуін де жасаңыз.

Yandex.Cloud жүйесінде Telegram ботын құру

Енді сіз қалта атауын басып, оған кіріп, файлдарды жүктей аласыз:

Yandex.Cloud жүйесінде Telegram ботын құру

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

Yandex.Cloud жүйесінде Telegram ботын құру

Мұның бәрі, негізінен, бар Объектіні сақтау. Енді сіз файлдарды жүктеп салу туралы ұсынысты көргенде не істеу керектігін білесіз.

Вебхук

Енді біз орнатамыз вебхук - яғни. бот серверден жаңартуды (мысалы, пайдаланушыдан хабар) алған кезде Telegram біздің Яндекс функциясы сұрау жіберіледі (өтініш) деректермен. Браузердің мекенжай өрісіне жай қоюға болатын жолды, содан кейін бетті жаңартуға болады (мұны бір рет орындау керек): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Біз оны жай ғана ауыстырамыз {bot_token} біздің ботты жасау кезінде әке боттан алған таңбалауышқа және {webhook_url} - қосулы URL біздің Яндекс функциялары. Бір минут күте тұрыңыз! Бірақ РоссКомЦензур Ресей Федерациясындағы провайдерлерге мекенжайға қызмет көрсетуге тыйым салады https://api.telegram.org. ИА дұрыс. Бірақ бірдеңе ойлап тап. Ақыр соңында, сіз, мысалы, Украинада, Израильде немесе Канадада бұл туралы әжеңізден сұрай аласыз - ол жерде «Росскомцензура» жоқ, ал онсыз адамдар қалай өмір сүретінін Құдай біледі. Нәтижесінде веб-хукты орнату кезіндегі сұрау-жауап келесідей болуы керек:

Yandex.Cloud жүйесінде Telegram ботын құру

Біз сынап жатырмыз. Ол «айна» болуы керек.

Yandex.Cloud жүйесінде Telegram ботын құру

Дәл солай. Біздің құттықтауларымыз - қазір Яндекс функциясы болды 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 (міндетті емес; ештеңені өзгертудің қажеті жоқ). Жасау ZIP-мұрағат, файлмен index.js және қалта түйін_модульдері ішінде, мысалы, атымен smart.zip.

Yandex.Cloud жүйесінде Telegram ботын құру

Енді біздің консольге өтіңіз Яндекс функциялары, қойындысын таңдаңыз ZIP мұрағатытүймесін басыңыз Файлды таңдаңыз, және біздің мұрағатты жүктеп алыңыз smart.zip. Соңында, жоғарғы оң жақ бұрышта түймені басыңыз Нұсқа жасау.

Yandex.Cloud жүйесінде Telegram ботын құру

Бірнеше секундтан кейін функция жаңартылған кезде біз ботты қайтадан тексереміз. Енді ол «айна» емес, ақылды ойларды жеткізеді!

Yandex.Cloud жүйесінде Telegram ботын құру

Бүгінгі күннің бәрі осы. Келесі мақалалар. Егер сіз мұны оқығыңыз келсе, жаңа мақалалар туралы хабарландыруларға жазылыңыз. Мұнда немесе мына жерден жазылуға болады Telegramарна IT оқулығы Захар, немесе Twitter @mikezharov.

сілтемелер

GitHub жүйесіндегі код
Яндекс бұлтты функциялары
Яндекс объектінің қоймасы
Боттар: әзірлеушілерге арналған кіріспе
Telegram Bot API

Қайырымдылық

Yandex.Cloud жүйесінде Telegram ботын құру

Ақпарат көзі: www.habr.com

пікір қалдыру