Yandex.Cloud дээр Telegram бот бүтээх

Yandex.Cloud дээр Telegram бот бүтээх

Өнөөдөр хаягдал материалаас бид угсарна Yandex.Cloud Telegram бот ашиглаж байгаа Yandex Cloud функцууд (эсвэл Yandex функцууд - товчхондоо) ба Yandex объект хадгалах газар (эсвэл Объект хадгалах - тодорхой болгохын тулд). Код асаалттай байх болно Node.js. Гэсэн хэдий ч нэг таатай нөхцөл байдал бий - тодорхой байгууллага дуудсан гэж хэлье. РоссКомЦэнзур (ОХУ-ын Үндсэн хуулийн 29-р зүйлд цензурыг хориглосон), Оросын интернет үйлчилгээ үзүүлэгчид хүсэлт илгээхийг зөвшөөрдөггүй. Telegram API дээр: https://api.telegram.org/. За, бид тэгэхгүй - үгүй, үгүй. Эцсийн эцэст манай цүнхэнд ийм зүйл байдаг. вэб дэгээ - тэдний тусламжтайгаар бид тодорхой хаяг руу хүсэлт гаргахгүй, харин бидэнд хандсан аливаа хүсэлтийн хариу болгон хүсэлтээ илгээдэг. Энэ нь Одессагийн нэгэн адил бид асуултанд асуултаар хариулдаг. Тийм ч учраас Telegram API Манай кодонд харагдахгүй.

ХариуцлагаЭнэ нийтлэлд дурдагдсан төрийн байгууллагын нэрс зохиомол бөгөөд бодит амьдрал дээрх байгууллагуудын нэрстэй таарч таарах нь санамсаргүй зүйл юм.

Тиймээс бид ухаалаг бодлуудыг өгөх робот хийх болно. Яг зураг дээрх шиг:

Yandex.Cloud дээр Telegram бот бүтээх

Та үүнийг үйлдэл дээр туршиж үзэж болно - энд нэр байна: @SmartThoughtsBot. Товчлуурыг анзаарав "Алисын ур чадвар"? Учир нь бот нь ижил нэртэй ботын нэгэн төрлийн "хамтрагч" юм. Алисын ур чадвар, өөрөөр хэлбэл -тэй ижил үүргийг гүйцэтгэдэг Алисын ур чадвар мөн бие биенээ сурталчилж байж эвтэй найртай зэрэгцэн орших боломжтой. Хэрхэн бүтээх талаар ур чадвар Ухаалаг бодол нийтлэлд тайлбарласан Алис ур чадвар олж авдаг. Одоо (дээрх нийтлэлийг нийтэлсний дараа зарим өөрчлөлтийг хийсний дараа) ухаалаг гар утсан дээр энэ ур чадвар иймэрхүү харагдах болно:

Yandex.Cloud дээр Telegram бот бүтээх

Бот үүсгэх

Би энэ хичээлийг хүн бүрт хэрэгтэй байгаасай гэж хүсч байна. болон шинэхэн робот бүтээгчид. Тиймээс, энэ хэсэгт би ерөнхийдөө хэрхэн бүтээх талаар дэлгэрэнгүй тайлбарлах болно цахилгаанБотууд. Энэ мэдээллийг шаарддаггүй хүмүүсийн хувьд дараах хэсгүүдийг үргэлжлүүлнэ үү.

Програмыг нээнэ үү Телегарам, бүх роботуудын эцэг гэж нэрлэе (тэд хүмүүс шиг бүх зүйлтэй) - @ BotFather - тэгээд эхлээд бид түүнд юу хийж чадах талаар санах ойг нь сэргээх / help командыг өгнө. Одоо бид багийг сонирхох болно / newbot.

Yandex.Cloud дээр Telegram бот бүтээх

Энд тайлбарласан бот аль хэдийн үүсгэгдсэн тул харуулах зорилгоор би богино хугацаанд өөр робот үүсгэх болно (дараа нь устгана). Би түүн рүү залгая DemoHabrBot. нэрс (хэрэглэгчийн нэр) бүх телеграмын роботууд үгээр төгсөх ёстой botЖишээ нь: MyCoolBot буюу миний_сайн_бот - энэ бол роботуудад зориулагдсан. Гэхдээ эхлээд бид ботод нэр өгнө (нэр) - мөн энэ нь хүмүүст зориулагдсан. Нэр нь ямар ч хэл дээр байж болно, хоосон зай агуулсан, үгээр төгсөх шаардлагагүй bot, мөн өвөрмөц байх албагүй. Энэ жишээн дээр би энэ роботыг дуудсан Демо Хабр.

Yandex.Cloud дээр Telegram бот бүтээх

Одоо роботын нэрийг сонгоно уу (хэрэглэгчийн нэр, роботуудад зориулсан). Түүнийг дуудъя DemoHabrBot. Ботын нэртэй холбоотой бүх зүйл (нэр) түүний нэртэй огт хамаагүй - хэрэглэгчийн нэр (эсвэл хамааралтай, гэхдээ яг эсрэгээр). Өвөрмөц ботын нэрийг амжилттай үүсгэсний дараа бид улаан сумаар дэлгэцийн агшинд харуулсан жетоныг хуулж хадгалах хэрэгтэй (хамгийн их итгэлтэйгээр!). Үүний тусламжтайгаар бид дараа нь гарал үүслийг тогтоох болно цахилгаан'Бидний вэб дэгээ Yandex функц.

Yandex.Cloud дээр Telegram бот бүтээх

Одоо бүх роботуудын эцэгт тушаал өгье: /mybots, мөн энэ нь бидний үүсгэсэн бүх роботуудын жагсаалтыг харуулах болно. Одоохондоо шинэхэн жигнэсэн ботыг орхиё Демо Хабр (энэ нь роботуудыг хэрхэн бүтээхийг харуулах зорилгоор бүтээгдсэн, гэхдээ бид үүнийг өнөөдөр бусад үзүүлэх зорилгоор ашиглах болно), тэгээд ботыг харцгаая. Ухаалаг бодол (@SmartThoughtsBot). Ботуудын жагсаалтад байгаа нэртэй товчлуур дээр дарна уу.

Yandex.Cloud дээр Telegram бот бүтээх

