Rehber Discord.js için global embed renkleri, ve ekstra metodlar

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 MessageEmbed rengi inşaa sırasında null olarak atıyor.
1658833703514.png


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:
1658835119225.png

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.



1658834925145.png


Ö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:

Geri
Yukarı