Merhabalar, Technopat için rehber yazmayalı epey uzun oldu.
Bu anlatacağım metod tüm class'larda global olarak çalışabilir. Yani sadece Embed'lere özel bir şey değil. Tüm Discord.js versiyonlarında da çalışır.
Yapacağınız tek şey Client tanımlanan dosyaya aşağıda vereceğim kodu uyarlamak.
Normal şartlarda kodun bu kadar kısa olması lazım fakat
Benim uyguladığım çözüm ise
Kodumuz:
Kod bu kadar basit. Bu kodla sadece
Bu sayede artık diğer komut dosyalarınızda da, hiç
Ayrıca bu class türetildiği için, içine istediğiniz metodları da ekleyebilirsiniz. Üstteki kodda o da var. Bunlar siz istediğinizde çalışan,
Boş yere class açmaya gerek kalmıyor. Kodu programın göreceği bir yere yazarsanız, global çalışır.
Ben biraz fazla kaptırdım, resimi ve isimi botun adından çekmesini istedim. Bunu Client aktif olunca
ÖZEL NOT: Bu düzenlemeyi discord.js'nin dosyaları yerine buraya yapmamızın sebebi, node_modules klasörü hostinglerde sabit kalamayabiliyor. en garanti yol bu.
Bu anlatacağım metod tüm class'larda global olarak çalışabilir. Yani sadece Embed'lere özel bir şey değil. Tüm Discord.js versiyonlarında da çalışır.
Yapacağınız tek şey Client tanımlanan dosyaya aşağıda vereceğim kodu uyarlamak.
Normal şartlarda kodun bu kadar kısa olması lazım fakat
MessageEmbed
rengi inşaa sırasında null
olarak atıyor.Benim uyguladığım çözüm ise
MessageEmbed
'den türemiş yeni bir MessageEmbed
class'ı açıp, Discord.js modülündeki Discord.MessageEmbed
kısmını yenisiyle değiştirmek oldu.Kodumuz:
JavaScript:
/* ...diğer kodlarınız */
const Discord = require("discord.js");
class MessageEmbed extends Discord.MessageEmbed {
constructor(opts) {
super(opts);
/* RENGİ AYARLAYAN YER */
this.setColor("RANDOM"); //içine istediğin rengi yazın.
}
//aşağıda anlattım, bu ise isteğe bağlı
adKoy(){
// istediginiz gibi yazın:
this.setAuthor({ name: "Botun adı" })
// mesela bu author bilgisini bot olarak doldurmak.
return this;//return this; olmazsa olmaz, embed bütünlüğü bozulacaktır
}
}
// Burası bizim MessageEmbed'imizin Discord.js kütüphanesindeki MessageEmbed'in yerini almasını sağlıyor.
Discord.MessageEmbed = MessageEmbed;
Kod bu kadar basit. Bu kodla sadece
color
property'si değil, bir çok şeyi global olarak tanımlayabilirsiniz.Bu sayede artık diğer komut dosyalarınızda da, hiç
.setColor()
kullanmadan sabit renkli embedlere sahip olabileceksiniz. Eğer kullanırsanız da zaten embedin rengi istediğiniz hale geçer. Gerçek Embed'in metodlarına hiç zarar vermedik neticede, sadece kendimizi ondan türettik.Ayrıca bu class türetildiği için, içine istediğiniz metodları da ekleyebilirsiniz. Üstteki kodda o da var. Bunlar siz istediğinizde çalışan,
.setTitle()
gibi metodlar. Ama sadece metod ekliyorsanız, bu kodu kullanmanızı öneririm:Boş yere class açmaya gerek kalmıyor. Kodu programın göreceği bir yere yazarsanız, global çalışır.
Ben biraz fazla kaptırdım, resimi ve isimi botun adından çekmesini istedim. Bunu Client aktif olunca
client.user.imageURL()
'den aldım. Bu tip şeyler sizin hayal gücünüze kalmış şeyler.Aslında can sıkıntısından Client'i de extendledim. Bunu yapan çok kişi var zaten. Ama bunu Discord.Client'in yerine koymak bence iyi olmuyor, tek seferlik kullanıma sahip ne de olsa Client.
ÖZEL NOT: Bu düzenlemeyi discord.js'nin dosyaları yerine buraya yapmamızın sebebi, node_modules klasörü hostinglerde sabit kalamayabiliyor. en garanti yol bu.
Son düzenleme: