Sol Reklam

Discord.js - Komutları modüllere ayırma.

EchTR

echtr of legend

Discord:

EchTR#1848

Katılım
2 Aralık 2016
Mesajlar
845
Elmaslar
629
Puanlar
8.060
Yer
İzmir
Merhabalar, sizden küçük bir yardım isteyeceğim discord.js modülüne başladım ancak yazdığım kodlar çok fazla yer kaplıyor ve görüntü kirliliğine yol açıyor bunu düzeltmem için komutları modüllere ayırmam gerekiyor. Nasıl modüllere ayıracağım ? Yardım ederseniz sevinirim :) .

İçerik:
JavaScript:
const Discord = require('discord.js');
const client = new Discord.Client();
const ayarlar = require('./ayarlar.json');
var prefix = ayarlar.prefix;
var token = ayarlar.token;
var yasakliKelimeler = ["burada küfürler var"];
client.on('ready', () => {
  console.log(`[bot] ${client.user.tag} aktifleştirildi!`);
});

client.on('message', msg => {
        for (var i = 0; i < yasakliKelimeler.length; i++) {
              if (msg.content.includes(yasakliKelimeler[i])) {
                  if(msg.content.includes("tamam")){

                  } else {
                        console.log("[yasaklı kelime logu ] " + "Şahıs: " + msg.author.username  + " İçerik: " + msg.content + "." );
                    msg.delete();
                  msg.reply("küfür etme!");
                }
              }
        }
  });

client.login(token);
 

samoi

one is glad to be of service
Emekli

Discord:

mudlusamoi#5646

Katılım
28 Ekim 2014
Mesajlar
3.549
Elmaslar
1.382
Puanlar
19.760
Yaş
24
Yer
Bursa
Minecraft
smt287


Yeni başladıysan bu seriyi takip et istediğini elde edersin.
Bölümleri zaten kısa :)
 
S

Silinen üye 79251

Ziyaretçi

Bugüne dek bu konu hakkında en ufak bilgim yoktu ki böyle bir konu hazırlamışsınız. Eh haliyle az çok bilgi sahibi oldum. Sağ olun :)
 

Aprox

Tartışmadan önce bana IQ'nu belirt.

Discord:

aproxthethat#1693

Katılım
18 Ağustos 2017
Mesajlar
294
Elmaslar
86
Puanlar
9.220
- komutlar diye bir klasör aç ya da her neyse...
- <komut>.js leri oraya at.
- bot.js, server.js ne kullanıyorsan oraya bu kodları ekle.
Kod:
client.commands = new Discord.Collection();
client.aliases = new Discord.Collection();
fs.readdir('./komutlar/', (err, files) => {
  if (err) console.error(err);
  log(`${files.length} komut yüklenecek.`);
  files.forEach(f => {
    let props = require(`./komutlar/${f}`);
    log(`Yüklenen komut: ${props.help.name}.`);
    client.commands.set(props.help.name, props);
    props.conf.aliases.forEach(alias => {
      client.aliases.set(alias, props.help.name);
    });
  });
});

client.reload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./komutlar/${command}`)];
      let cmd = require(`./komutlar/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};

client.load = command => {
  return new Promise((resolve, reject) => {
    try {
      let cmd = require(`./komutlar/${command}`);
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};

client.unload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./komutlar/${command}`)];
      let cmd = require(`./komutlar/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};
 

Aronshire

Das Leben ist zu kurz, du solltest es genießen

Discord:

Aronshire#8111

Katılım
22 Mayıs 2019
Mesajlar
729
Elmaslar
630
Puanlar
3.290
Yer
Kocaeli
Minecraft
Aronshire
- komutlar diye bir klasör aç ya da her neyse...
- <komut>.js leri oraya at.
- bot.js, server.js ne kullanıyorsan oraya bu kodları ekle.
Kod:
client.commands = new Discord.Collection();
client.aliases = new Discord.Collection();
fs.readdir('./komutlar/', (err, files) => {
  if (err) console.error(err);
  log(`${files.length} komut yüklenecek.`);
  files.forEach(f => {
    let props = require(`./komutlar/${f}`);
    log(`Yüklenen komut: ${props.help.name}.`);
    client.commands.set(props.help.name, props);
    props.conf.aliases.forEach(alias => {
      client.aliases.set(alias, props.help.name);
    });
  });
});

client.reload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./komutlar/${command}`)];
      let cmd = require(`./komutlar/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};

client.load = command => {
  return new Promise((resolve, reject) => {
    try {
      let cmd = require(`./komutlar/${command}`);
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};

client.unload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./komutlar/${command}`)];
      let cmd = require(`./komutlar/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};
Aynı bu arkadaşın dediği gibi yaparsan olur.
 

EchTR

echtr of legend

Discord:

EchTR#1848

Katılım
2 Aralık 2016
Mesajlar
845
Elmaslar
629
Puanlar
8.060
Yer
İzmir
- komutlar diye bir klasör aç ya da her neyse...
- <komut>.js leri oraya at.
- bot.js, server.js ne kullanıyorsan oraya bu kodları ekle.
Kod:
client.commands = new Discord.Collection();
client.aliases = new Discord.Collection();
fs.readdir('./komutlar/', (err, files) => {
  if (err) console.error(err);
  log(`${files.length} komut yüklenecek.`);
  files.forEach(f => {
    let props = require(`./komutlar/${f}`);
    log(`Yüklenen komut: ${props.help.name}.`);
    client.commands.set(props.help.name, props);
    props.conf.aliases.forEach(alias => {
      client.aliases.set(alias, props.help.name);
    });
  });
});

client.reload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./komutlar/${command}`)];
      let cmd = require(`./komutlar/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};

client.load = command => {
  return new Promise((resolve, reject) => {
    try {
      let cmd = require(`./komutlar/${command}`);
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};

client.unload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./komutlar/${command}`)];
      let cmd = require(`./komutlar/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      resolve();
    } catch (e){
      reject(e);
    }
  });
};
fs modülünün yararlarından birini daha görmüş oldum. teşekkürler bu arada :)
peki nasıl kullanabilirim ? örneğin yenidenbaslat.js adında bir dosya oluşturdum komut yazınca bu dosyayı nasıl çağırabilirim ?
 

