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:
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
2. Bir bot nasıl kaydedilir?
Bu başlangıçta bana çok yardımcı oldu
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
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
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
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
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
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 -
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()
Eğer koda bakarsanız 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.
Botu daha da geliştirmek için bir klavye bağlamanız gerekir; örneklere bakın, örneğin:
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