Öncelikle kodlama üzerinde JavaScript programlama dilinin Node.JS programında bilginiz olmalı.
Yeterli bilgiye sahipseniz discordjs-advanced NPM modülünü kurunuz.
Sonrasında modülün kullanımı ile ilgili örneklerin ve bilgilendirmelerin butonlarını sol tarafda görebilirsiniz.
Aynı zamanda "yardım, ön-ek, eval, load, unload ve reload" komutları varsayılan komutlardır sizin eklemenize gerek yoktur botta otomatik olarak bulunacaktır.
const Advanced = require('discordjs-advanced');
const client = new Advanced.Client({
token: "", //Botunuzun Discord Applications sayfasındaki token bilgisi.
prefix: "", //Botunuzun ön-ek'i.
sahip: [""], //"" içine bot sahibinin Discord ID bilgisi. Birden fazla sahip eklenebilir. Örneğin; sahip: ["id1", "id2"], gibi. NOT: Botun profilini oluşturan kişiyi ID'i yazılmasa bile otomatik olarak sahip olarak ekler.
komutDosya: "", //"" kısmına botunuzun komutlarının bulunacağı klasör adını yazınız. Örneğin: komutDosya: "komutlar"
//İsteğe bağlı alan -|
varsayılanKomutlar: []
/*Burada "[]" içine '' kullanarak (örneğin: varsayılanKomutlar: ['yardım']) eklediğiniz varsayılan komutlar devre dışı olacaktır.
Tüm varsayılan komutları devre dışı bırakacaksanız varsayılanKomutlar: 'hepsi' şeklinde yazınız.*/
everyoneKapat: true
/*Burada botun @here ve @everyone etiketi atmasını engelliyoruz. Bunu false yaparsanız veya everyoneKapat kısmı hiç eklemezsiniz bot @here ve @everyone etiketi atabilir.*/
//İsteğe bağlı alan -|
});
client.kategoriYükle([ //Burada kategorileri belirtiyoruz.
['test', 'Test Komutları'] /*Burada 'test' kısmı komutlarınızın olacağı klasörde 'test' adında bir klasör oluşturmanız gerektiğini bildirecektir.
Aynı zamanda buradaki 'test' kısmı komutların kategori bölümüne yazılacak veri yerine geçebilir.
'test' kısmı kategori adı olup, 'Test Komutları' kısmı yardım komutunda görünecdek kısımdır.
(Yardım komutunu eklemenize gerek yoktur. Yardım komutunu "discordjs-advanced" paketi otomatik olarak eklemiştir. Sadece yardım komutu değil, bazı varsayılan komutlar da bulunmaktadır.)
kategoriYükle fonksiyonunda ['test', 'Test Komutları'] bölümünü silip kendinize göre ekleyebilirsiniz.
Örneğin;
client.kategoriYükle([
['moderasyon', 'Moderasyon Komutları'],
['eğlence', 'Eğlence Komutları']
]);*/
]);
client.giris(); //Botun giriş yapmasını sağlıyoruz. () arasına herhangi bir şey yazılmamaktadır.
Değer | Açıklama | Varsayılan | Veri Tipi | Durum |
---|---|---|---|---|
token | Botun Discord Applications sayfasındaki token bilgisi. | Bulunmuyor | String | Zorunlu |
prefix | Botun ön ekini ayarlar. | Bulunmuyor | String | Zorunlu |
komutDosya | Botun komutlarının olacağı klasörü ayarlar. | komutlar | String | Zorunlu |
sahip | Botun sahiplerini ayarlar. Botun profilini oluşturan kişinin eklenmesine gerek yoktur. | Botun profilini oluşturan kişi | Array | İsteğe bağlı |
everyoneKapat | Botun @everyone ve @here etiketi atabilmesini kapatıp açmayı sağlar. | false | Boolean | İsteğe bağlı |
varsayılanKomutlar | Modülün sağladığı varsayılan komutlardan belirtilenleri kapatır. | Bulunmuyor | Array | İsteğe bağlı |
veritabanı > dosya | Belirtilen dosyayı botun veritabanı sistemi dosyası olarak ayarlar. | Bulunmuyor | String | İsteğe bağlı |
Bot ana dosyasına bir şey ekleyerek bunu gerçekleştirebilirsiniz.
const Advanced = require('discordjs-advanced');
const client = new Advanced.Client({
token: "", //Botunuzun Discord Applications sayfasındaki token bilgisi.
prefix: "", //Botunuzun ön-ek'i.
sahip: [""], //"" içine bot sahibinin Discord ID bilgisi. Birden fazla sahip eklenebilir. Örneğin; sahip: ["id1", "id2"], gibi
komutDosya: "" //"" kısmına botunuzun komutlarının bulunacağı klasör adını yazınız. Örneğin: komutDosya: "komutlar"
});
client.eventYükle('klasör adı'); //Burada "klasör adı" yazan yere event dosyalarının olacağı klasörün adını yazınız.
/*Burada eventleri yüklemeyi aktif ettik bu olmadan event kullanabilir miydik?
- Evet.
Şimdi burada hata almamak için botunuzun klasöründe "client.eventYükle('klasör adı')" 'klasör adı' kısmına yazdığınz isimde bir klasör açın.
Diyelimki bir event dosyası açacağız "message.js" (bu dosyaların adları event adları ile uyumlu olmalı).
"message.js" içine gelebilecek örnek bir kodu aşağıdaki ilk başlıkta görebilirsiniz.
*/
client.kategoriYükle([ //Burada kategorileri belirtiyoruz.
['test', 'Test Komutları'] /*Burada 'test' kısmı komutlarınızın olacağı klasörde 'test' adında bir klasör oluşturmanız gerektiğini bildirecektir.
Aynı zamanda buradaki 'test' kısmı komutların kategori bölümüne yazılacak veri yerine geçebilir.
'test' kısmı kategori adı olup, 'Test Komutları' kısmı yardım komutunda görünecdek kısımdır.
(Yardım komutunu eklemenize gerek yoktur. Yardım komutunu "discordjs-advanced" paketi otomatik olarak eklemiştir. Sadece yardım komutu değil, bazı varsayılan komutlar da bulunmaktadır.)
kategoriYükle fonksiyonunda ['test', 'Test Komutları'] bölümünü silip kendinize göre ekleyebilirsiniz.
Örneğin;
client.kategoriYükle([
['moderasyon', 'Moderasyon Komutları'],
['eğlence', 'Eğlence Komutları']
]);*/
]);
client.giris(); //Botun giriş yapmasını sağlıyoruz. () arasına herhangi bir şey yazılmamaktadır.
Örneğin aşağıdaki kod "message.js" içindir.
Kodda gördüğünüz "module.exports = (message)" kısmında "message" yazan yere o eventi tanımladığımız şey gelmektedir.
Yani "module.exports = (message)" kısmında "message" yazan yere "msg" de gelebilir. Burdan ne demek istediğimi anladınız.
Eğer event "ready" eventi ise (yani dosyanız "ready.js" ise) "module.exports = ()" kısmında "()" içine yazdığınız şey botu (client'i) belirtir.
Örneğin bu "guildCreate" eventinde "guild" olarak değişiklik gösterir.
Eventleri iyice öğrenirseniz ayrı dosya halinde yapmakta zorluk çekmezsiniz.
Ayrı dosya halinde yapılabilmesinin sağlanma sebebide 1000 satırlık bir kodu bot ana dosyasında yazarsanız çok yer kaplar ve karışık olur.
Ayrı bir dosya içinde daha rahat yazabilirsiniz.
module.exports = (message) => {
//Burada "client.on("message" => vs.)" şeklinde event açıp kullandığınız kodları kullanırsanız sorunsuz işler.
if (message.content.toLowerCase() === 'ok') {
message.channel.send('Yay!')
} //mesaj büyük harfler ile yazılsa bile küçülterek 'ok' kelimesine eşit değilmi, eşit mi bakıyor ve ona göre tepki veriyor.
if (message.content.toLowerCase() === 'yay') {
message.channel.send('Ok!')
} //mesaj büyük harfler ile yazılsa bile küçülterek 'yay' kelimesine eşit değilmi, eşit mi bakıyor ve ona göre tepki veriyor.
};
const Advanced = require('discordjs-advanced');
const client = new Advanced.Client({
token: "",
prefix: "",
sahip: [""],
komutDosya: "",
//"Botu Çalıştırma" bölümün de botu "discordjs-advanced" ile aktif etmeyi öğrendik. Yani bu yazıdan üstteki bilgileri doldurabilirsiniz.
//Veritabanı sisteminin aktif hale gelmesi için tek yapmanız gereken aşağıdaki veriyi eklemek.
veritabanı: {
dosya: "" /*Burada "" içine veritabanı dosyanızın adını yazacaksınız. Veritabanı olarak JSON kullanılmaktadır. Yani dosyanızın sonu ".json" ile bitmeli.
Örneğin;
veritabanı: {
dosya: "db.json"
}*/
//Tabi "x.json" (Örneğin; "db.json") dosyasını botun klasöründe oluşturacaksınız.
}
});
client.kategoriYükle([
['test', 'Test Komutları']
]);
client.giris();
Fonksiyon | Açıklaması |
---|---|
ayarla | Verilen veriye verilen değeri kaydeder. |
sil | Verilen veriyi ve içindeki tüm değerleri siler. |
veri | Verilen verideki değerleri gösterir. |
varMı | Verilen veri bulunuyor mu, bulunmuyor mu "true - false" biçiminde gösterir. |
ekle | Verilen veri bir "Array" ise verilen değeri ekler. |
çıkar | Verilen veri bir "Array" ise verilen değeri çıkarır. |
arttır | Verilen veri bir "Sayı" ise verilen değer ile bulunan veriyi toplayarak arttırır. |
azalt | Verilen veri bir "Sayı" ise verilen değeri bulunan veriden çıkararak azaltır. |
tümVeriler | Veritabanındaki tüm verileri gösterir. |
tümVerilerSil | Veritabanındaki tüm verileri siler. |
client.veritabanı.ayarla('kullanıcı.isim', 'Örnek isim xxx')
//"kullanıcı" verisindeki "isim" alanına "Örnek isim xxx" değerini kaydeder.
client.veritabanı.veri('kullanıcı.isim')
//"kullanıcı" verisindeki "isim" alanındaki değeri gösterir.
client.veritabanı.varMı('kullanıcı.isim')
//"kullanıcı" verisinde "isim" alanı var mı, yok mu "true - false" biçiminde gösterir.
client.veritabanı.sil('kullanıcı.isim')
//"kullanıcı" verisindeki "isim" alanını siler.
Argüman (args) yoksa
module.exports = {
komut: "", //komut adı
açıklama: "", //komut açıklaması
kategori: "", //ilk örnekteki kategori oluşturma kısmına göre buraya tam olarak ne yazabileceğinizi anlayacaksınız. (komut kategorisi)
alternatifler: [], //komutun asıl adı dışında kullanılabileceği alternatifler. Örneğin; (komut adını x olarak düşünürsek) alternatifler: ["y", "z"], olabilir mesela.
kullanım: "", //komutun doğru kullanımı
yetki: 'MANAGE_MESSAGES', /*Komutu kullanabilecek yetkiyi belirtiyorsunuz.
Tüm yetkileri https://discordapp.com/developers/docs/topics/permissions adresinden öğrenebilir/görebilirsiniz.
Eğer gereken yetki bot sahibi olacaksa "BOT_OWNER" yazınız.
Eğer hiç bir yetki gerekmiyor ise yetki: "" alanını siliniz.
*/
};
module.exports.baslat = (client, message) => {
//Komutun yapacağı işlevlerin geleceği alan.
message.channel.send("Test.")
};
Argüman (args) varsa
module.exports = {
komut: "", //komut adı
açıklama: "", //komut açıklaması
kategori: "", //yukarıdaki kategori oluşturma kısmına göre buraya tam olarak ne yazabileceğinizi anlayacaksınız. (komut kategorisi)
alternatifler: [], //komutun asıl adı dışında kullanılabileceği alternatifler. Örneğin; (komut adını x olarak düşünürsek) alternatifler: ["y", "z"], olabilir mesela.
kullanım: "", //komutun doğru kullanımı
yetki: 'MANAGE_MESSAGES', /*Komutu kullanabilecek yetkiyi belirtiyorsunuz.
Tüm yetkileri https://discordapp.com/developers/docs/topics/permissions adresinden öğrenebilir/görebilirsiniz.
Eğer gereken yetki bot sahibi olacaksa "BOT_OWNER" yazınız.
Eğer hiç bir yetki gerekmiyor ise yetki: "" alanını siliniz.
*/
args: [
{
anahtar: 'x', //module.exports.baslat kısmında bu argsın cevabı "args.x" olarak çekilecektir. Siz bu "x"'i kendinize göre değiştirip ayarlarsınız. Ne olduğunu anladınız zaten.
soru: '', //Argüman sorusu. Örneğin; "Bir yazı yazınız."
tip: 'yazi' /*Argüman tipi.
Buraya gelebilecek tipler:
yazi = Normal herhangi bir yazı.
sayi = Normal herhangi bir sayı.
kullanici = Bulunulan sunucudaki kullanıcıları algılar. Kullanıcı adı yazarak veya kullanıcıyı etiketleyerek çalışır.
kanal = Bulunulan sunucudaki kanalları algılar. Kanal adı yazarak veya kanalı etiketleyerek çalışır.
rol = Bulunulan sunucudaki rolleri algılar. Rol adı yazarak veya rolü etiketleyerek çalışır.
*/
}
]
};
module.exports.baslat = (client, message, args) => {
//Komutun yapacağı işlevlerin geleceği alan.
message.channel.send(args.x) //anahtar kısmı "x" olan Argümanın cevabını alıp bulunulan kanala gönderiyoruz.
};