Telegram բոտի կառուցում Yandex.Cloud-ում

Telegram բոտի կառուցում Yandex.Cloud-ում

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

Հրաժարում պատասխանատվությունիցԱյս հոդվածում նշված պետական ​​կազմակերպությունների անունները մտացածին են, իսկ իրական կազմակերպությունների անունների հետ հնարավոր համընկնումները պատահական են:

Այսպիսով, մենք կպատրաստենք բոտ, որը մեզ խելացի մտքեր կապահովի։ Ճիշտ այնպես, ինչպես նկարում.

Telegram բոտի կառուցում Yandex.Cloud-ում

Դուք կարող եք փորձել այն գործողության մեջ - ահա անունը. @SmartThoughtsBot. Նկատեց կոճակը «Ալիսի հմտությունը»? Դա պայմանավորված է նրանով, որ բոտը մի տեսակ «ուղեկցորդ» է նույնանուն բոտի համար: Ալիսի հմտությունը, այսինքն. այն կատարում է նույն գործառույթները, ինչ Ալիսի հմտությունը եւ հնարավոր է, որ նրանք կարողանան խաղաղ գոյակցել՝ միմյանց գովազդելով։ Այն մասին, թե ինչպես ստեղծել հմտություններ Խելացի մտքեր նկարագրված է հոդվածում Ալիսը հմտություն է ձեռք բերում. Այժմ (վերոնշյալ հոդվածի հրապարակումից հետո որոշ փոփոխություններ կատարելուց հետո) սմարթֆոնի վրա սա հմտություն այսպիսի տեսք կունենա.

Telegram բոտի կառուցում Yandex.Cloud-ում

Բոտի ստեղծում

Ես կցանկանայի, որ այս ձեռնարկը օգտակար լինի բոլորի համար, ներառյալ. և սկսնակ բոտ կառուցողներ: Հետեւաբար, այս բաժնում ես որոշ մանրամասն նկարագրելու եմ, թե ինչպես ստեղծել ընդհանրապես Telegramբոտեր. Նրանց համար, ովքեր չեն պահանջում այս տեղեկատվությունը, անցեք հետևյալ բաժիններին:

Բացեք հավելվածը Telegaram, եկեք բոլոր բոտերի հայրը կոչենք (նրանք ամեն ինչ ունեն մարդկանց նման) - @BotFather - և նախ մենք նրան կտանք /help հրամանը՝ թարմացնելու իր հիշողությունը, թե ինչ կարող ենք անել: Հիմա մեզ կհետաքրքրի թիմը / newbot.

Telegram բոտի կառուցում Yandex.Cloud-ում

Քանի որ այստեղ նկարագրված բոտն արդեն ստեղծվել է, ցուցադրական նպատակով ես կարճ ժամանակով կստեղծեմ մեկ այլ բոտ (հետո կջնջեմ այն)։ Ես կկանչեմ նրան DemoHabrBot. Անուններ (օգտագործողի անունը) բոլոր հեռագրային բոտերը պետք է ավարտվեն բառով bot, օրինակ ` MyCoolBot կամ my_cool_bot - սա բոտերի համար է: Բայց նախ բոտին տալիս ենք անուն (անուն) - և սա մարդկանց համար է: Անունը կարող է լինել ցանկացած լեզվով, պարունակել բացատներ և պարտադիր չէ, որ ավարտվի բառով bot, և նույնիսկ պարտադիր չէ, որ եզակի լինի: Այս օրինակում ես անվանեցի այս բոտը Demo Habr.

Telegram բոտի կառուցում Yandex.Cloud-ում

Այժմ ընտրեք անուն բոտի համար (օգտագործողի անունը, բոտերի համար)։ Եկեք զանգենք նրան DemoHabrBot. Ամեն ինչ կապված է բոտի անվան հետ (անուն) ընդհանրապես չի առնչվում նրա անվան հետ. օգտագործողի անունը (կամ կիրառվում է, բայց ճիշտ հակառակը): Բոտի եզակի անուն հաջողությամբ ստեղծելուց հետո մենք պետք է պատճենենք և պահպանենք (խիստ գաղտնիությամբ) սքրինշոթում ցուցադրված նշանը կարմիր սլաքով: Նրա օգնությամբ մենք հետագայում կհաստատենք ծագումը Telegram«Վեբկապ մեր համար Yandex գործառույթը.

Telegram բոտի կառուցում Yandex.Cloud-ում

Հիմա եկեք հրաման տանք բոլոր բոտերի հորը. /mybots, և այն մեզ ցույց կտա մեր ստեղծած բոլոր բոտերի ցուցակը: Թարմ թխած բոտին առայժմ հանգիստ թողնենք Demo Habr (այն ստեղծվել է ցույց տալու, թե ինչպես ստեղծել բոտեր, բայց մենք այն այսօր կօգտագործենք նաև այլ ցուցադրական նպատակներով), և եկեք նայենք բոտին. Խելացի մտքեր (@SmartThoughtsBot) Սեղմեք կոճակը իր անունով բոտերի ցանկում:

Telegram բոտի կառուցում Yandex.Cloud-ում

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

Telegram բոտի կառուցում Yandex.Cloud-ում

Մեզ մնում է միայն կարգավորել հրամանները: Դա անելու համար սեղմեք կոճակը Խմբագրել հրամանները. Օգտագործողի պրակտիկան ստանդարտացնելու համար Telegram խորհուրդ է տալիս միշտ օգտագործել երկու հրաման. /սկսել и / Օգնություն, և եթե բոտին անհրաժեշտ են կարգավորումներ, օգտագործեք լրացուցիչ /settings հրամանը։ Մեր բոտը գնդակի պես պարզ է, ուստի այն դեռևս կարգավորումների կարիք չունի: Մենք գրում ենք առաջին երկու հրամանները, որոնք հետո կմշակենք կոդով։ Այժմ, եթե օգտատերը մուտքագրման դաշտում մուտքագրում է շեղ (շեղի նշան՝ /), արագ ընտրության համար կհայտնվի հրամանների ցանկ: Ամեն ինչ այնպես է, ինչպես նկարում. ձախ կողմում - մենք հրամաններ ենք տեղադրում հայր բոտի միջոցով; աջ կողմում այս հրամաններն արդեն հասանելի են մեր բոտի օգտատերերին:

Telegram բոտի կառուցում Yandex.Cloud-ում

Yandex գործառույթը

Այժմ, երբ մեր բոտը ստեղծվել է, եկեք գնանք Yandex.Cloudստեղծել մի ֆունկցիա, որը կկատարի մեր բոտի կոդը: Եթե ​​դուք չեք աշխատել հետ Yandex.Cloud կարդալ նյութը Ալիսը Բիտրիքսի երկրում, եւ հետո - Yandex-ի գործառույթները փոստ են ուղարկում. Համոզված եմ, որ այս երկու համեմատաբար կարճ հոդվածները բավարար կլինեն թեմայի վերաբերյալ տարրական պատկերացում կազմելու համար:

Այսպիսով, կոնսոլում Yandex.Cloud ձախ նավիգացիոն մենյուում ընտրեք տարրը Ամպի գործառույթները, ապա սեղմեք կոճակը Ստեղծեք գործառույթ. Մենք տալիս ենք անուն և կարճ նկարագրություն մեզ համար։

Telegram բոտի կառուցում Yandex.Cloud-ում

Կոճակը սեղմելուց հետո ստեղծել և մի քանի վայրկյան հետո նոր գործառույթը կհայտնվի բոլոր գործառույթների ցանկում։ Սեղմեք նրա անվան վրա, սա մեզ կտանի էջ Վերանայել մեր գործառույթը. Այստեղ դուք պետք է միացնեք (On) անջատիչ Հասարակական գործառույթորպեսզի այն հասանելի դառնա արտաքինից (համար Yandex.Cloud) աշխարհի, և դաշտերի իմաստը Զանգի հղում и Նույնացուցիչ — Խորապես գաղտնի պահեք բոլորից, բացի ձեզնից և Telegram-ից, որպեսզի ձեր գործառույթը չկարողանա կանչել տարբեր խաբեբաների կողմից:

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 վահանակում այն ​​պետք է նման լինի հետևյալին.

Telegram բոտի կառուցում Yandex.Cloud-ում

Ավելի ստորև մենք նշում ենք Մուտքի կետ - index.botՈրտեղ ինդեքս սա ֆայլի անունն է (index.js), և bot - ֆունկցիայի անվանումը (module.exports.bot) Մնացած բոլոր դաշտերը թողեք այնպես, ինչպես կա, և սեղմեք վերին աջ անկյունում գտնվող կոճակը Ստեղծել տարբերակ. Մի քանի վայրկյանից կստեղծվի ֆունկցիայի այս տարբերակը։ Փորձարկումից անմիջապես հետո վեբկեռիկ, մենք կստեղծենք նոր տարբերակ - Խելացի մտքեր.

Telegram բոտի կառուցում Yandex.Cloud-ում

Օբյեկտների պահեստավորում

Այժմ, երբ մենք ստեղծել ենք Yandex գործառույթը, արի՛, մինչ մենք մխիթարել ենք Yandex.Cloud, ստեղծենք այսպես կոչված դույլ (շերեփ, այսինքն. դույլ ռուսերեն, ընդհանրապես ոչ ծաղկեփունջ) պատկերային ֆայլեր պահելու համար, որոնք կօգտագործվեն մեր բոտում Խելացի մտքեր. Ձախ նավիգացիոն ընտրացանկում ընտրեք տարրը Նյութերի պահեստավորում, սեղմել կոճակը Ստեղծեք դույլ, դրա համար անուն հորինեք, օրինակ, img-bucketև, ամենակարևորը, Կարդալ մուտք դեպի օբյեկտներ Մենք հրապարակում ենք այն, այլապես Telegram-ը չի տեսնի մեր նկարները: Մնացած բոլոր դաշտերը թողնում ենք անփոփոխ։ սեղմել կոճակը Ստեղծեք դույլ.

Telegram բոտի կառուցում Yandex.Cloud-ում

Դրանից հետո բոլոր դույլերի ցանկը կարող է այսպիսի տեսք ունենալ (եթե սա ձեր միակ դույլն է).

Telegram բոտի կառուցում Yandex.Cloud-ում

Այժմ ես առաջարկում եմ սեղմել դույլի անվան վրա և դրա ներսում ստեղծել թղթապանակ՝ ձեր տարբեր հավելվածների համար պատկերների պահպանումը կազմակերպելու համար: Օրինակ՝ հեռագրային բոտի համար Խելացի մտքեր Ես ստեղծեցի մի թղթապանակ, որը կոչվում էր tg-bot-smart-thoughts (ոչինչ, ես կհասկանամ այս ծածկագիրը): Ստեղծեք նաև մեկը:

Telegram բոտի կառուցում Yandex.Cloud-ում

Այժմ կարող եք սեղմել թղթապանակի անվան վրա, մտնել դրա մեջ և վերբեռնել ֆայլեր.

Telegram բոտի կառուցում Yandex.Cloud-ում

Եվ սեղմելով ֆայլի անվան վրա՝ ստացեք այն URL մեր բոտում օգտագործելու համար, և ընդհանրապես՝ ցանկացած վայրում (բայց մի հրապարակեք սա URL ավելորդ, քանի որ երթևեկությունը Օբյեկտների պահեստավորում գանձված):

Telegram բոտի կառուցում Yandex.Cloud-ում

Դա հիմնականում այն ​​է, ինչ կա դրա համար Օբյեկտների պահեստավորում. Այժմ դուք կիմանաք, թե ինչ անել, երբ այնտեղ ֆայլեր վերբեռնելու հուշում տեսնեք:

Webhook

Այժմ մենք կտեղադրենք վեբկեռիկ - այսինքն. երբ բոտը սերվերից թարմացում է ստանում (օրինակ՝ հաղորդագրություն օգտվողից): Telegram մեր Yandex գործառույթը հարցում կուղարկվի (պահանջել) տվյալների հետ։ Ահա մի տող, որը կարող եք պարզապես տեղադրել ձեր բրաուզերի հասցեի դաշտում և այնուհետև թարմացնել էջը (դա պետք է անեք միայն մեկ անգամ). https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Մենք պարզապես կփոխարինենք այն {bot_token} այն նշանին, որը մենք ստացել ենք հայր բոտից մեր բոտը ստեղծելիս, և {webhook_url} - վրա URL մեր Յանդեքսի գործառույթները. Մի րոպե սպասիր! Բայց ՌոսԿոմԾենզուր արգելում է Ռուսաստանի Դաշնությունում գտնվող պրովայդերներին սպասարկել հասցեն https://api.telegram.org. Այո դա ճիշտ է. Բայց մի բան մտածեք: Ի վերջո, դուք կարող եք, օրինակ, հարցնել ձեր տատիկին այս մասին Ուկրաինայում, Իսրայելում կամ Կանադայում. այնտեղ «Ռոսկոմցենզուրա» չկա, և Աստված գիտի միայն, թե ինչպես են մարդիկ ապրում առանց դրա: Արդյունքում, վեբ-կապը տեղադրելիս հարցում-պատասխանը պետք է այսպիսի տեսք ունենա.

Telegram բոտի կառուցում Yandex.Cloud-ում

Մենք փորձարկում ենք. Այն պետք է «հայելային»:

Telegram բոտի կառուցում Yandex.Cloud-ում

Սա ճիշտ է։ Մեր շնորհավորանքները հիմա Yandex գործառույթը դարձել Telegram- բոտ!

Խելացի մտքեր

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

Telegram բոտի կառուցում Yandex.Cloud-ում

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

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

Կատարեք անհրաժեշտ փոփոխությունները ֆայլում index.js (ըստ ցանկության, դուք ոչինչ փոխելու կարիք չունեք): Ստեղծել սուլոցով թռչել-արխիվ, ֆայլով index.js և թղթապանակ հանգույցի_մոդուլներ ներսում, օրինակ, անվան տակ smart.zip.

Telegram բոտի կառուցում Yandex.Cloud-ում

Այժմ գնացեք մխիթարել մեր Յանդեքսի գործառույթները, ընտրեք ներդիրը ZIP արխիվ, սեղմել կոճակը Ընտրեք ֆայլ, և ներբեռնեք մեր արխիվը smart.zip. Վերջապես, վերին աջ անկյունում սեղմեք կոճակը Ստեղծել տարբերակ.

Telegram բոտի կառուցում Yandex.Cloud-ում

Մի քանի վայրկյանից, երբ ֆունկցիան թարմացվի, մենք նորից կփորձարկենք մեր բոտը։ Այժմ նա այլևս չի «հայելիում», այլ խելացի մտքեր է հաղորդում:

Telegram բոտի կառուցում Yandex.Cloud-ում

Այսօրվա համար այսքանը: Հետևում են ավելի շատ հոդվածներ: Եթե ​​դուք հետաքրքրված եք սա կարդալով, բաժանորդագրվեք նոր հոդվածների մասին ծանուցումներին: Դուք կարող եք բաժանորդագրվել այստեղ, կամ էլ Telegramալիք ՏՏ ձեռնարկ ԶախարԿամ Twitter @mikezaharov.

Սայլակ

Կոդ GitHub-ում
Yandex Cloud գործառույթները
Yandex օբյեկտների պահեստավորում
Բոտեր. Ներածություն մշակողների համար
Telegram Bot API

Նվիրատվություններ

Telegram բոտի կառուցում Yandex.Cloud-ում

Source: www.habr.com

Добавить комментарий