Avakirina botek Telegram li Yandex.Cloud

Avakirina botek Telegram li Yandex.Cloud

Îro em ê ji malzemeyên qerase bicivînin Yandex.Cloud Telegram bot bikar anîn Fonksiyonên Cloud Yandex (an jî fonksiyonên Yandex - bi kurtî) û Yandex Object Storage (an jî Depokirina Objekt - ji bo zelaliyê). Kod dê li ser be Node.js. Lêbelê, rewşek dilşewat heye - rêxistinek diyarkirî bi navê, em bibêjin, RossKomTsenzur (sansûr ji hêla Xala 29-an a Destûra Bingehîn a Federasyona Rûsyayê ve qedexe ye), rê nade pêşkêşkerên Înternetê yên rûsî ku daxwazên xwe bişînin Telegram API navnîşan: https://api.telegram.org/. Welê, em ê nekin - na, na. Jixwe, di çenteyê me de tê gotin hene. webhooks - Bi alîkariya wan, em daxwaznameyên navnîşanek taybetî nakin, lê tenê daxwaza xwe wekî bersivek ji her daxwazek ji me re dişînin. Ango wek li Odessayê em pirsekê bi pirsekê bersiv didin. Li rê da Telegram API dê di koda me de xuya neke.

DisclaimerNavên her rêxistinên hukûmetê yên ku di vê gotarê de hatine behs kirin xeyal in, û lihevhatinên muhtemel ên bi navên rêxistinên jiyanî re tesadufî ne.

Ji ber vê yekê, em ê botek çêbikin ku dê ramanên biaqil ji me re peyda bike. Tam mîna di wêneyê de:

Avakirina botek Telegram li Yandex.Cloud

Hûn dikarin wê di çalakiyê de biceribînin - li vir nav e: @SmartThoughtsBot. Bala xwe da bişkokê "Helbetmendiya Alice"? Ji ber ku bot ji bo bota bi heman navî celebek "heval" e. jêhatiya Alice, yanî ew heman fonksiyonan dike jêhatiya Alice û mumkin e ku bi reklama hev re bi awayekî aştiyane bijîn. Li ser çawa çêbikin şiyana Ramanên Smart di gotarê de diyar kirin Alice jêhatîbûnê bi dest dixe. Naha (piştî ku piştî weşandina gotara jorîn hin guhertin çêkirin) li ser smartphone ev jîrî dê tiştek bi vî rengî xuya bike:

Avakirina botek Telegram li Yandex.Cloud

Afirandina botekê

Ez dixwazim ku ev tutorial ji her kesî re kêrhatî be, tê de. û avakerên botê yên nû. Ji ber vê yekê, di vê beşê de ez ê bi hûrgulî diyar bikim ka meriv çawa bi gelemperî biafirîne Têlxiram'e botên. Ji bo kesên ku ev agahdarî ne hewce ne, biçin beşên jêrîn.

Serlêdanê vekin Telegaram, em gazî bavê hemî botan bikin (ew her tişt mîna mirovan hene) - @BotFather - û pêşî em ê fermana /alîkariyê bidin wî da ku bîra wî ya ku em dikarin bikin nûve bikin. Niha em ê bi tîmê re eleqedar bibin / newbot.

Avakirina botek Telegram li Yandex.Cloud

Ji ber ku bota ku li vir hatî destnîşan kirin jixwe hatî afirandin, ji bo armancên xwenîşandanê ez ê ji bo demek kurt botek din biafirînim (û dûv re jêbikim). Ez ê gazî wî bikim DemoHabrBot. Navên (navê bikarhêner) ji hemî botên telegramê divê bi peyvê bi dawî bibe bot, wek nimûne: MyCoolBot an my_cool_bot - ev ji bo botan e. Lê pêşî em botê navek didin (nav) - û ev ji bo mirovan e. Nav dikare bi her zimanî be, valahiyan tê de hebe û ne hewce ye ku bi peyvekê biqede bot, û ne hewce ye ku yekta be jî. Di vê nimûneyê de, min navê vê botê kir Demo Habr.

Avakirina botek Telegram li Yandex.Cloud

Naha ji bo botê navek hilbijêrin (navê bikarhêner, ya ji bo botan). Ka em gazî wî bikin DemoHabrBot. Her tiştê ku bi navê botê ve girêdayî ye (nav) qet bi navê wî re têkildar nabe - navê bikarhêner (an jî derbas dibe, lê tam berevajî). Piştî ku bi serfirazî navek botê ya yekta biafirînin, pêdivî ye ku em nîşana ku di dîmenderê de bi tîra sor tê xuyang kirin kopî bikin û hilînin (bi pêbaweriya herî hişk!). Bi alîkariya wê em ê paşerojê ji eslê xwe saz bikin Têlxiram'webhookek ji bo me fonksiyona Yandex.

Avakirina botek Telegram li Yandex.Cloud

Naha em fermanê bidin bavê hemî botan: /mybots, û ew ê navnîşek hemî botên ku me afirandine nîşanî me bide. Werin em bota teze pijyayî ji bo niha bi tenê bihêlin Demo Habr (ew hate afirandin ku nîşan bide ka meriv çawa botan diafirîne, lê em ê îro jî ji bo mebestên xwenîşandana din bikar bînin), û em li botê binihêrin Ramanên Aqilmend (@SmartThoughtsBot). Bişkojka bi navê wê di navnîşa botan de bikirtînin.

Avakirina botek Telegram li Yandex.Cloud

Li vir em dikarin bota xwe mîheng bikin. Bi tikandina bişkojê Weşandin… Em ê herin ser guherandina yek an vebijarkek din. Mînakî, bi tikandina bişkojê Navê Biguherîne em dikarin navê botê biguherînin, li şûna wê bibêjin Ramanên Aqilmend, binivîse Crazy Ideas. Botpic - ev avatara botê ye, divê herî kêm be 150 x 150 px. Terîf - ev ravek kurt e ku bikarhêner gava yekem car botê dest pê dike, wekî bersivek pirsê dibîne: Ev bot dikare çi bike? Ji dor - danasînek hîn kurttir, ku bi girêdanek botê ve tê şandin (https://t.me/SmartThoughtsBot) an dema ku agahdariya li ser wê dinihêrin.

Avakirina botek Telegram li Yandex.Cloud

Tiştê ku divê em bikin ev e ku emrê saz bikin. Ji bo vê yekê, bişkojka bitikîne Fermanên Biguherîne. Ji bo standardkirina pratîka bikarhêner Têlxiram pêşniyar dike ku her gav du fermanan bikar bînin: /destpêkirin и / alîkarî, û heke bot pêdivî bi mîhengan hebe, emrê zêde /settings bikar bînin. Bota me bi qasî topek hêsan e, ji ber vê yekê ew hîna pêdivî bi mîhengan nake. Em du fermanên pêşîn dinivîsin, ku em ê paşê di kodê de pêvajoyê bikin. Naha, heke bikarhêner di qada têketinê de qertafek (nîşana şikestî: /) bike, dê navnîşek fermanan ji bo hilbijartina bilez xuya bibe. Her tişt wekî ku di wêneyê de ye: li milê çepê - em bi navgîniya botê bav saz dikin; li milê rastê, van fermanan jixwe di bota me de ji bikarhêneran re peyda dibin.

Avakirina botek Telegram li Yandex.Cloud

fonksiyona Yandex

Niha ku bota me hatiye afirandin, em biçin Yandex.Cloudji bo afirandina fonksiyonek ku dê koda bota me bicîh bîne. Heger tu pê re nexebitî Yandex.Cloud materyalê bixwînin Alice li Land of Bitrix, and then - Fonksiyonên Yandex e-nameyê dişînin. Ez pir pê bawer im ku ev her du gotarên bi nisbet kurt dê ji bo we têra têgihîştina bingehîn a mijarê bin.

Ji ber vê yekê di konsolê de Yandex.Cloud di menuya navîgasyonê ya çepê de tiştê hilbijêrin Karên Cloud, û paşê bişkojka bitikîne Fonksiyonek çêbikin. Em ji xwe re navek û kurte ravek didin.

Avakirina botek Telegram li Yandex.Cloud

Piştî pêlêkirina bişkojkê ava bike û piştî çend saniyeyan, fonksiyona nû dê di navnîşa hemî fonksiyonan de xuya bibe. Li ser navê wê bikirtînin - ev ê me bibe rûpelê gistî fonksiyona me. Li vir hûn hewce ne ku çalak bikin (On) veguherîn Fonksiyona giştîda ku ew ji derve bigihîje (ji bo Yandex.Cloud) ya cîhanê, û wateya zeviyan Girêdana telefonê и Nasname - wê ji her kesî ji bilî xwe û Telegramê ji kûr ve veşartî bihêlin, da ku fonksiyona we ji hêla xapînokên cihêreng ve neyê gazî kirin.

Avakirina botek Telegram li Yandex.Cloud

Naha, menuya çepê bikar bînin, biçin Edîtorê fonksiyonên. Werin em hinekî xwe bidin aliyekî Ramanên Aqilmend, û fonksiyonek şablonê ya mînîmal biafirîne da ku fonksiyona bota me kontrol bike... Lêbelê, di vê çarçoveyê de, ev fonksiyon bota me ye... Bi kurtî, niha û li vir em ê botek hêsan çêbikin ku dê "neynik" ango bişîne ) daxwazên bikarhêner. Ev şablon her gav dikare were bikar anîn dema ku botên nû yên telegramê diafirînin da ku pê ewle bibin ku pêwendiya pê re heye Têlxiram'ohm baş dixebite. Bikirtînin Pelê çêbikin, em jê re bibêjin index.js, û serhêl edîtorê kodê koda jêrîn li vê pelê bixin:

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
  };
};

Di konsolê Yandex.Cloud de divê tiştek weha xuya bike:

Avakirina botek Telegram li Yandex.Cloud

Li jêr em bêtir destnîşan dikin Xala têketinê - index.botko naverok ev navê pelê ye (index.js), û bot - navê fonksiyonê (module.exports.bot). Hemî qadên din wekî xwe bihêlin, û bişkoja li quncika jorîn a rastê bikirtînin Guhertoyek çêbikin. Di çend saniyan de, ev guhertoya fonksiyonê dê were afirandin. Zû piştî ceribandinê webhook, em ê guhertoyek nû ava bikin − Ramanên Aqilmend.

Avakirina botek Telegram li Yandex.Cloud

Depokirina Objekt

Niha ku me afirandiye fonksiyona Yandex, were, dema ku em di konsolê de ne Yandex.Cloud, em bi navê biafirînin kepçe (satil, yanî bucket bi rûsî, qet ne bûk) ji bo hilanîna pelên wêneyê ku dê di bota me de werin bikar anîn Ramanên Aqilmend. Di menuya navîgasyonê ya çepê de tiştê hilbijêrin Storage Storage, bişkojkê bikirtînin Kevirek çêbikin, navekî jê re bînin, wek nimûne, img-bucket, û, ya herî girîng, Gihîştina tiştan bixwînin Em wê eşkere dikin - wekî din Telegram dê wêneyên me nebîne. Em hemû qadên din bê guhertin dihêlin. Bişkojkê bitikîne Kevirek çêbikin.

Avakirina botek Telegram li Yandex.Cloud

Piştî vê yekê, navnîşa hemî kepçeyan dibe ku tiştek wusa xuya bike (heke ev kelek weya tenê be):

Avakirina botek Telegram li Yandex.Cloud

Naha ez pêşniyar dikim ku li ser navê kekê bikirtînin û peldankek di hundurê wê de biafirînin da ku hilanîna wêneyan ji bo serîlêdanên xweyên cihêreng organîze bikin. Mînakî, ji bo botek telegramê Ramanên Aqilmend Min peldankek bi navê xwe çêkir tg-bot-aqil-raman (tiştek, ez ê vê kodê fam bikim). Yek jî çêbikin.

Avakirina botek Telegram li Yandex.Cloud

Naha hûn dikarin li ser navê peldankê bikirtînin, biçin nav wê û pelan bar bikin:

Avakirina botek Telegram li Yandex.Cloud

Û bi tikandina li ser navê pelê - wê bistînin URL ji bo karanîna di bota me de, û bi gelemperî - li her deverê (lê vê yekê çap nekin URL nepêwist, ji ber ku trafîkê ji Depokirina Objekt barkirin).

Avakirina botek Telegram li Yandex.Cloud

Di bingeh de her tişt ew e Depokirina Objekt. Naha hûn ê zanibin ku hûn çi bikin gava ku hûn daxwazek ji bo barkirina pelan li wir bibînin.

Webhook

Niha em ê saz bikin webhook - yanî dema ku bot nûvekirinek (mînak, peyamek ji bikarhênerek) ji serverê werdigire Têlxiram ji me re fonksiyona Yandex daxwazek dê were şandin (tika) bi daneyan. Li vir rêzek heye ku hûn dikarin bi hêsanî li qada navnîşana geroka xwe bixin û dûv re rûpelê nûve bikin (hûn tenê carekê vê yekê bikin): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Em ê tenê biguherînin {bot_token} to token em ji bavê bot dema afirandina bota me, û {webhook_url} - ser URL me fonksiyonên Yandex. Deqeyekê bisekine! Lebê RossKomTsenzur pêşkêşkerên li Federasyona Rûsyayê qedexe dike ku navnîşan bikin https://api.telegram.org. Erê rast e. Lê tiştek were. Wekî din, hûn dikarin, mînakî, li Ukrayna, Israelsraîl an Kanada li ser vê yekê ji dapîra xwe bipirsin - li wir "Rosskomsensorship" tune, û Xwedê tenê dizane mirov bêyî wê çawa dijîn. Wekî encamek, daxwaz-bersiva dema sazkirina webhook divê bi vî rengî xuya bike:

Avakirina botek Telegram li Yandex.Cloud

Em ceribandinê dikin. Divê ew "neynik" bike.

Avakirina botek Telegram li Yandex.Cloud

Ev rast e. Pîrozbahiyên me - niha fonksiyona YandexTêlxiram-bot!

Ramanên Aqilmend

Naha werin em Ramanên Aqilmend bikin. Kod vekirî ye û li ser derewan dike GitHub. Ew pir baş tê şîrove kirin û tenê sed rêz e. Wê mîna lîbretoya diva opera bixwînin!

Avakirina botek Telegram li Yandex.Cloud

Projeyê klon bikin û pêwendiyan saz bikin:

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

Guhertinên ku hûn hewce ne di pelê de bikin index.js (vebijarkî; hûn ne hewce ne ku tiştek biguhezînin). Xûliqandin zip-arşîv, bi pel index.js û peldankê node_modules hundir, ji bo nimûne, di bin navê zîrek.zip.

Avakirina botek Telegram li Yandex.Cloud

Naha biçin konsolê ya me fonksiyonên Yandex, tabê hilbijêre arşîva ZIP, bişkojkê bikirtînin Pelê hilbijêre, û arşîva me dakêşin zîrek.zip. Di dawiyê de, li quncikê jorê rastê, bişkojkê bikirtînin Guhertoyek çêbikin.

Avakirina botek Telegram li Yandex.Cloud

Di çend saniyan de, dema ku fonksiyon were nûve kirin, em ê dîsa bota xwe biceribînin. Naha ew êdî "neynik" nake, lê ramanên biaqil radigihîne!

Avakirina botek Telegram li Yandex.Cloud

Ji bo îro her tişt e. Gotarên bêtir li pey. Heke hûn dixwazin vê bixwînin, bibin aboneyên agahdariyên li ser gotarên nû. Hûn dikarin li vir, an jî li vir bibin abone Têlxiram-qenal IT Tutorial Zakharan Twitter @mikezaharov.

references

Kod li ser GitHub
Fonksiyonên Cloud Yandex
Yandex Object Storage
Bots: Destpêkek ji bo pêşdebiran
Telegram Bot API

Donations

Avakirina botek Telegram li Yandex.Cloud

Source: www.habr.com

Add a comment