Îro em ê ji malzemeyên qerase bicivînin 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:
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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:
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.
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.
Piştî vê yekê, navnîşa hemî kepçeyan dibe ku tiştek wusa xuya bike (heke ev kelek weya tenê be):
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.
Naha hûn dikarin li ser navê peldankê bikirtînin, biçin nav wê û pelan bar bikin:
Û 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).
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:
Em ceribandinê dikin. Divê ew "neynik" bike.
Ev rast e. Pîrozbahiyên me - niha fonksiyona Yandex bû Têlxiram-bot!
Ramanên Aqilmend
Naha werin em Ramanên Aqilmend bikin. Kod vekirî ye û li ser derewan dike
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.
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.
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!
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
references
Donations
Source: www.habr.com