Энд бид роботоо тохируулж болно. Товчлуур дээр дарж байна Засна уу ... Бид нэг эсвэл өөр сонголтыг засварлах руу шилжих болно. Жишээлбэл, товчлуур дээр дарж Нэр засах Бид ботын нэрийг өөрчилж болно, оронд нь гэж хэлээрэй Ухаалаг бодол, бичих Галзуу санаанууд. Ботпик - энэ бол ботын аватар, хамгийн багадаа байх ёстой 150 х 150 px. Тодорхойлолт - энэ бол хэрэглэгч ботыг анх удаа эхлүүлэх үед олж хардаг товч тайлбар бөгөөд энэ нь асуултын хариулт юм. Энэ робот юу хийж чадах вэ? Тухай - ботын холбоосоор дамжуулагдсан илүү товч тайлбар (https://t.me/SmartThoughtsBot) эсвэл энэ тухай мэдээллийг үзэх үед.

Yandex.Cloud дээр Telegram бот бүтээх

Бидний хийх ёстой зүйл бол командуудыг тохируулах явдал юм. Үүнийг хийхийн тулд товчлуурыг дарна уу Засварлах тушаалууд. Хэрэглэгчийн практикийг стандартчилах цахилгаан үргэлж хоёр тушаалыг ашиглахыг зөвлөж байна: /эхлэх и / Туслаач, хэрэв bot тохиргоо хийх шаардлагатай бол нэмэлт /settings командыг ашиглана уу. Манай робот бөмбөг шиг энгийн тул ямар ч тохиргоо хийх шаардлагагүй. Бид эхний хоёр тушаалыг бичиж, дараа нь кодоор боловсруулна. Одоо хэрэв хэрэглэгч оруулах талбарт ташуу зураас (налуу зураас: /) оруулбал хурдан сонгох командын жагсаалт гарч ирнэ. Бүх зүйл зураг дээрх шиг байна: зүүн талд - бид эцэг ботоор дамжуулан тушаалуудыг суулгадаг; баруун талд, эдгээр тушаалууд нь манай роботын хэрэглэгчдэд аль хэдийн боломжтой байна.

Yandex.Cloud дээр Telegram бот бүтээх

Yandex функц

Нэгэнт манай робот бүтээгдсэн тул бид рүүгээ явцгаая Yandex.CloudМанай роботын кодыг гүйцэтгэх функцийг бий болгох. Хэрэв та хамтран ажиллаж байгаагүй бол Yandex.Cloud материалыг уншина уу Алис Битриксийн нутагт, Тэгээд - Yandex функцууд нь шуудан илгээдэг. Харьцангуй богино хэмжээний эдгээр хоёр өгүүлэл нь тухайн сэдвийн талаар анхан шатны ойлголттой болоход хангалттай гэдэгт би итгэлтэй байна.

Тиймээс консол дээр Yandex.Cloud зүүн навигацийн цэснээс тухайн зүйлийг сонгоно уу Үүлэн функцууд, дараа нь товчлуурыг дарна уу Функц үүсгэх. Бид өөрсдөдөө нэр, товч тайлбар өгдөг.

Yandex.Cloud дээр Telegram бот бүтээх

Товчлуурыг дарсны дараа бий болгох Хэдэн секундын дараа бүх функцуудын жагсаалтад шинэ функц гарч ирнэ. Түүний нэр дээр дарна уу - энэ нь биднийг хуудас руу аваачна тойм бидний функц. Энд та идэвхжүүлэх хэрэгтэй (On) солих Нийтийн чиг үүрэгингэснээр гаднаас хандах боломжтой болно (for Yandex.Cloud) дэлхийн болон талбайн утга учир Дуудлагын холбоос и Үнэмлэх — Таны функцийг янз бүрийн луйварчид дуудаж болохгүйн тулд үүнийг өөрөөсөө болон 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 функц, алив, биднийг консол дээр байх зуур Yandex.Cloud, гэж нэрлэгддэгийг бий болгоцгооё хувин (хувин, өөрөөр хэлбэл Орос хэл дээрх хувин, огт баглаа биш) манай роботт ашиглах зургийн файлуудыг хадгалахад зориулагдсан Ухаалаг бодол. Зүүн талын навигацийн цэснээс тухайн зүйлийг сонгоно уу Обьектив хадгалах, товчийг дарна уу Хувин үүсгэх, үүний нэрийг олоорой, жишээлбэл, img-хувин, хамгийн чухал нь, Объектуудад хандах хандалтыг унших Бид үүнийг олон нийтэд нээлттэй болгодог - эс тэгвээс Telegram бидний зургийг харахгүй. Бид бусад бүх талбарыг өөрчлөхгүйгээр үлдээдэг. Товчлуур дээр дар Хувин үүсгэх.

Yandex.Cloud дээр Telegram бот бүтээх

Үүний дараа бүх хувинуудын жагсаалт иймэрхүү харагдах болно (хэрэв энэ нь таны цорын ганц хувин бол):

Yandex.Cloud дээр Telegram бот бүтээх

Одоо би хувингийн нэрэн дээр дарж, дотор нь хавтас үүсгэхийг санал болгож байна, өөр өөр програмуудад зориулж зураг хадгалах ажлыг зохион байгуулах. Жишээлбэл, телеграмын ботын хувьд Ухаалаг бодол Би нэртэй хавтас үүсгэсэн tg-bot-smart-бодол (юу ч биш, би энэ кодыг ойлгох болно). Бас нэгийг үүсгэ.

Yandex.Cloud дээр Telegram бот бүтээх

Одоо та фолдерын нэр дээр дарж, түүн рүү орж файлуудыг байршуулах боломжтой.

Yandex.Cloud дээр Telegram бот бүтээх

Мөн файлын нэр дээр дарж - үүнийг аваарай URL Манай робот болон ерөнхийдөө хаана ч ашиглах боломжтой (гэхдээ үүнийг нийтэлж болохгүй URL шаардлагагүй, учир нь замын хөдөлгөөн Объект хадгалах цэнэглэгдсэн).

Yandex.Cloud дээр Telegram бот бүтээх

Энэ бол үндсэндээ бүх зүйл юм Объект хадгалах. Одоо та тэнд файл байршуулах хүсэлтийг харах үед юу хийхээ мэдэх болно.

Webhook

Одоо бид суулгах болно вэб дэгээ - өөрөөр хэлбэл bot серверээс шинэчлэлт (жишээлбэл, хэрэглэгчийн мессеж) хүлээн авах үед цахилгаан манайд Yandex функц хүсэлт илгээгдэх болно (Хүсэлт) өгөгдөлтэй. Энэ бол та хөтчийнхөө хаягийн талбарт зүгээр л буулгаж, хуудсыг дахин сэргээх боломжтой мөр юм (та үүнийг зөвхөн нэг удаа хийх хэрэгтэй): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Бид зүгээр л солих болно {bot_token} бидний роботыг үүсгэх үед эцэг ботоос хүлээн авсан токен руу, мөн {webhook_url} - дээр URL бидний Yandex функцууд. Түр хүлээнэ үү! Гэхдээ РоссКомЦэнзур ОХУ-ын үйлчилгээ үзүүлэгчдэд хаягаар үйлчлэхийг хориглодог https://api.telegram.org. Тиймээ зөв. Гэхдээ ямар нэг юм бодож олоорой. Эцсийн эцэст та жишээлбэл, Украин, Израиль эсвэл Канадад эмээгээсээ энэ талаар асууж болно - тэнд "Росскомцензур" байдаггүй бөгөөд хүмүүс үүнгүйгээр хэрхэн амьдарч байгааг Бурхан л мэднэ. Үүний үр дүнд вэб дэгээ суулгах үед хүсэлтийн хариу дараах байдлаар харагдах ёстой.

Yandex.Cloud дээр Telegram бот бүтээх

Бид туршилт хийж байна. Энэ нь "толин тусгал" байх ёстой.

Yandex.Cloud дээр Telegram бот бүтээх

Энэ бол үнэн. Бидний баяр хүргэе - одоо Yandex функц болсон цахилгаан-бот!

Ухаалаг бодол

Одоо Ухаалаг бодлуудаа хийцгээе. Код нь нээлттэй бөгөөд дээр хэвтэж байна GitHub. Энэ нь нэлээд сайн тайлбартай бөгөөд ердөө зуун мөр урт юм. Дуурийн дива либретто шиг уншаарай!

Yandex.Cloud дээр Telegram бот бүтээх

Төслийг хуулбарлаж, хамаарлыг суулгана уу:

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

Файлд шаардлагатай өөрчлөлтүүдийг хийнэ үү index.js (заавал биш, та юу ч өөрчлөх шаардлагагүй). Үүсгэх зип- архив, файлтай index.js болон хавтас зангилаа_ модуль дотор нь жишээ нь нэрийн дор smart.zip.

Yandex.Cloud дээр Telegram бот бүтээх

Одоо манай консол руу очно уу Yandex функцууд, табыг сонгоно уу ZIP архив, товчлуурыг дарна уу Файл сонгоно уу, мөн манай архивыг татаж аваарай smart.zip. Эцэст нь баруун дээд буланд байгаа товчийг дарна уу Хувилбар үүсгэх.

Yandex.Cloud дээр Telegram бот бүтээх

Хэдэн секундын дараа функц шинэчлэгдэх үед бид роботоо дахин шалгах болно. Одоо тэр "толин тусгал" хийхээ больсон, харин ухаалаг бодлыг хүргэж байна!

Yandex.Cloud дээр Telegram бот бүтээх

Өнөөдрийн хувьд энэ л байна. Цаашид илүү олон нийтлэл гарах болно. Хэрэв та үүнийг уншихыг сонирхож байвал шинэ нийтлэлийн талаархи мэдэгдлүүдийг захиалаарай. Та эндээс эсвэл эндээс бүртгүүлж болно цахилгаан- суваг Мэдээллийн технологийн заавар Захарболон Twitter @mikezharov.

лавлагаа

GitHub дээрх код
Yandex Cloud функцууд
Yandex объект хадгалах газар
Bots: Хөгжүүлэгчдэд зориулсан танилцуулга
Telegram Bot API

Хандив

Yandex.Cloud дээр Telegram бот бүтээх

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх