npm discord.js modülü için fs ile command handler yapmak
Sorunum
discord.js için yaptığım handlerdaki hatayı bulamadım, herşeyi eksiksiz yaptığımı biliyorum ama bir türlü cevap vermiyor bot
Modüller
Handler
const folders = fs.readdirSync("./commands/")
for (const files of folders) {
const folder = fs.readdirSync(`./commands/${files}/`).filter(file => file.endsWith(".js"))
for (const commands of folder) {
const command = require(`./commands/${files}/${commands}`)
console.log(`./commands/${files}/${commands}`)
bot.on('message',message => {
const args = message.content.slice(config.prefix.length).trim().split(/ +/);
if(message.content !== `${config.prefix}${command.name}` || `${config.prefix}${command.aliases.join(' || ')}`) return;
require(`./commands/${files}/${commands}`)(bot,message,args)
if(message.author.bot) return;
command.code
})
}
}
Örnek kullanım
Dosya yolu
./commands/user/ping.js
module.exports = {
name: "ping",
aliases: [],
code: async (bot, message, args) => {
message.channel.send('pong')
}
}
Önemli not
Cevap olarak hazır handler yazmayın , 'bot' tanımlanmıştır
Şu kod parçacığı yanlış yerde bulunuyor:
bot.on('message',message => {
const args = message.content.slice(config.prefix.length).trim().split(/ +/);
if(message.content !== `${config.prefix}${command.name}` || `${config.prefix}${command.aliases.join(' || ')}`) return;
require(`./commands/${files}/${commands}`)(bot,message,args)
if(message.author.bot) return;
command.code
})
döngü içinde tekrar tekrar event handler yaratılmış oluyor.
https://discordjs.guide/command-handling/#reading-command-files
şu linkteki kısımda dikkat edersen client.command şeklinde bir collection yaratılıyor.
bu kısımda tabi direk commands folderını tarıyor ama anlatımın biraz ilerisinde commands altında klasörlere bölmeyide anlatıyor.
komutlar bunun içine ekleniyor ve ardından event handler kullanılarak komutlara erişiliyor.
Bu dökümantasyonun başından başlar gidersen rahatça düzenlersin.