Yandex.Cloud'da Telegram botu oluşturma

Yandex.Cloud'da Telegram botu oluşturma

Bugün hurda malzemelerden montaj yapacağız Yandex.Bulut Telgraf botu ile Yandex Bulut İşlevleri (ya Yandex'in işlevleri - kısaca) ve Yandex Nesne Depolama (ya Nesne depolama - açıklık için). Kod açık olacak node.js. Bununla birlikte, can sıkıcı bir durum var - diyelim ki, belirli bir organizasyonun adı: RossKomTsenzur (sansür, Rusya Federasyonu Anayasası'nın 29. Maddesi ile yasaklanmıştır), Rus İnternet sağlayıcılarının istekleri iletmesine izin vermez. Telgraf API'sı по адресу: https://api.telegram.org/. Yapmayacağız - hayır, hayır. Sonuçta çantamızda sözde var. web kancaları — onların yardımıyla belirli bir adrese talepte bulunmuyoruz, ancak talebimizi bize herhangi bir talebe yanıt olarak gönderiyoruz. Yani Odessa'da olduğu gibi soruya soruyla cevap veriyoruz. Bu yüzden Telgraf API'sı kodumuzda görünmeyecektir.

sorumluluk reddiBu makalede adı geçen devlet kuruluşlarının adları hayal ürünüdür ve gerçek hayattaki kuruluşların adlarıyla olası eşleşmeler rastlantısaldır.

Böylece bize akıllı düşünceler sağlayacak bir bot yapacağız. Tam olarak resimdeki gibi:

Yandex.Cloud'da Telegram botu oluşturma

Bunu çalışırken deneyebilirsiniz - işte adı: @SmartThoughtsBot. Düğmeyi fark ettim "Alice'in Becerisi"? Bunun nedeni, botun aynı isimdeki bot için bir tür "yardımcı" olmasıdır. Alice'in yeteneği, yani ile aynı işlevleri yerine getirir Alice'in yeteneği ve birbirlerine reklam vererek barış içinde bir arada yaşayabilmeleri mümkündür. Nasıl oluşturulacağı hakkında beceri Akıllı Düşünceler makalede anlatılan Alice beceri kazanıyor. Şimdi (yukarıdaki makalenin yayınlanmasından sonra bazı değişiklikler yaptıktan sonra) akıllı telefonda bu beceri şöyle görünecek:

Yandex.Cloud'da Telegram botu oluşturma

Bot oluşturma

Bu eğitimin herkes için faydalı olmasını isterim. ve acemi bot oluşturucular. Bu nedenle, bu bölümde genel olarak nasıl oluşturulacağını biraz ayrıntılı olarak anlatacağım. Telegrambotlar. Bu bilgiye gerek duymayanlar için aşağıdaki bölümlere geçin.

Uygulamayı aç Telegaram, tüm botların babasını diyelim (insanlar gibi her şeye sahipler) - @Filmdenkare - ve önce neler yapabileceğimize dair hafızasını tazelemesi için ona /help komutunu vereceğiz. Artık takımla ilgileneceğiz / newbot.

Yandex.Cloud'da Telegram botu oluşturma

Burada açıklanan bot zaten oluşturulduğundan, gösteri amacıyla kısa bir süre için başka bir bot oluşturacağım (ve sonra onu sileceğim). onu arayacağım DemoHabrBot. İsimler (kullanıcı adı) tüm telgraf botlarının şu kelimeyle bitmesi gerekir: ağızÖrneğin: MyCoolBot veya my_cool_bot - bu botlar içindir. Ama önce bota bir isim veriyoruz (isim) - ve bu insanlar içindir. Ad herhangi bir dilde olabilir, boşluk içerebilir ve bir kelimeyle bitmesi gerekmez ağızve benzersiz olması bile gerekmez. Bu örnekte bu botu aradım Demo Habr.

Yandex.Cloud'da Telegram botu oluşturma

