Discord.js (v12) ile Discord Botu Programlama - 1 | Node.js Kurulumu, Kod Editörü Seçimi, Bot Oluşturma, JavaScript Temelleri ve İlk Kodumuz

Enisinhere

Sudan Çıkmış
Mesajlar
3
En iyi cevaplar
0
Beğeniler
1
Puanları
20
Hoş Geldin

Hoş geldin! Bu konuda güncel bir şekilde (v12 yani bu konu yazıldığındaki son sürümü kullanacağız) Discord.js'e giriş yapacağız. Ama başlamadan önce birkaç şeyden bahsetmek istiyorum.

Discord botunu neden yapmak istediğini biliyor musun? Bu bir hobi mi? Öyleyse harika. Botunun büyük bir bot olmasını istiyorsan bu serinin sana fazla şey öğretmeyeceğini belirteyim ama büyük bir bot yapmak istiyorsan bile bu konu Discord.js'e girişinde yardımcı olacaktır. Bundan sonra da konulara devam etmeyi düşünüyorum ama sana tavsiyem biraz gelişmeye başladıktan sonra Discord.js Guide (An Idiot's Guide da iyidir. Şu anda v11 rehberi stabil ama Discord.js v12'ye güncellenmeye başlanmış.) gibi İngilizce kaynaklardan yararlanman.

Ayrıca botun için güvenlik önlemlerini alman ve iyi bir şekilde hostlaman gerekiyor. Botunu GitHub gibi kaynak kodunu herkesin görebileceği bir yere yükleyeceksen tokenini kaldırmayı unutma. Ayrıca botunu Glitch gibi bir yerden hostlamanı da önermiyorum çünkü uptime konusunda sıkıntı olacak. Geliştirme aşamasındayken kendi bilgisayarını kullanabilir ve botun yeterince geliştiği zaman bir VDS kiralayabilirsin. 1 GB ram yeterli olacaktır. Glitch'te hostlayacak olursan da projeni private yapmayı ve proje adını gizli tutmayı unutma. Proje adının Glitch'in oluşturduğu ad olarak kalmasını (veya tamamen random yapmanı) öneriyorum çünkü proje adını birisi öğrenirse sorun olabilir.
Glitch hakkında düzenleme: Glitch güvenliğini geliştirmiş, yani proje adını birisi bulsa bile proje private ise projeyi göremez. Ama uptime hala berbat. Hala Glitch önermiyorum.
Hadi Başlayalım

Sanırım artık başlayabiliriz. Öncelikle bilgisayarına Node.js kurman gerekiyor çünkü Discord.js bir Node modülü. Node.js'i buraya tıklayarak indirebilirsin. Kurulum kısmında sorun yaşamayacağını düşünüyorum. Ayrıca kurulumda gereksiz araçları kurmana gerek yok. Yani install unnecessary tools kutucuğu seçili olmayabilir.

Kod Editörü Seçimi

Şimdi de kod editörünü seçelim. Benim tavsiye ettiğim Visual Studio Code. Buraya tıklayarak VS Code anasayfasına gidebilirsin. Bu arada VS Code kullanmak zorunda değilsin. Alışmış olduğun bir kod editörünü (bunun için Notepad++ tavsiye etmiyorum) de kullanabilirsin. Eğer alışmış olduğun bir kod editörü yoksa VS Code alternatifi olarak Atom veya Sublime Text de kullanılabilir ama tavsiyem VS Code. Eğer VS Code kullanacak olursan One Dark Pro temasını da denemeni öneriyorum.

Bot Oluşturma

Kod editörümüz de hazırsa botumuzu oluşturabiliriz. Öncelikle Discord Developer Portal'a gitmen ve giriş yapman gerekiyor. Buraya tıklayarak gidebilirsin. Giriş yaptıktan sonra karşına çıkan ekranda New Application butonuna bas, bot ismini gir ve yeni bir uygulama oluştur. Bu uygulama senin botun olacak. Uygulamanı oluşturunca karşına böyle bir ekran çıkacak:
Ekli dosyayı görüntüle 171103
Buradan uygulamana bir ikon ekleyebilirsin ama bu botumuzun avatarı değil ve daha bir botumuz bile yok.Bot oluşturmak için bot sekmesine gelmeli ve Create Bot butonuna basmalısın.
Botunu oluşturdun mu? Tebrikler! Artık botuna avatar ekleyebilirsin. Şimdi botunu Discord sunucuna davet etmek için link oluşturalım. OAuth2 sekmesine gel ve OAuth2 URL Generator ile bot davet linki oluştur.
Ekli dosyayı görüntüle 171104
Şu şekilde olmalı. Ben botuma direkt admin yetkisi verdim ama botun yetkilerini kendi sunucunda rol ile ayarlamak istiyorsan veya botunun admin olmasına gerek yoksa hiçbir yetki vermeyebilirsin.

Programlamaya Başlayalım
JavaScript Temelleri

Botumuzu oluşturduk, sunucumuza davet ettik. Sırada ne var? Botumuzu programlamaya başlamak!
Sormak istediğim bir şey var. JavaScript bilgin var mı? Discord.js programlamaya başlamadan önce JavaScript temellerini ve kurallarını bilmen gerekiyor. Bilmeden başlarsan koddan pek bir şey anlamayabilirsin. Hayır endişelenme, çok zor değil. If, else if, else, değişkenler ve birkaç kuralı öğrensen yetecek.
Bu kaynaktan yararlandığına göre Türkçe kaynağa ihtiyacın var. Ben de sana JavaScript temellerini öğrenmen için YouTube'dan bir kaynak vereyim.


Yazılım Bilimi kanalının bu videosu sanırım işine yarar. Anlatımı nasıl gelecek bilmiyorum ama JavaScript'e ilk başladığımda benim işime yaramıştı. Bu arada videonun sonundaki formlar kısmını izlemene gerek yok ama öğrenmek istiyorsan izleyebilirsin tabii ki. (Her ihtimale karşı şunu da belirteyim ki reklam amaçlı yapmıyorum. Benim JavaScript'e başlarken işime yarayan bir videoydu. Sonrasında pek video ve Türkçe kaynak kullanmadım ama Türkçe kaynak arayanların işine yaraması umuduyla paylaşıyorum.)

Discord.js Kurulumu ve Başlangıç

JavaScript temellerini öğrendin mi? Umarım öğrenmişsindir veya zaten biliyorsundur çünkü bu seni çok rahatlatacak. Rahatça Discord.js programlayabileceksin.
Hadi şimdi botumuzu programlamaya başlamak için gerekli kurulumu yapalım ve basit bir başlangıç yapalım.
Öncelikle botun için bir klasör oluştur. Ben masaüstüme guidebot adında bir klasör oluşturdum ve o botumun klasörü olacak. Şimdi o klasörde bir komut istemi açman gerekiyor.
Windows kullanıyorsan CMD, PowerShell, Git CMD, Git Bash, Node.js Command Prompt veya başka bir terminal kullanabilirsin. Sana kolaylık olması için klasör içine shift tuşuna basarken klasöre sağ tıklayıp PowerShell'i o klasörde açmanı söylerdim ama CMD kullanalım. CMD'yi aç (Arama çubuğuna CMD yaz veya Windows tuşu + R>CMD) ve `cd "botklasörü"` komutuyla komut isteminin çalışma klasörünü bot klasörü olarak ayarla. Örneğin benim bot klasörüm "C:\Users\PC\Desktop\guidebot", yani CMD'ye girmem gereken `cd "C:\Users\PC\Desktop\guidebot"` (Klasörün konumunu panoya kopyalamak için klasöre shift tuşuna basılır tutarken sağ tıkla ve yol olarak kopyala. Komut istemine CTRL + V kısayoluyla yapıştır.). Bu arada ` işaretlerini kodu belirtmek için koyuyorum. Yani komutları kullanırken o işareti komutun başına ve sonuna koymamalısın.

Çok mu kafa karıştırıcı? Aslında basit bir şey ve anlarsan senin için daha iyi olur ama uğraşmak istemiyorsan sadece klasörün içinde boş bir yere shift tuşuna basılı tutarken sağ tıkla ve PowerShell (Seçenek olarak CMD de olabilir) penceresini burada aç. Bilgisayarında Git kuruluysa onu da kullanabilirsin. Biraz bilgin varsa zaten bu senin için zor olmamalı ama bilmeyenler de olacağı için uzun ve açıklayıcı bir şekilde anlatmaya çalıştım.

Linux kullanıyorsan da terminali o klasörde açmak senin için çok zor olmamalı, sonuçta sen Linux kullanıyorsun :1:.

Şimdi `npm init -y` komutunu kullan ve botun için gerekli olan packages.json dosyası oluşsun, -y ile belirttiğin için de senin için otomatik doldursun.

Not: ` işaretlerini kodu belirtmek için kullanıyorum. Komut kullanırken başına ve sonuna ` koymamalısın.

Tebrikler! Botunun klasörü hazır. Şimdi Discord.js kuralım. `npm i discord.js@latest` komutunu kullan ve Discord.js'in son sürümü kurulsun.
Ekli dosyayı görüntüle 171105
Şöyle bir çıktı vermesi gerek. İki tane de uyarı verdi çünkü npm init -y yaparak package.json dosyasını otomatik doldurttuk, açıklama ve repo kısımlarını doldurmadı. Bunlara ihtiyacın yok ama istersen package.json dosyasını açıp açıklama ekleyebilirsin.

Discord.js Kurulumuyla İlgili Not:
Ekli dosyayı görüntüle 171108
(Görsel Discord.js Guide'dan alındı)
Şöyle bir çıktı aldıysan endişelenme, orada belirtilen modüller isteğe bağlı ve şu anda hiçbirine ihtiyacımız yok.

İlk Kodunu Yazmaya Hazırsın!
Artık ana bot dosyanı oluşturabilir ve ilk kodunu yazabilirsin. Bu konuda tek dosya oluşturacağız, bir config bile kullanmayacağız. Sonraki konumda ise direkt Discord.js üzerinden gideceğimiz için command handlerlara kadar gideriz.

Bot klasörüne gel ve index.js isminde yeni bir dosya oluştur. Dosya adının index.js olması öneriliyor ama index yerine istediğini yazabilirsin, önemli olan .js dosyası olması. Bu dosya botun ana dosyası olacak. Oluşturduysan kod editörüne geçebiliriz.

Klasörü kod editöründe aç. Bunu yapmak kolay olmalı. Visual Studio Code kullanıyorsan VS Code içerisinde open foldera tıkla ve bot klasörünü seç. Diğer kod editörlerinde de aynı olmalı.

Kod editöründe index.js dosyanı aç ve programlamaya başlayalım.
En üst satıra const Discord = require('discord.js'); kodunu gireceğiz. Bu kod Discord.js'i import edecek.
Bir alt satıra const client = new Discord.Client(); kodunu yazacağız. Bu kod Discord client'i oluşturacak.
En alt satırımızda ise client.login('süpergizlibottokenin'); bulunacak ve bota giriş yapacak. süpergizlibottokenin kısmına konunun başında girdiğimiz Discord Developer Portal'dan aldığın bot tokenini yapıştır. Dikkat et, bu tokeni bilen herkes botuna girebilir. Yani tokenini gizli tut.

Temel şeyleri hallettik. Şimdi de botun hazır olduğunda konsolumuza "Bot Hazır!" yazdırmasını ve Discord aktivitesini ayarlamasını sağlayalım.
JavaScript:
client.once('ready', () => {
    console.log('Bot hazır!');
    client.user.setActivity("Bu bot da Discord'a katıldı!", {
    type: "PLAYING"
  });
})
Bu kod ile, bot hazır olduğunda konsola "Bot hazır!" yazacak ve Discord'da oyun aktivitesini "Bu bot da Discord'a katıldı" yapacak. `type: ` kısmına playing yerine listening, watching veya custom_status de yazabilirsin.

Son olarak kodumuz şöyle görünüyor olmalı:
JavaScript:
const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
    console.log('Bot hazır!');
    client.user.setActivity("Bu bot da Discord'a katıldı!", {
    type: "PLAYING"
  });
});

client.login('süpergizlibottokenin')

Botunu çalıştırmak için bot klasöründeki komut isteminde `node index` (dosya adı index değilse `node {dosya adı}`) komutunu kullan.

Botun Hazır! Artık Mesajları Dinlemesini ve Yanıt Vermesini Sağlamaya Ne Dersin?

Artık botun hazır. Bu konuda son olarak da mesajı dinlemeyi ve yanıt vermesini göstereyim ve başlangıcın tamamlanmış olsun.
JavaScript:
client.on("message", message => {
    if (message.content.startsWith("ping")) {
        message.channel.send("pong");
    };
});
Bu kod mesaj geldiğinde çalışacak, eğer mesaj "ping" kelimesi ile başlıyorsa "pong" mesajı gönderecek. Artık botun mesajları nasıl dinleyeceğini ve yanıt vereceğini biliyor olmalısın.

Kapanış
Bu konuda Discord.js'e giriş yapmanda yardımcı olmaya çalıştım. Yeterince açıklayıcı ve yararlı bir konu oldu mu, anlatımım iyi mi emin değilim. Yorumlarını yazabilirsin.

Çok yardımın dokundu teşekkür ederim.:1::1::1:
 

Üst