const botconfig = require("./botconfig.json");
const tokenfile = require("./token.json");
const Discord = require("discord.js");
const fs = require("fs");
const bot = new Discord.Client({disableEveryone: true});
bot.commands = new Discord.Collection();
fs.readdir("./commands/", (err, files) => {
if (err) console.info(err);
let jsfile = files.filter(f => f.split(".").pop() === "js")
if (jsfile.length <= 0){
console.info("Couldn't find commands.");
return;
}
jsfile.forEach((f, i) =>{
let props = require(`./commands/${f}`);
console.info(`${f} loaded!`);
bot.commands.set(props.help.name, props);
});
});
bot.on("ready", async () => {
console.info(`${bot.user.username} is online on ${bot.guilds.size} servers!`);
bot.user.setActivity("!help | website.xyz", {type: "WATCHING"});
//bot.user.setGame("on SourceCade!");
});
bot.on("message", async message => {
if (message.author.bot) return;
if (message.channel.type === "dm") return;
let prefix = botconfig.prefix;
let messageArray = message.content.split(" ");
let cmd = messageArray[0];
let args = messageArray.slice(1);
let commandfile = bot.commands.get(cmd.slice(prefix.length));
if (commandfile) commandfile.run(bot,message,args);
});
bot.login(tokenfile.token);
Это моя индексная папка, когда я пытаюсь запустить бота, я получаю эту ошибку. Я пробовал все, но я не лучший в этом, так как я все еще учусь, поэтому любая помощь будет принята с благодарностью! Спасибо
C:\Users\Luca\Desktop\DiscordJS\RedHQ-Bot\index.js:21
bot.commands.set(props.help.name, props);
^
TypeError: Cannot read property 'name' of undefined
at jsfile.forEach (C:\Users\Luca\Desktop\DiscordJS\RedHQ-Bot\index.js:21:33)
at Array.forEach (<anonymous>)
at fs.readdir (C:\Users\Luca\Desktop\DiscordJS\RedHQ-Bot\index.js:18:10)
at FSReqWrap.oncomplete (fs.js:135:15)
[nodemon] app crashed - waiting for file changes before starting...
Это означает, что у объекта ur prop нет клавиши справки.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Существует проблема с props.help, потому что он возвращает undefined (ключ «help» не существует в реквизитах) в качестве сообщения об ошибке. Вероятно, вам следует точно проверить, что вы назначаете реквизитам.
Когда вы обращаетесь к свойству свойства, вы должны добавить проверку для первого свойства.
Ваш props.help - это undefined. undefined не является объектом Javascript, и поиск свойства name на undefined завершится ошибкой.
Если вы попытаетесь найти свойства undefined, вы получите ошибку TypeEror.
Object.getOwnPropertyNames(undefined)
// prints 'Uncaught TypeError: Cannot convert undefined or null to object'
Тем более, что вы читаете несколько файлов и получаете доступ к полям в этих файлах, вам следует позаботиться о том случае, если файл имеет неправильный формат или файл был неправильно прочитан и т. д.
jsfile.forEach((f, i) =>{
let props = require(`./commands/${f}`);
console.info(`${f} loaded!`);
if (props.help && props.help.name) {
bot.commands.set(props.help.name, props);
} else {
console.error(`file ${f} does not have .help or .help.name property!`);
});ваш обработчик команд не имеет
exports.conf = {
aliases: ['Stuff', 'AlsoStuff']
};
exports.help = {
name: "More Stuff", description: "SillyStuff.", usage: ".SeriousStuff"
}
Вот почему вам возвращается ошибка "Имя не найдено". Потому что в коде, где он ищет, его нет.
Как выглядит командный файл?