Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այսօր մենք կստեղծենք մի Յանդեքս.Cloud-ում Telegram-ռոբոտ օգտագործելով Yandex Cloud Functions (կամ Յանդեքս ֆունկցիաներ — կարճության համար) և Yandex Object Storage (կամ Անբաժանելի պահեստ — պարզության համար): Կոդը կլինի՝ Node.js. Սակայն, կա մեկ հատկանիշ — որոշ կազմակերպություն, որը կկոչենք Ռոսիա Կոմցենզուր (ցենզուրան արգելված է ՌԴ Սահմանադրության 29-րդ հոդվածով), չի թույլատրում Ռուսաստանի ինտերնետ մատակարարներին փոխանցել հարցումները Telegram API հասցեով: https://api.telegram.org/. Եկեք չանենք — եթե չկա, չկա: Հենց որ մեր պայուսակում կան այսպես կոչված վեբհուկներ — նրանց միջոցով մենք չենք անում հարցումներ յուրահատուկ հասցեին, այլ պարզապես ուղարկում ենք մեր հարցումը ի պատասխան մեզ ուղղված ցանկացած հարցման։ Այսինքն, ինչպես Օդեսայում — պատասխանել հարցով հարցին։ Ահա թե ինչու Telegram API մեր կոդում չի լինի։

ՀայտարարությունԱյս հոդվածում նշված պետական կազմակերպությունների անվանումները երևակայական են, իսկ իսկական կազմակերպությունների անվանումների հնարավոր նմանություններ — պատահական։

Եկեք ստեղծենք ռոբոտ, որը մեզ կընձեռի խելացի մտքեր։ Իրականում, հենց այն, ինչ պատկերված է նկարի մեջ:

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Կարող եք փորձարկել այն գործնականում — ահա անունը: @SmartThoughtsBot. Դարձյալ ուշադրություն դարձրեք «Ալիսայի հմտություն»? Это потому, что бот является своеобразным «компаньоном» для одноименного ալիսի հմտություն, այսինքն, նա կատարում է այն նույն գործառույթները, ինչ և ալիսի հմտություն և, հնարավոր է, որ նրանք կարող են խաղաղ գոյակցել միմյանց առաջացնելով: Ինչպես ստեղծել Հմտություններ Ումանի Մտքեր վերցված է հոդվածումԱլիսան ձեռք է բերում հմտություն . Այժմ (որից հետո որոշ փոփոխություններ կան, որոնք արվել են վերոնշյալ հոդվածի հրապարակումից հետո) այս հմտություն

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

պետք է և այնպես տեսք ունենա:

Ռոբոտ ստեղծումը TelegramԵս ուզում եմ, որ այս ձեռնարկը օգտակար լինի բոլորի համար, այդ թվում՝ սկսնակ «ռոբոտաշինողներին»։ Այդ պատճառով այս բաժնում ես բավականին մանրամասն կբացատրեմ, թե ինչպես իրականում ստեղծել

‘ե ռոբոտները։ Դրանց համար, ովքեր այդ տեղեկատվությունը չեն ցանկանում, անցեք հաջորդ բաժիններին։ Բացենք ծրագիրըTelegaram , կանչենք բոլոր ռոբոտների հայրին (նրանք ծրագրում են ինչպես մարդիկ) — @BotFather /newbot.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

— և սկզբից կտանք նրան հրաման /help, որ refreshing այն, ինչ մենք կարող ենք անել։ Այժմ մեզ կհետաքրքրի հրաման Քանի որ այստեղ նկարագրված ռոբոտը արդեն ստեղծվել է, ցուցադրելու նպատակով ես կստեղծեմ կարճ ժամանակով մեկ ուրիշ ռոբոտ (հետաքրքրված կլինեմ կոճկել այն)։ Չնայած նրան, որ ես այն կկոչեմDemoHabrBotusername. Ամբողջ Telegram-ռոբոտների անունները պետք է ավարտվեն բառով bot, օրինակ: MyCoolBot կամ my_cool_bot — դա ռոբոտների համար։ Բայց առաջինը մենք տանք ռոբոտին անուն (name) — դա սովորական մարդկանց համար։ Անունը կարող է լինել ցանկացած լեզվով, պարունակել տարածքներ, պարտադիր չէ, որ ավարտվի բառով bot, և նույնիսկ պարտադիր չէ, որ լինի միակողմանի։ Այս օրինակով ես այս ռոբոտը անվանել եմ Դեմո Հաբր.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այժմ ընտրենք ռոբոտին անուն (username, այն, որը ռոբոտների համար է)। Կոչենք այն Քանի որ այստեղ նկարագրված ռոբոտը արդեն ստեղծվել է, ցուցադրելու նպատակով ես կստեղծեմ կարճ ժամանակով մեկ ուրիշ ռոբոտ (հետաքրքրված կլինեմ կոճկել այն)։ Չնայած նրան, որ ես այն կկոչեմ. Ամեն ինչ, ինչը վերաբերում է ռոբոտի անվանմանը (name) ամենևին էլ չի վերաբերում նրա անունին — username (կամ վերաբերելով, բայց հակառակապես). Հաջող հասկացնելով եզակի բոտի անունը, մեզ անհրաժեշտ է իրացնել և պահպանել (լիովին գաղտնի!) նշան, որը ցույց է տրվում կարմիր նշանշի հետհքորում։ Այդ նշանի միջոցով մոտավորապես հետո մենք կկառուցենք Telegram‘ webhooks մեր համար Յանդեքս գործառույթը.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այս պահին մենք կտանք հրաման բոլոր բոթերի հայրին: /mybots, և նա մեզ ցույց կտա բոլոր ստեղծված մեր բոթերը։ Այս պահին թողնենք հանգիստ նորաբաճառն բոտը Դեմո Հաբր (նա ստեղծված էր ցույց տալու, թե ինչպես ստեղծել բոթեր, բայց մենք դեռևս այսօր կօգտագործենք նրան այլ ցուցադրական նպատակների համար), և եկեք դիտարկենք Սմարթ Ռմտքեր (@SmartThoughtsBot). Բոթերի ցուցակում սեղմում ենք նրա անունով կոճակը։

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այստեղ մենք կարող ենք կարգավորել մեր բոտը։ Սեղմելով կոճակը Խմբագրել… մենք կանցնենք տարբերակներից որևէ մեկի խմբագրմանը։ Օրինակ, սեղմելով Խմբագրել անունը մենք կարող ենք փոխել բոտի անվանումը, ասենք, փոխարեն Սմարթ Ռմտքեր, գրենք Աղմկոտ Գաղափարներ. Botpic — դա բոտի.avatar-ը, պետք է լինի ոչ պակաս 150 x 150 px. Բառարան — դա կարճ նկարագրություն է, որը օգտվողը տեսնում է բոտի առաջին գործարկում, իր պատասխանն է հարցին: Ի՞նչ կարող է անել այս բոտը; Om — նույնիսկ ավելի կարճ նկարագրություն, որը փոխանցվում է բոտի հղումով (https://t.me/SmartThoughtsBot) կամ նրա մասին տեղեկություն դիտելիս։

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Մնում է միայն կարգավորել հրամանները: Դրա համար սեղմում ենք կոճակը Խմբագրել հրամանները։ Օգտվողի պրակտիկան ստանդարտացնելու համար Telegram ներկայացնում է երկու հրաման օգտագործել միշտ: /start և /help, եթե բոտում անհրաժեշտ են կարգավորում — լրացուցիչ հրաման /settings։ Մեր բոտը պարզ է, ինչպես գնդակը, այդ պատճառով կարգավորումներ իրականում անհրաժեշտ չեն։ Գրենք երկու առաջին հրամանները, որոնք հետո կտեղեկացնենք կոդում։ Այժմ, եթե օգտագործողը մուտքագրի սլեշ (թեք նշանը: /), կհայտնվի հրամանների ցուցակը դրանց արագ ընտրության համար։ Ամեն ինչ ինչպես պատկերված է նկարում: Աρισատում — կարգավորում ենք հրամանները բոտի հայրով; աջում այս հրամանները արդեն հասանելի են օգտվողներին մեր բոտում։

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Յանդեքս ֆունկցիան

Այժմ, երբ մեր բոտն ստեղծված է, անցնում ենք Յանդեքս.Օ/cloud, որպեսզի ստեղծենք ֆունկեր, որը կիրականացնի մեր բոտի կոդը։ Եթե դեռևս չեք աշխատել Յանդեքս.Օ/cloud , կարդացեք նյութը Ուսումնասիրություն Բիթրիքսում, ապա — Յանդեքս ֆունկցիաները ուղարկում են փոստը։ Ես գրեթե համոզված եմ, որ այս երկու համեմատաբար փոքր հոդվածները ձեզ համար բավական կլինեն թեմայի հիմնական հասկանումը համար։

Այժմ, Յանդեքս.Օ/cloud կոնսոլում հրդևի ուղղահայաց մենյուից ընտրում ենք կետը Cloud Functions , ապա սեղմում ենք կոճակը։ Նրան տալիս ենք անուն, իսկ մեզ համար — կարճ նկարագրություն: եւ գործեք միը նրա համապատասխան անունը:և մի քանի վայրկյանից, նոր ֆունկցիան կերևա բոլոր ֆունկցիաների շարքում։ Սեղմում ենք նրա անունը — սա կտանի մեզ մեր ֆունկցիայի էջ։ Այստեղ պետք է ակտիվացնել (

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Սեղմելուց հետո Ստեղծել On Ամփոփում ) սլաքըՀանրային ֆունկցիա, որպեսզի այն դառնա մատչելի արտաքին (համար ) աշխարհին, իսկ դաշտերի արժեքներըԿաիրումը հրդևի ուղղահայաց մենյուից ընտրում ենք կետըՆիշը Հայտարարագիր և Իդենտիֆիկատ — պահելով գաղտնի բոլորից, բացի քեզնից և Telegram-ից, որպեսզի քո ֆունկցիան չկարողանան օգտագործել տարբեր խաբեբաներ:

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Հիմա ձախ մենյուով անցանք Խմբագիր ֆունկցիաներին: Եկեք暂时 թողնենք մեր Սմարթ Ռմտքերև ստեղծենք նվազագույն նախապատում ֆունկցիա՝ մեր բոտի աշխատունակությունը ստուգելու համար… Այժմ, այս համատեքստում, այս ֆունկցիան հենց մեր բոտն է… Ընձեռն ենք ասում, հիմա և հենց այստեղ մենք կստեղծենք պարզագույն բոտ, որը «ներքև-ներքև» (այսինքն, ետ կուղարկի) օգտատերերի պահանջները: Այս նախապատումը կարելի է օգտագործել միշտ նոր հեռագրային բոտեր ստեղծելիս, որպեսզի համոզվենք, որ կապը 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
  };
};

ՀԱՅԱՍՏԱՆ. Երևան. Դա պետք է այսպես երևա:

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այժմ, քիչ ներքև նշում ենք Մուտքագրման կետindex.bot, где index ա՛յ թե ֆայլի անունը (index.jsԿամ bot — ֆունկցիայի անունը (module.exports.bot). Բոլոր մնացած դաշտերը թողնում ենք «ինչպես կան», և վերին աջ անկյունում սեղմում ենք Ստեղծել տարբերակ. Որոշ ժամանակ անց այս ֆունկցիայի տարբերակը կստեղծվի: Շուտով, փորձարկելուց հետո վեբհուկը, մենք կն volwassenացված նոր տարբերակ — Սմարթ Ռմտքեր.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Անբաժանելի պահեստ

Հիմա, երբ մեզ մոտ ստեղծվել է Յանդեքս ֆունկցիան, եկեք, մինչ մենքอยู่ ենք կոնսոլում հրդևի ուղղահայաց մենյուից ընտրում ենք կետը, ստեղծենք այսպես կոչված բակետ (բակետ, այսինքն, «կա» ռուսերեն, ոչ թե «զամբյուղ»)՝ պահելու համար այն պատկերների ֆայլերը, որոնք օգտագործվելու են մեր բոտում: Սմարթ Ռմտքեր. Ձախ կողմի նավիգացիոն մենյուում ընտրում ենք Object Storage, սեղմում ենք Ստեղծել բակետ, մտածում ենք այն անունը, օրինակ, img-bucket, և, գլխավորապես, Օբյեկտների ընթերցման հասանելիությունը կացնում ենք հանրային — այլապես Telegram-ը մեր պատկերներին չի հասնի: Բոլոր մնացած դաշտերն ապացուցենք առանց փոփոխությունների: Սեղմում ենք կոճակը Ստեղծել բակետ.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Դրանից հետո ամբողջ բակետների ցանկը կարող է այսպես երևալ (եթե սա ձեր միակ բակետն է):

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այսօր, առաջարկում եմ սեղմել բակետի անունի վրա, և ներսում ստեղծել папка, որպեսզի համակարգենք պատկերների պահեստավորում տարբեր մեր ծրագրերի համար: Օրինակ, հեռագրային բոտի համար Սմարթ Ռմտքեր ստեղծեցի папка անունով tg-bot-smart-thoughts (ոչինչ, ես հասկանալում եմ այս կոդավորումը): Создайте и вы какую-нибудь.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Հիմա կարող եք սեղմել папка-ի վրա, մտնել туда և բեռնել ֆայլեր:

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Հայտարվում է ֆայլի անունի վրա՝ ստանալու його URL մեր բոտում օգտագործելու համար, և իսկապես, ուր լինել — միայն թե, մի՛ հրապարակեք այս URL անհրաժեշտություն, քանի որ tрафик с Օբյեկտային պահեստով միայնացվում է):

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Вот, собственно, и всё с Օբյեկտային պահեստով. Հիմա դուք կիմանաք, թե ինչ անել, երբ կտեսնեք, թե ինչպես загрузить туда файлы.

Վեբհուկ

Հիմա մենք կսահմանենք вебхук կամ երբ բոտն ստանում է թարմացում (օրինակ, հաղորդագրություն օգտվողից), սերվերից Telegram մեր Յանդեքս գործառույթը ցուցակ կուղարկվի (request) տվյալներով: Ահա այն տողը, որը կարելի է ուղղակի տեղադրել բրաուզերի հասցեի դաշտում և ապա թարմացնել էջը (այդ պետք է անել ընդամենը մեկ անգամ): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Միայն փոխարինում ենք {bot_token} -ը՝ կվենով, որը ստացել ենք բոտի ստեղծման ժամանակ, և {webhook_url} -ը՝ URL մեր Յանդեքս ֆունկցիաներ. Մինուտկա! Բայց ведь Ռոսիա Կոմցենզուր արգելում է պրովայդերներին Ռուսաստանի տարածքում սպասարկել հասցեն: https://api.telegram.org. Այո, ճիշտ է. Բայց դուք ինչ-որ բան մտածեք: Ведь можно же, например, попросить об этом свою бабушку в Украине, Израиле или Канаде — там нет никаких «росскомцензур», և մեկ Աստված գիտի, թե ինչպես են մարդիկ առանց этого ապրում: Որդու դեպքում, հարց-պատասխան ձևավորումը պետք է այսպիսին լինի.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Ստուգում ենք: Պետք է «երաշխավորի».

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այպես է, մեզ ճանապարհում ենք — հիմա Յանդեքս ֆունկցիան դարձավ Telegram-բոտով!

Սմարթ Ռմտքեր

Այժմ անում ենք Ումնալի Մտքեր: Կոդը բաց է և գտնվում է GitHub. Այն բավական լավ մեկնաբանված է, և դրանում ընդամենը հարյուր տող կա: ՈՒ կարդացեք այն ինչպես օպերային դիվայի լիբրետո:

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Կլոնացրեք նախագիծը և տեղադրեք կախվածություններ:

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

Կատարեք անհրաժեշտ փոփոխությունները ֆայլում index.js (ընտրական; կարելի է ոչինչ չփոխել): Արտադրեք zip-արխիվ, որը կլինի ֆայլով index.js և папкой node_modules արտացոլած, օրինակ, անվան տակ smart.zip.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Հիմա անցեք մեր Յանդեքս ֆունկցիաներ, ընտրեք вкладка ZIP-արխիվ, սեղմեք կոճակը Ընտրել ֆայլը, և ներբեռնեք մեր արխիվը smart.zip. Ավելին, վերին աջ անկյունում սեղմեք կոճակը Ստեղծել տարբերակ.

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Որոշ րոպե անց, երբ ֆունկցիան թարմացվի, կրկին ստուգենք մեր բոտին: Պետք է, որ այլևս не «зеркалит», այլ ապահովում է умные мысли!

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Այսօր այսքանը: Այլ հոդվածներ գալիս են: Այդպիսի բաներ ընթերցելու ցանկացողները կարող են մնալ նոր հոդվածների մասին ծանուցում ստանալու համար: Դրանց մուտք կարող եք կատարել այստեղ կամ՝ Telegram-ալիք IT Туториал Захар, կամ Twitter @mikezaharov.

Հղումներ

Կոդը GitHub-ում
Yandex Cloud Functions
Yandex Object Storage
Bots: An introduction for developers
Telegram Bot API

Դոնատներ

Ստեղծում ենք Telegram-ռոբոտ Յանդեքս.Cloud-ում

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster