discord-yand

Powerfull discord.js CommandHandler

Usage no npm install needed!

<script type="module">
  import discordYand from 'https://cdn.skypack.dev/discord-yand';
</script>

README

Image

{ -YAND- }

  • Belirtilen komut ve event dosyalarının hepsini okur.
  • Komut ekleme, çıkarma, yeniden yükleme özellikleri.

{ NEWS }

  • Sunucu özel prefix ayarlama özelliği eklendi.

Example

this.commandHandler = new CommandHandler(this, {
        // directory: Komutların bulunduğu klasör.
        directory: "./commands",
        // prefix: Botun prefixleri.
        prefix: (message) => {
          const customPrefix = db.fetch(`prefix_${message.guild.id}`);
          if(customPrefix) return customPrefix
          else return ["g9","y!"];
        },
        // allCommandCooldown: Bütün komutların bekleme süresidir.
        // Saniye yada milisaniye cinsinden belirtilir.
        // Eğer komuta özel cooldown varsa komutta importantCooldown:true olmak zorundadır. eğer olmaz ise burdaki cooldown geçerli olacaktır.
        allCommandCooldown: 5000,
        // ignored: Bütün komutlarda geçerlidir.
        ignored: {
          // İdsi girilen kanallarda komut kullanılamaz.
          channels: ["kanal id", "kanal id"],
          // İdsi girilen rollere sahip üyeler kullanamaz.
          roles: ["rol id", "rol id"],
          // İdsi girilen sunucularda kullanılamaz.
          guilds: ["sunucu id", "sunucu id"],
          // İdsi girilen kullanıcılar kullanamaz.
          users: ["kullanıcı id", "kullanıcı id"]
        },
        // permissions: Bu yetkilere sahip değil ise çalışmayacak.
        // Bütün komutlarda geçerlidir.
        permissions: ["MANAGE_CHANNELS", "MANAGE_EMOJIS"],
        // Botu etiketleyince prefixleri gösterir.
        tagPrefix:true
      });

