
Այսօր մենք կստեղծենք մի Telegram-ռոբոտ օգտագործելով (կամ Յանդեքս ֆունկցիաներ — կարճության համար) և (կամ Անբաժանելի պահեստ — պարզության համար): Կոդը կլինի՝ Node.js. Սակայն, կա մեկ հատկանիշ — որոշ կազմակերպություն, որը կկոչենք Ռոսիա Կոմցենզուր (ցենզուրան արգելված է ՌԴ Սահմանադրության 29-րդ հոդվածով), չի թույլատրում Ռուսաստանի ինտերնետ մատակարարներին փոխանցել հարցումները Telegram API հասցեով: https://api.telegram.org/. Եկեք չանենք — եթե չկա, չկա: Հենց որ մեր պայուսակում կան այսպես կոչված վեբհուկներ — նրանց միջոցով մենք չենք անում հարցումներ յուրահատուկ հասցեին, այլ պարզապես ուղարկում ենք մեր հարցումը ի պատասխան մեզ ուղղված ցանկացած հարցման։ Այսինքն, ինչպես Օդեսայում — պատասխանել հարցով հարցին։ Ահա թե ինչու Telegram API մեր կոդում չի լինի։
ՀայտարարությունԱյս հոդվածում նշված պետական կազմակերպությունների անվանումները երևակայական են, իսկ իսկական կազմակերպությունների անվանումների հնարավոր նմանություններ — պատահական։
Եկեք ստեղծենք ռոբոտ, որը մեզ կընձեռի խելացի մտքեր։ Իրականում, հենց այն, ինչ պատկերված է նկարի մեջ:
Կարող եք փորձարկել այն գործնականում — ահա անունը: @SmartThoughtsBot. Դարձյալ ուշադրություն դարձրեք «Ալիսայի հմտություն»? Это потому, что бот является своеобразным «компаньоном» для одноименного ալիսի հմտություն, այսինքն, նա կատարում է այն նույն գործառույթները, ինչ և ալիսի հմտություն և, հնարավոր է, որ նրանք կարող են խաղաղ գոյակցել միմյանց առաջացնելով: Ինչպես ստեղծել Հմտություններ Ումանի Մտքեր Ալիսան ձեռք է բերում հմտություն . Այժմ (որից հետո որոշ փոփոխություններ կան, որոնք արվել են վերոնշյալ հոդվածի հրապարակումից հետո) այս հմտություն
պետք է և այնպես տեսք ունենա:
Ռոբոտ ստեղծումը TelegramԵս ուզում եմ, որ այս ձեռնարկը օգտակար լինի բոլորի համար, այդ թվում՝ սկսնակ «ռոբոտաշինողներին»։ Այդ պատճառով այս բաժնում ես բավականին մանրամասն կբացատրեմ, թե ինչպես իրականում ստեղծել
‘ե ռոբոտները։ Դրանց համար, ովքեր այդ տեղեկատվությունը չեն ցանկանում, անցեք հաջորդ բաժիններին։ Բացենք ծրագիրըTelegaram , կանչենք բոլոր ռոբոտների հայրին (նրանք ծրագրում են ինչպես մարդիկ) — @BotFather /newbot.

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

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

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

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

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

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

Սեղմելուց հետո Ստեղծել On Ամփոփում ) սլաքըՀանրային ֆունկցիա, որպեսզի այն դառնա մատչելի արտաքին (համար ) աշխարհին, իսկ դաշտերի արժեքներըԿաիրումը հրդևի ուղղահայաց մենյուից ընտրում ենք կետըՆիշը Հայտարարագիր և Իդենտիֆիկատ — պահելով գաղտնի բոլորից, բացի քեզնից և 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
};
};
ՀԱՅԱՍՏԱՆ. Երևան. Դա պետք է այսպես երևա:

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

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

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

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

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

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

Вот, собственно, и всё с Օբյեկտային պահեստով. Հիմա դուք կիմանաք, թե ինչ անել, երբ կտեսնեք, թե ինչպես загрузить туда файлы.
Վեբհուկ
Հիմա մենք կսահմանենք вебхук կամ երբ բոտն ստանում է թարմացում (օրինակ, հաղորդագրություն օգտվողից), սերվերից Telegram մեր Յանդեքս գործառույթը ցուցակ կուղարկվի (request) տվյալներով: Ահա այն տողը, որը կարելի է ուղղակի տեղադրել բրաուզերի հասցեի դաշտում և ապա թարմացնել էջը (այդ պետք է անել ընդամենը մեկ անգամ): 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 և папкой node_modules արտացոլած, օրինակ, անվան տակ smart.zip.

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

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

Այսօր այսքանը: Այլ հոդվածներ գալիս են: Այդպիսի բաներ ընթերցելու ցանկացողները կարող են մնալ նոր հոդվածների մասին ծանուցում ստանալու համար: Դրանց մուտք կարող եք կատարել այստեղ կամ՝ Telegram-ալիք , կամ Twitter .
Հղումներ
Դոնատներ
Ընտանիք: habr.com
