Бүгін біз сынықтардан жинаймыз https://api.telegram.org/
. Біз болмайды - жоқ, жоқ. Өйткені, біздің сөмкеде осындайлар бар. вебхуктар — олардың көмегімен біз белгілі бір мекен-жайға сұраныс жасамаймыз, тек бізге кез келген сұранысқа жауап ретінде өз өтінішімізді жібереміз. Яғни, Одессадағыдай сұраққа сұрақпен жауап береміз. Сондықтан Telegram API біздің кодымызда пайда болмайды.
ЕскертуОсы мақалада аталған кез келген мемлекеттік ұйымдардың атаулары жалған, ал нақты өмірдегі ұйымдардың атауларымен сәйкес келуі мүмкін.
Сонымен, біз ақылды ойлармен қамтамасыз ететін бот жасаймыз. Дәл суреттегідей:
Сіз оны әрекетте көре аласыз - бұл атау: @SmartThoughtsBot. Түймені байқады «Алиса шеберлігі»? Себебі, бот аттас бот үшін «серіктес» болып табылады. Алисаның шеберлігі, яғни. сияқты функцияларды орындайды Алисаның шеберлігі және бірін-бірі жарнамалау арқылы тату-тәтті өмір сүруі мүмкін. Қалай жасау керектігі туралы Ақылды ойлар дағдысы мақалада сипатталған
Бот құру
Мен бұл оқулық барлығына пайдалы болғанын қалаймын, соның ішінде. және жаңадан бот құрастырушылар. Сондықтан, бұл бөлімде мен жалпы қалай жасау керектігін егжей-тегжейлі сипаттаймын Telegram'боттар. Бұл ақпаратты қажет етпейтіндер үшін келесі бөлімдерге өтіңіз.
Қолданбаны ашыңыз Telegaram, барлық боттардың әкесін шақырайық (оларда адамдар сияқты бәрі бар) - @Бота - және алдымен біз оған не істей алатынымыз туралы есте сақтау үшін / help пәрменін береміз. Енді біз командаға қызығушылық танытамыз / newbot.
Мұнда сипатталған бот бұрыннан жасалғандықтан, демонстрациялық мақсатта мен қысқа уақытқа басқа бот жасаймын (содан кейін оны жоямын). Мен оған қоңырау шаламын DemoHabrBot. аттары (пайдаланушы аты) барлық телеграмма боттары сөзбен аяқталуы керек Bot, мысалы: MyCoolBot немесе менің_салқын_ботым - бұл боттарға арналған. Бірақ алдымен ботқа атау береміз (ат) - бұл адамдарға арналған. Атау кез келген тілде болуы мүмкін, бос орындардан тұрады және сөзбен аяқталмауы керек Bot, және тіпті бірегей болуы міндетті емес. Бұл мысалда мен бұл ботты шақырдым Demo Habr.
Енді боттың атын таңдаңыз (пайдаланушы аты, боттарға арналған). Оны шақырайық DemoHabrBot. Боттың атына қатысты барлығы (ат) оның атына мүлдем қатысы жоқ - пайдаланушы аты (немесе қолданылады, бірақ керісінше). Бірегей бот атауын сәтті жасағаннан кейін, қызыл көрсеткі бар скриншотта көрсетілген таңбалауышты көшіріп, сақтауымыз керек (қатты сенімділікпен!). Оның көмегімен біз кейінірек қайдан шыққанын анықтаймыз Telegram'біздің вебхук Яндекс функциясы.
Енді барлық боттардың әкесіне пәрмен берейік: /mybots, және ол бізге біз жасаған барлық боттардың тізімін көрсетеді. Жаңа піскен ботты әзірге жалғыз қалдырайық Demo Habr (ол боттарды қалай жасау керектігін көрсету үшін жасалды, бірақ біз оны бүгін басқа демонстрациялық мақсаттарда да қолданамыз) және ботқа қарайық Ақылды ойлар (@SmartThoughtsBot). Боттар тізімінде оның аты бар түймені басыңыз.
Мұнда біз ботымызды конфигурациялай аламыз. Түймені басу арқылы Өңдеу ... Біз бір немесе басқа опцияны өңдеуге көшеміз. Мысалы, түймені басу арқылы Атын өзгерту біз боттың атын өзгерте аламыз, оның орнына айтыңыз Ақылды ойлар, жазыңыз Crazy Ideas. Botpic - бұл боттың аватары, кем дегенде болуы керек 150 x 150 дана. сипаттамасы — бұл сұраққа жауап ретінде пайдаланушы ботты бірінші рет іске қосқанда көретін қысқаша сипаттама: Бұл бот не істей алады? туралы — ботқа сілтеме арқылы берілетін одан да қысқаша сипаттама (https://t.me/SmartThoughtsBot
) немесе ол туралы ақпаратты қарау кезінде.
Бізге тек пәрмендерді орнату ғана қалды. Мұны істеу үшін түймені басыңыз Пәрмендерді өңдеу. Пайдаланушы тәжірибесін стандарттау үшін Telegram әрқашан екі пәрменді пайдалануды ұсынады: / бастау и / Көмектесіңдер, ал егер ботқа параметрлер қажет болса, қосымша /settings пәрменін пайдаланыңыз. Біздің бот доп сияқты қарапайым, сондықтан оған әлі ешқандай параметрлер қажет емес. Біз алғашқы екі пәрменді жазамыз, содан кейін оларды кодта өңдейміз. Енді, егер пайдаланушы енгізу өрісіне қиғаш сызықты (қиғаш сызық белгісі: /) енгізсе, жылдам таңдау үшін пәрмендер тізімі пайда болады. Барлығы суреттегідей: сол жақта - біз әкесі бот арқылы командаларды орнатамыз; оң жақта, бұл пәрмендер біздің боттағы пайдаланушылар үшін қол жетімді.
Яндекс функциясы
Біздің бот жасалды, енді келесіге көшейік Yandex.Cloudбіздің бот кодын орындайтын функцияны жасау үшін. Егер сіз жұмыс істемеген болсаңыз Yandex.Cloud материалды оқыңыз
Сонымен, консольде Yandex.Cloud сол жақ шарлау мәзірінде элементті таңдаңыз Бұлтты функциялартүймесін басып, түймесін басыңыз Функция құру. Біз оған ат беріп, өзіміз үшін қысқаша сипаттама береміз.
Түймені басқаннан кейін жасау және бірнеше секундтан кейін жаңа функция барлық функциялар тізімінде пайда болады. Оның атын басыңыз - бұл бізді бетке апарады қайта қарау біздің функциямыз. Мұнда қосу керек (On) ауыстырып қосқыш Қоғамдық функцияол сырттан қолжетімді болуы үшін (үшін Yandex.Cloud) әлемнің және өрістердің мағынасы Қоңырау сілтемесі и ID — әр түрлі алаяқтар сіздің функцияңызды шақырмауы үшін оны өзіңізден және 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 консолінде ол келесідей болуы керек:
Бұдан әрі төменде көрсетеміз Кіру нүктесі - index.botқайда көрсеткіш бұл файл атауы (index.js), және Bot - функция атауы (module.exports.bot). Барлық қалған өрістерді сол күйінде қалдырып, жоғарғы оң жақ бұрыштағы түймені басыңыз Нұсқа жасау. Бірнеше секундтан кейін функцияның бұл нұсқасы жасалады. Тестілеуден кейін көп ұзамай вебхук, біз жаңа нұсқасын жасаймыз - Ақылды ойлар.
Объектіні сақтау
Енді біз құрдық Яндекс функциясы, келіңіздер, біз консольде болғанша Yandex.Cloud, деп аталатынды жасайық шелек (шелек, яғни. орыс тіліндегі шелек, мүлде букет емес) біздің ботта қолданылатын кескін файлдарын сақтауға арналған Ақылды ойлар. Сол жақ шарлау мәзірінде элементті таңдаңыз Нысанды сақтау, түймесін басыңыз Шелек жасаңыз, оның атын ойлап табыңыз, мысалы, img-шелек, және, ең бастысы, Объектілерге қол жеткізу Біз оны жария етеміз - әйтпесе Telegram суреттерімізді көрмейді. Біз барлық басқа өрістерді өзгеріссіз қалдырамыз. түймешігін басыңыз Шелек жасаңыз.
Осыдан кейін барлық шелектердің тізімі келесідей болуы мүмкін (егер бұл сіздің жалғыз шелекіңіз болса):
Енді мен әртүрлі қолданбаларыңыз үшін кескіндерді сақтауды ұйымдастыру үшін шелек атауын басып, оның ішінде қалта жасауды ұсынамын. Мысалы, телеграмма боты үшін Ақылды ойлар деп аталатын қалта жасадым tg-bot-smart-ойлар (ештеңе емес, мен бұл кодты түсінемін). Біреуін де жасаңыз.
Енді сіз қалта атауын басып, оған кіріп, файлдарды жүктей аласыз:
Ал файл атауын басу арқылы - оны алыңыз URL біздің ботымызда және жалпы - кез келген жерде пайдалану үшін (бірақ оны жарияламаңыз URL қажет емес, себебі трафик бастап Объектіні сақтау зарядталған).
Мұның бәрі, негізінен, бар Объектіні сақтау. Енді сіз файлдарды жүктеп салу туралы ұсынысты көргенде не істеу керектігін білесіз.
Вебхук
Енді біз орнатамыз вебхук - яғни. бот серверден жаңартуды (мысалы, пайдаланушыдан хабар) алған кезде Telegram біздің Яндекс функциясы сұрау жіберіледі (өтініш) деректермен. Браузердің мекенжай өрісіне жай қоюға болатын жолды, содан кейін бетті жаңартуға болады (мұны бір рет орындау керек): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Біз оны жай ғана ауыстырамыз {bot_token} біздің ботты жасау кезінде әке боттан алған таңбалауышқа және {webhook_url} - қосулы URL біздің Яндекс функциялары. Бір минут күте тұрыңыз! Бірақ РоссКомЦензур Ресей Федерациясындағы провайдерлерге мекенжайға қызмет көрсетуге тыйым салады https://api.telegram.org
. ИА дұрыс. Бірақ бірдеңе ойлап тап. Ақыр соңында, сіз, мысалы, Украинада, Израильде немесе Канадада бұл туралы әжеңізден сұрай аласыз - ол жерде «Росскомцензура» жоқ, ал онсыз адамдар қалай өмір сүретінін Құдай біледі. Нәтижесінде веб-хукты орнату кезіндегі сұрау-жауап келесідей болуы керек:
Біз сынап жатырмыз. Ол «айна» болуы керек.
Дәл солай. Біздің құттықтауларымыз - қазір Яндекс функциясы болды 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.
Енді біздің консольге өтіңіз Яндекс функциялары, қойындысын таңдаңыз ZIP мұрағатытүймесін басыңыз Файлды таңдаңыз, және біздің мұрағатты жүктеп алыңыз smart.zip. Соңында, жоғарғы оң жақ бұрышта түймені басыңыз Нұсқа жасау.
Бірнеше секундтан кейін функция жаңартылған кезде біз ботты қайтадан тексереміз. Енді ол «айна» емес, ақылды ойларды жеткізеді!
Бүгінгі күннің бәрі осы. Келесі мақалалар. Егер сіз мұны оқығыңыз келсе, жаңа мақалалар туралы хабарландыруларға жазылыңыз. Мұнда немесе мына жерден жазылуға болады Telegramарна
сілтемелер
Қайырымдылық
Ақпарат көзі: www.habr.com