YandCommands

  • Komut takma adları. [Aliases]
  • Komutlarda bekleme süresi. [cooldown]
  • Komutlara özel yetki kontrol sistemi. [ChechPermissions]
  • Çoklu prefix. (Komutlara özel prefixlerde kullanabilirsiniz.) [MultiplePrefix]
  • Gelişmiş argüman sistemi.
  • Komutu kanallara, rollere, kullanıcılara, sunuculara yasaklı hale getirme.
  • Komutlar sahip(lere) özel.(isteğe bağlı.)
  • Komut sunucu özel.(DM'de kullanılamaz, isteğe bağlı.)
  • Komuttan CommandHandler classının metodları kullanılabilir.

Listener

  • Listener Classından komut eventlerine ulaşabilinir. (Ulaşabilmek için ListenerHandler.setHandler(CommandHandler) metodu kullanılmalı.)

Yüklemek için

  • NodeJs 12+ ve discord.js v12 gerekli.
npm install discord-yand
npm i discord.js

Links

WebSite(gelecek)

Repository

wioenena.q

maven

examples

Client oluşturma örneği

const { YandClient, CommandHandler, ListenerHandler } = require("discord-yand")


class Client extends YandClient {
    constructor() {
      // owners: botun sahiplerinin idlerinin bulunduğu bölüm.
      super({
        owners: ["kullanıcı id", "kullanıcı id"]
      });

      this.listenerHandler = new ListenerHandler(this, {
        // directory: Eventlerin bulunduğu klasör.
        directory: "./listener"
      });

      this.commandHandler = new CommandHandler(this, {
        // directory: Komutların bulunduğu klasör.
        directory: "./commands",
        // prefix: Botun prefixleri.
        prefix: ["!", "?"],
        // allCommandCooldown: Bütün komutların bekleme süresidir.
        // Saniye yada milisaniye cinsinden belirtilir.
        // Eğer komuta özel cooldown varsa komutta importantCooldown:true olmak zorundadır. eğer olmaz ise burdaki cooldown geçerli olacaktır.
        allCommandCooldown: 5000,
        // ignored: Bütün komutlarda geçerlidir.
        ignored: {
          // İdsi girilen kanallarda komut kullanılamaz.
          channels: ["kanal id", "kanal id"],
          // İdsi girilen rollere sahip üyeler kullanamaz.
          roles: ["rol id", "rol id"],
          // İdsi girilen sunucularda kullanılamaz.
          guilds: ["sunucu id", "sunucu id"],
          // İdsi girilen kullanıcılar kullanamaz.
          users: ["kullanıcı id", "kullanıcı id"]
        },
        // permissions: Bu yetkilere sahip değil ise çalışmayacak.
        // Bütün komutlarda geçerlidir.
        permissions: ["MANAGE_CHANNELS", "MANAGE_EMOJIS"],
        // Botu etiketleyince prefixleri gösterir.
        tagPrefix:true
      });
      // CommandHandler eventlerine erişmemizi sağlar.
      this.listenerHandler.setHandler(this.commandHandler);
      // Bütün eventleri yükler.
      // Eğer CommandHandler eventlerine erişmek istiyorsanız this.listenerHandler.setHandler(this.commandHandler); metodu kullanılmalıdır.
      this.listenerHandler.loadAllListener();
      // YandClient'in sunduğu eventleri kullanırsınız.
      this.loadCustomEvent();
      // Bütün komutları yükler
      this.commandHandler.loadAllCommands();
    }
}



const client = new Client();

client.login("tokeniniz");

Komut oluşturma örneği

const { Command } = require("discord-yand");








class RolRengiDegiştirmeKomutu extends Command {
    constructor() {
        // super'de ilk parametre komut ismidir, 2. parametre olarak ayarları alır.
        super("rol-rengi-degiştir", {
          cooldown: 50000, // Komuta bekleme süresi koyar. (Saniye yada Milisaniye cinsinden)
          importantCooldown: true, // CommandHandler'de bütün komutlara cooldown uygulanmışsa ve bu komutta bu özellik true ise bu komutun cooldownu işler.
          // args kullanıcıdan  alınıcak veriler içindir.
          // args tipleri "user" | "member" | "channel" | "role" | "yazı"'dır.
          // anahtar veriyi çekecegimiz ana bölümdür.
          // soru kişiye sorulacak sorudur
          // def true ve kullanıcı cevap vermediyse varsayılan bir değer döner
          // varsayılan değer yazı ve rol tiplerı dışında hepsinde çalışır.
          args: [
            {
              tip: "role",
              anahtar: "rengiDegişicekRol",
              soru: "Lütfen rengini degiştireceğim rolü belirt.",
              def:true
            },
            {
              tip: "yazı",
              anahtar: "rolRengi",
              soru: "Lütfen rengi belirt."
            }
          ],
          // prefix özelligi komuta özel prefixtir. bunlarla kullanılsa bile çalışır.
          prefix: ["g9?", "g9!"],
          // Komut ismi ile değil de bunlarla başlarsa yine çalışır.
          aliases: ["rolRengiDegiştir", "rolrngidegistir"],
          // Eğer true ise komutu kullanan botun sahiplerine dahil degil ise çalışmayacaktır.
          ownerOnly: false,
          // Sunucu içinde kullanılacaksa true olmalı.
          guildOnly: true,
          // Komutun kategorisini belirtiyoruz.
          category: "Rol-Komutları",
          // Komutun açıklaması.
          description: "Bu komut ile rol rengi degiştirirsin.",
          ignored: {
            // Botlar kullanamaz komutu. eğer belirtilmezse yine kullanamazlar.
            bots: true,
            // İdsi girilen kanallarda komut kullanılamaz.
            channels: ["kanal id", "kanal id"],
            // İdsi girilen rollere sahip üyeler kullanamaz.
            roles: ["rol id", "rol id"],
            // İdsi girilen sunucularda kullanılamaz.
            guilds: ["sunucu id", "sunucu id"],
            // İdsi girilen kullanıcılar kullanamaz.
            users: ["kullanıcı id", "kullanıcı id"]
            },
          // Bu yetkilere sahip değil ise çalışmayacak.
          permissions:["ADMINISTRATOR", "MANAGE_CHANNELS"]
        });
    }

    exec(message, args) {
        // Eğer kullanıcı hiçbir cevap vermedi ise(args sisteminde) return ediyoruz.
        if (!args) return message.channel.send("Hatalı kullanım.");
        // Dönen değer discord.js Role classını döner özelliklerine bakmak için discord.js dökümanlarına bakınız.
        const role = args.get("rengiDegişicekRol");
        // Dönen değer string array'dır.(tipi yazı olan bütün args değerlerinde dönen tip string array'dır)
        const renk = args.get("rolRengi");
        role.setColor(renk.join(" "));
        const embed = new this.MessageEmbed()
        .setDescription("İşlem başarılı.");
        this.channel.send(embed); 
    }
}


module.exports = RolRengiDegiştirmeKomutu;

Event dinleme örneği

const { Listener } = require("discord-yand");








class ReadyEvent extends Listener {
    constructor() {
        super({
            // event: eventin ismi.
            event: "ready",
            // emitter: Bot ise Normal discord.js eventleri tetiklenince çalışır.
            // YandClient ise CommandHandler eventlerine ulaşılır.
            emitter: "Bot"
        });
    }

    exec() {
        console.log(`${this.client.user.username} Hazır`);
    }
}
module.exports = ReadyEvent;