Şimdi bot için bir ad seçin (kullanıcı adı, botlar için olanı). Onu arayalım DemoHabrBot. Botun adıyla ilgili her şey (isim) ismiyle hiç alakası yok - kullanıcı adı (veya geçerlidir, ancak tam tersi). Başarılı bir şekilde benzersiz bir bot adı oluşturduktan sonra, ekran görüntüsünde kırmızı okla gösterilen belirteci (kesinlikle gizlilik içinde!) kopyalayıp kaydetmemiz gerekir. Onun yardımıyla daha sonra menşeini belirleyeceğiz Telegram'bizim için bir web kancası' Yandex'in işlevi.

Yandex.Cloud'da Telegram botu oluşturma

Şimdi tüm botların babasına şu komutu verelim: / botlarımve bize oluşturduğumuz tüm botların bir listesini gösterecek. Şimdilik taze pişmiş botu yalnız bırakalım Demo Habr (botların nasıl oluşturulacağını göstermek için oluşturuldu, ancak bugün onu başka tanıtım amaçları için de kullanacağız) ve bota bakalım Akıllı Düşünceler (@SmartThoughtsBot). Bot listesinde adının yazılı olduğu düğmeye tıklayın.

Yandex.Cloud'da Telegram botu oluşturma

Burada botumuzu yapılandırabiliriz. Düğmeye basarak Düzenle… Bir veya başka bir seçeneği düzenlemeye devam edeceğiz. Örneğin butona tıklayarak Adı Düzenle bunun yerine botun adını değiştirebiliriz Akıllı Düşünceleryazmak Çılgın Fikirler. Botpic - bu botun avatarı, en azından öyle olmalı 150 x 150 px. Açıklama — Bu, kullanıcının botu ilk kez başlattığında şu soruya yanıt olarak gördüğü kısa bir açıklamadır: Bu bot ne yapabilir? Hakkımızda — bota bir bağlantıyla iletilen daha da kısa bir açıklama (https://t.me/SmartThoughtsBot) veya onunla ilgili bilgileri görüntülerken.

Yandex.Cloud'da Telegram botu oluşturma

Tek yapmamız gereken komutları ayarlamak. Bunu yapmak için düğmeye basın Komutları Düzenle. Kullanıcı uygulamalarını standartlaştırmak için Telegram her zaman iki komutun kullanılmasını önerir: / başlangıç и /Yardımve botun ayarlara ihtiyacı varsa ek /settings komutunu kullanın. Botumuz top kadar basit olduğundan henüz herhangi bir ayara ihtiyaç duymuyor. İlk iki komutu yazıyoruz ve bunları daha sonra kodda işleyeceğiz. Artık kullanıcı giriş alanına eğik çizgi (eğik çizgi işareti: /) girerse, hızlı seçim için bir komut listesi görünecektir. Her şey resimdeki gibidir: solda - komutları baba bot aracılığıyla yüklüyoruz; sağ tarafta, bu komutlar zaten botumuzda kullanıcılara açıktır.

Yandex.Cloud'da Telegram botu oluşturma

Yandex'in işlevi

Botumuz oluşturulduğuna göre artık şuraya geçebiliriz: Yandex.Bulutbotumuzun kodunu çalıştıracak bir fonksiyon oluşturmak için. Eğer birlikte çalışmadıysanız Yandex.Bulut materyali oku Alice Bitrix Ülkesinde, ve sonra - Yandex işlevleri posta gönderme. Oldukça kısa olan bu iki makalenin konu hakkında temel bir anlayışa sahip olmanız için yeterli olacağından eminim.

Yani konsolda Yandex.Bulut sol gezinme menüsünde öğeyi seçin Bulut İşlevlerive ardından düğmeye basın Bir işlev oluştur. Ona kendimiz için bir isim ve kısa bir açıklama veriyoruz.

Yandex.Cloud'da Telegram botu oluşturma

Düğmeye bastıktan sonra Oluşturmak ve birkaç saniye sonra tüm işlevler listesinde yeni işlev görünecektir. Adına tıklayın - bu bizi sayfaya götürecektir Gözden bizim fonksiyonumuz. Burada etkinleştirmeniz gerekir (On) anahtar Kamu işleviböylece dışarıdan erişilebilir hale gelir (örneğin Yandex.Bulut) dünyanın anlamı ve alanların anlamı Arama bağlantısı и tanımlayıcı — bunu kendiniz ve Telegram dışındaki herkesten derin bir sır olarak saklayın, böylece işleviniz çeşitli dolandırıcılar tarafından çağrılamaz.

Yandex.Cloud'da Telegram botu oluşturma

Şimdi sol menüyü kullanarak şuraya gidin: Editör işlevler. Bir an için kendimizi bir kenara bırakalım Akıllı Düşünceler, ve botumuzun işlevselliğini kontrol etmek için minimal bir şablon işlevi oluşturun... Ancak bu bağlamda bu işlev bizim botumuzdur... Kısaca şimdi ve tam burada "yansıtma" yapacak basit bir bot yapacağız ( yani kullanıcı isteklerini geri gönderin. Bu şablon, yeni telgraf botları oluştururken, iletişimin doğru olduğundan emin olmak için her zaman kullanılabilir. Telgraf'ohm gayet iyi çalışıyor. Tıklamak Dosya oluştur, hadi onu arayalım index.jsve çevrimiçi Kod düzenleyici aşağıdaki kodu bu dosyaya yapıştırın:

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 konsolunda şöyle görünmelidir:

Yandex.Cloud'da Telegram botu oluşturma

Daha aşağıda belirtiyoruz Giriş noktası - indeks.botNerede indeks bu dosya adıdır (index.js), Ve ağız - fonksiyon adı (module.exports.bot). Diğer tüm alanları olduğu gibi bırakın ve sağ üst köşedeki butona tıklayın. Sürüm oluştur. Birkaç saniye içinde işlevin bu sürümü oluşturulacak. Testten hemen sonra web kancası, yeni bir sürüm oluşturacağız - Akıllı Düşünceler.

Yandex.Cloud'da Telegram botu oluşturma

Nesne depolama

Şimdi yarattığımız Yandex'in işlevi, hadi, biz konsoldayken Yandex.Bulut, hadi sözde yaratalım Kova (kova, yani botumuzda kullanılacak görüntü dosyalarını depolamak için Rusça kova, hiç buket değil) Akıllı Düşünceler. Sol gezinme menüsünde öğeyi seçin Nesne Depolama, düğmesine basın Bir paket oluşturun, bunun için bir isim bulun, örneğin, resim kovası, ve en önemlisi, Nesnelere okuma erişimi Bunu herkese açık hale getiriyoruz; aksi halde Telegram resimlerimizi görmez. Diğer tüm alanları değiştirmeden bırakıyoruz. düğmesine basın Bir paket oluşturun.

Yandex.Cloud'da Telegram botu oluşturma

Bundan sonra, tüm paketlerin listesi şöyle görünebilir (eğer bu sizin tek paketinizse):

Yandex.Cloud'da Telegram botu oluşturma

Şimdi, farklı uygulamalarınız için görüntülerin depolanmasını düzenlemek üzere kovanın adına tıklayıp içinde bir klasör oluşturmanızı öneririm. Örneğin, bir telgraf botu için Akıllı Düşünceler adında bir klasör oluşturdum tg-bot-akıllı-düşünceler (hiçbir şey, bu kodu anlayacağım). Siz de bir tane oluşturun.

Yandex.Cloud'da Telegram botu oluşturma

Artık klasör adına tıklayabilir, içine girebilir ve dosyaları yükleyebilirsiniz:

Yandex.Cloud'da Telegram botu oluşturma

Ve dosya adına tıklayarak - alın URL botumuzda ve genel olarak her yerde kullanmak için (ancak bunu yayınlamayın) URL trafik nedeniyle gereksizdir. Nesne depolama ücretlendirildi).

Yandex.Cloud'da Telegram botu oluşturma

Temelde hepsi bu Nesne depolama. Artık oraya dosya yükleme istemi gördüğünüzde ne yapmanız gerektiğini bileceksiniz.

Web kancası

Şimdi kurulumu yapacağız web kancası - yani bot sunucudan bir güncelleme (örneğin, bir kullanıcıdan gelen mesaj) aldığında Telegram bizim içinde Yandex'in işlevi bir istek gönderilecek (talep) verilerle. İşte tarayıcınızın adres alanına yapıştırabileceğiniz ve ardından sayfayı yenileyebileceğiniz bir satır (bunu yalnızca bir kez yapmanız gerekir): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Sadece onu değiştireceğiz {bot_token} botumuzu oluştururken baba bottan aldığımız jetona ve {webhook_url} - açık URL bizim Yandex'in işlevleri. Bir dakika bekle! Ancak RossKomTsenzur Rusya Federasyonu'ndaki sağlayıcıların adrese hizmet vermesini yasaklar https://api.telegram.org. Evet bu doğru. Ama bir şeyler bul. Sonuçta, örneğin, bunu Ukrayna'da, İsrail'de veya Kanada'da büyükannenize sorabilirsiniz - orada "Rosskomsansürü" yoktur ve insanların onsuz nasıl yaşadığını yalnızca Tanrı bilir. Sonuç olarak, bir web kancası yüklerken istek-yanıt şöyle görünmelidir:

Yandex.Cloud'da Telegram botu oluşturma

Test ediyoruz. “Yansıtmalı” olmalıdır.

Yandex.Cloud'da Telegram botu oluşturma

Bu doğru. Tebriklerimiz - şimdi Yandex'in işlevi olmuş Telegram-bot!

Akıllı Düşünceler

Şimdi Akıllı Düşünceler yapalım. Kod açık ve yatıyor GitHub. Oldukça iyi yorumlanmış ve yalnızca yüz satır uzunluğunda. Bir opera diva librettosu gibi okuyun!

Yandex.Cloud'da Telegram botu oluşturma

Projeyi klonlayın ve bağımlılıkları yükleyin:

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

Dosyada ihtiyacınız olan değişiklikleri yapın index.js (isteğe bağlı; hiçbir şeyi değiştirmenize gerek yoktur). Yaratmak zip-arşiv, dosyayla birlikte index.js ve klasör düğüm_modülleri içeride, örneğin adı altında akıllı.zip.

Yandex.Cloud'da Telegram botu oluşturma

Şimdi konsola gidin Yandex'in işlevleri, sekmeyi seç Posta arşivi, düğmesine basın Bir dosya seçinve arşivimizi indirin akıllı.zip. Son olarak sağ üst köşedeki butona tıklayın Sürüm oluştur.

Yandex.Cloud'da Telegram botu oluşturma

Birkaç saniye içinde fonksiyon güncellendiğinde botumuzu tekrar test edeceğiz. Artık artık “aynalamıyor”, akıllı düşünceler sunuyor!

Yandex.Cloud'da Telegram botu oluşturma

Hepsi bugün için. Daha fazla makale takip edecek. Bunu okumakla ilgileniyorsanız, yeni makalelerle ilgili bildirimlere abone olun. Buradan veya adresinden abone olabilirsiniz. Telegram-kanal BT Eğitimi Zakhar, veya Twitter @mikezaharov.

referanslar

GitHub'daki kod
Yandex Bulut İşlevleri
Yandex Nesne Depolama
Botlar: Geliştiriciler için bir giriş
Telegram Bot API'sı

bağışlar

Yandex.Cloud'da Telegram botu oluşturma

Kaynak: habr.com

Yorum ekle