samoi

one is glad to be of service
Emekli

Discord:

mudlusamoi#5646

Katılım
28 Ekim 2014
Mesajlar
3.549
Elmaslar
1.382
Puanlar
19.760
Yaş
24
Yer
Bursa
Minecraft
smt287
fs modülünün yararlarından birini daha görmüş oldum. teşekkürler bu arada :)
peki nasıl kullanabilirim ? örneğin yenidenbaslat.js adında bir dosya oluşturdum komut yazınca bu dosyayı nasıl çağırabilirim ?
Attığım video serisini izleseydiniz şimdiye öğrenmiştiniz :)
 

EchTR

echtr of legend

Discord:

EchTR#1848

Katılım
2 Aralık 2016
Mesajlar
845
Elmaslar
629
Puanlar
8.060
Yer
İzmir

webkit

Koydum Çalışma Masasını
Katılım
27 Kasım 2018
Mesajlar
65
Elmaslar
44
Puanlar
2.060
Konuyu yeni görüyorum, sana yardımcı olmak isterim.
Öncelikle tek sayfaya fazla kod yazmak, okumayı zorlaştırır, gözü yorar ve tek sayfaya 1000 satır kod yazmak hamallık olur. Bu yüzden bu kodları sayfalara bölerek parçalıyoruz. Her sayfaya bir ad ve görev veriyoruz. Bu sadece nodejs'de değil her yazılım dilinde bu şekilde ilerler zaten. NodeJS'de sayfaları nasıl parçalayacaksın örnek vererek anlatmak istiyorum bunun 2 yöntemi var:

1. Yöntem
JavaScript:
// Burası index.js dosyamız olsun:
const discord = require("discord");

// global. değişkeni her sayfada çalışan global bir değişkendir bunun içerisine discord değişkenini ekliyoruz:
global.discord = discord;

// kütüphanem.js dosyamızı çağırıyoruz:
require("./kütüphanem");

/***********/

// Burasıda kütüphanem.js dosyamız olsun:
console.log(global.discord);
// kütüphanem.js dosyamızdaki global.discord değişkeninden istediğimiz zaman discord kütüphanesine ulaşabilriz.

2. Yöntem
JavaScript:
// Burası index.js dosyamız olsun:
const discord = require("discord");

// kütüphanem.js dosyamızı çağırıyoruz:
require("./kütüphanem")(discord);
// kütüphanem.js dosyamızı bir fonksiyon olarak eklediğimiz için parantezle çağırıp içerisine discord parametresini gönderiyoruz...

/***********/

// Burasıda kütüphanem.js dosyamız olsun:
module.exports = function ( discord ) {
  console.log(discrod);
}
// kütüphanem.js dosyamızdaki module.exports ile çağrılan sayfaya geri dönüş yaptırabiliyoruz.
 

webkit

Koydum Çalışma Masasını
Katılım
27 Kasım 2018
Mesajlar
65
Elmaslar
44
Puanlar
2.060
Tek tek dosya çağıramam ben 100 tane farklı dosya oluşturcam diyorsan: fs ile klasör dizini okuyup for döngüsüne sokup döngüyle birlikte ne kadar sayfan varsa require edebilrisin:
JavaScript:
const fs = require("fs");
fs.readdirSync("./komutlar").forEach(dosya_adi => {
    require("./komutlar/" + dosya_adi);
});
 
Son düzenleme:

EchTR

echtr of legend

Discord:

EchTR#1848

Katılım
2 Aralık 2016
Mesajlar
845
Elmaslar
629
Puanlar
8.060
Yer
İzmir
Tek tek dosya çağıramam ben 100 tane farklı dosya oluşturcam diyorsan: fs ile klasör dizini okuyup for döngüsüne sokup döngüyle birlikte ne kadar sayfan varsa require edebilrisin:
JavaScript:
const fs = require("fs");
fs.readdirSync("./komutlar").forEach(dosya_adi => {
    require("./komutlar/" + dosya_adi);
});
teşekkürler .)
 
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı