Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

Sadece üç hafta önce kendimi BT dünyasına kaptırmaya başladım. Cidden, üç hafta önce HTML sözdizimini bile anlamıyordum ve programlama dilleriyle tanışmam 10 yıl önceki Pascal'daki okul müfredatıyla sona erdi. Ancak çocukların bot yapmasının güzel olacağı bir BT kampına gitmeye karar verdim. O kadar da zor olmadığına karar verdim.

Bu benim için uzun bir yolculuğa başladı:

  • Ubuntu ile bir bulut sunucusu kurduk,
  • GitHub'a kayıtlı,
  • temel JavaScript sözdizimini öğrendi,
  • İngilizce ve Rusça tonlarca makale okudum,
  • sonunda bir bot yaptım
  • Sonunda bu yazıyı yazdım.

Nihai sonuç şuna benziyordu:

Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

Bunun yeni başlayanlar için bir makale olduğunu hemen söyleyeceğim - sadece temel şeylerin sıfırdan nasıl yapılacağını anlamak için.

Ve ayrıca - ileri düzey programcılar için - onları biraz güldürmek için.

1. JS'de kod nasıl yazılır?

En azından öncelikle dilin sözdizimini anlamanın gerekli olduğunu anladım. Seçim JavaScript'e düştü çünkü benim için bir sonraki adım ReactNative'de bir uygulama oluşturmaktı. ile başladım tabiki Codecademy'deydim ve çok memnun kaldım. İlk 7 gün ücretsizdir. Gerçek projeler. Ben tavsiye ediyorum. Tamamlanması yaklaşık 25 saat sürdü. Aslında hepsi faydalı değildi. Dersin yapısı ve ilk bloğun detaylı görünümü bu şekildedir.

Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

2. Bir bot nasıl kaydedilir?

Bu başlangıçta bana çok yardımcı oldu bu makale belli bir Archakov'un blogundan. En başından çiğniyor. Ancak asıl önemli olan, bir botun kaydedilmesiyle ilgili talimatlardır. Daha iyisini yazamam ve bu en kolay kısım olduğu için sadece ana fikri yazacağım. Bir bot oluşturmanız ve API'sini almanız gerekir. Bu, başka bir bot olan @BotFather aracılığıyla yapılır. Onu telgrafta bulun, ona yazın, basit yolu izleyin ve bir API anahtarı alın (kaydedin!) (bu bir sayı ve harf kümesidir). Daha sonra işe yaradı.

Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

3. Bot kodu neye benziyor?

Makaleleri uzun süre inceledikten sonra, Telegram API'sini incelemek ve sıfırdan büyük kod parçaları oluşturmak konusunda endişelenmenize gerek kalmaması için bir tür kütüphane (modül formatında üçüncü taraf kodu) kullanmanın faydalı olduğunu fark ettim. Çerçeveyi buldum telgrafnpm veya iplik kullanılarak bir şekilde bir şeye bağlanması gerekiyordu. Bir botun konuşlandırılmasının nelerden oluştuğunu kabaca bu şekilde anladım. Burada gülün. Gücenmeyeceğim. Botun sonraki oluşturulması sırasında bana en çok sayfanın altındaki örnekler yardımcı oldu:

Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

3. 100 ruble karşılığında kendi bulut sunucunuzu nasıl oluşturabilirsiniz?

Uzun bir araştırmadan sonra yukarıdaki resimdeki 'npm' komutunun komut satırını ifade ettiğini fark ettim. Komut satırı her yerdedir, ancak onu çalıştırabilmek için NodePackageManager'ı yüklemeniz gerekir. Sorun, ChromeOS'lu bir PixelBook'ta programlama yapmamdı. Linux'u nasıl öğrendiğime dair büyük bir bloğu burada atlayacağım; çoğu kişi için boş ve gereksizdir. Windows'unuz veya MacBook'unuz varsa, zaten bir konsolunuz var.

Özetle Linux'u Crostini üzerinden kurdum.

Ancak bu süreçte botun sürekli çalışabilmesi için (sadece bilgisayarım açıkken değil) bir bulut sunucusuna ihtiyacım olduğunu fark ettim. Seçtim vscale.io 100 ruble harcadım ve en ucuz Ubuntu sunucusunu satın aldım (resme bakın).

Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

4. Bot çalıştırmak için sunucu nasıl hazırlanır

Bundan sonra sunucuda kod metnini içeren dosyayı koyacağım bir tür klasör oluşturmam gerektiğini fark ettim. Bunu yapmak için konsola (“Konsolu aç” düğmesiyle doğrudan web sitesinde çalıştırın) girdim.

mkdir bot

bot - bu benim klasörümün adı oldu. Bundan sonra, *.js çözünürlüğündeki dosyalardan kod çalıştırmamı sağlayacak olan npm ve Node.js'yi yükledim.

sudo apt update
sudo apt install nodejs
sudo apt install npm

Bu aşamada konsolunuz üzerinden sunucuya bağlantı kurmanızı önemle tavsiye ederim. Burada talimat Bu, sunucuyla doğrudan bilgisayarınızın konsolu üzerinden çalışmanıza olanak tanır.

5. İlk botunuzun kodunu nasıl yazarsınız?

Ama artık bu benim için sadece bir keşif. Herhangi bir program yalnızca metin satırlarından oluşur. İstenilen uzantıyla kaydedilerek herhangi bir yere yerleştirilebilirler, hepsi bu. Güzelsin. kullandım Atom, ancak gerçekte standart bir not defterine yazabilirsiniz. Önemli olan dosyayı daha sonra istenen uzantıya kaydetmektir. Bu, Word'de metin yazıp kaydetmeye benzer.

Telegraf sayfasındaki örnekteki kodu içine yerleştirdiğim ve index.js dosyasına kaydettiğim yeni bir dosya oluşturdum (genel olarak dosyayı bu şekilde adlandırmak gerekli değildir, ancak bu gelenekseldir). Önemli - BOT_TOKEN yerine ikinci paragrafta yer alan API anahtarınızı ekleyin.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome!'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()

6. Github aracılığıyla sunucuya kod nasıl yüklenir?

Şimdi bu kodu bir şekilde sunucuya yükleyip çalıştırmam gerekiyordu. Bu benim için bir meydan okuma haline geldi. Sonuç olarak, uzun çilelerden sonra, github'da konsoldaki bir komutu kullanarak kodu güncellemenize olanak tanıyan bir dosya oluşturmanın daha kolay olacağını fark ettim. üzerinde bir hesap kaydettim github Ve yaptım yeni projedosyayı yüklediğim yer. Bundan sonra, hesabımdan (açık!) bot klasöründeki sunucuya dosya yüklemeyi nasıl ayarlayacağımı bulmam gerekiyordu (aniden bırakırsanız, cd bot yazmanız yeterli).

7. Github bölüm 2 aracılığıyla sunucuya dosya yükleme

Sunucuya git'ten dosya indirecek bir program kurmam gerekiyordu. Git'i sunucuya konsola yazarak yükledim

apt-get install git

Bundan sonra dosya yüklemeyi yapılandırmam gerekiyordu. Bunu yapmak için komut satırına yazdım

git clone git://github.com/b0tank/bot.git bot

Sonuç olarak projedeki her şey sunucuya yüklendi. Bu aşamadaki hata, esasen mevcut bot klasörünün içinde ikinci bir klasör oluşturmamdı. Dosyanın adresi şuna benziyordu: */bot/bot/index.js

Bu sorunu görmezden gelmeye karar verdim.

Ve kodun ilk satırında istediğimiz telegraf kütüphanesini yüklemek için konsola komutu yazın.

npm install telegraf

8. Bot nasıl başlatılır

Bunu yapmak için, dosyanın bulunduğu klasördeyken (konsol aracılığıyla klasörden klasöre geçmek için format komutunu çalıştırın) cd bot Olmanız gereken yerde olduğunuzdan emin olmak için, orada bulunan tüm dosya ve klasörleri konsolda görüntüleyecek bir komut girebilirsiniz. ls -a

Başlamak için konsola girdim

node index.js

Herhangi bir hata yoksa her şey yolundadır, bot çalışmaktadır. Onu telgrafta ara. Bir hata varsa, bilginizi 1. maddeden uygulayın.

9. Arka planda bir bot nasıl çalıştırılır

Oldukça hızlı bir şekilde botun yalnızca siz konsolda oturduğunuzda çalıştığını fark edeceksiniz. Bu sorunu çözmek için şu komutu kullandım:

screen

Bundan sonra, bazı metinlerin bulunduğu bir ekran görünecektir. Bu her şeyin yolunda olduğu anlamına gelir. Bir bulut sunucusundaki sanal sunucudasınız. Her şeyin nasıl çalıştığını daha iyi anlamak için - makale burada. Sadece klasörünüze gidin ve botu başlatmak için komutu girin

node index.js

10. Bot nasıl çalışır ve işlevselliği nasıl genişletilir?

Örnek botumuz ne yapabilir? Yapabilir

bot.start((ctx) => ctx.reply('Welcome!'))

"Hoş geldiniz!" deyin başlangıç ​​anında (metni değiştirmeyi deneyin)

bot.help((ctx) => ctx.reply('Send me a sticker'))

standart /help komutuna yanıt olarak “Bana bir çıkartma gönder” mesajını gönderin

bot.on('sticker', (ctx) => ctx.reply(''))

bir çıkartmaya yanıt olarak onay gönderme

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

ona "merhaba" yazarsa "Merhaba" diye cevapla
bot.launch()

Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

Eğer koda bakarsanız github, o zaman bu işlevsellikten pek uzaklaşmadığımı hemen anlayacaksınız. Aktif olarak kullanılan şey fonksiyondur ctx.replyWithPhoto Belirli bir metne yanıt olarak belirli bir fotoğraf veya gif göndermenizi sağlar.

Kodun önemli bir kısmı bota erişim izni verdiğim 11-13 yaş arası çocuklar tarafından yazıldı. Kullanıcı durumlarını girdiler. Hangi parçanın onlar tarafından yapıldığını söylemek kolay sanırım.

Örneğin, “Jake” mesajı, Adventure Time çizgi filminden ünlü bir karakterin yer aldığı bir GIF alacak.

Kılavuz: programlamaya yeni başlayanlar için JS'de basit bir Telegram botu nasıl yapılır

Botu daha da geliştirmek için bir klavye bağlamanız gerekir; örneklere bakın, örneğin: bundan dolayı

11. Kodu güncelleme ve botu yeniden başlatma

Kodu yalnızca github'da değil, sunucuda da güncellemeniz gerektiğini unutmayın. Bunu yapmak kolaydır; botu durdurun (ctrl+c tuşlarına basın),

- hedef klasördeyken konsola girin, git pull
— komutuyla botu tekrar başlatıyoruz node index.js

END

Bu dosyada anlatılanların çoğu ileri düzey programcılar için son derece açık olacaktır. Ancak botların dünyasına giden uçurumun üzerinden tek hamlede atlamaya çalıştığımda, böyle bir rehberi gerçekten kaçırdım. Her BT uzmanı için bariz ve basit olan şeyleri gözden kaçırmayan bir rehber.

İlerleyen zamanlarda ReactNative'de aynı tarzda ilk başvurunuzu nasıl yapacağınıza dair bir yazı planlıyorum, abone olun!

Kaynak: habr.com

Yorum ekle