TypeError: Cannot read properties of undefined (reading 'application')
Я смотрел уроки Under Ctrl по discord.js попутно изучая базу JavaScript.
В файле getApplicationCommands.js с урока №7 пишется ошибка TypeError: Cannot read properties of undefined (reading 'application')
Код файла getApplicationCommands.js:
module.exports = async (client, guildId) => {
let applicationCommands;
if (guildId) {
const guild = await client.guilds.fetch(guildId);
applicationCommands = guild.commands;
} else {
applicationCommands = await client.application.commands;
}
await applicationCommands.fetch();
return applicationCommands;
};
Так же я получаю точно такую же ошибку из файла 01registerCommands.js.
Код файла 01registerCommands.js:
const getApplicationCommands = require('../../utils/getApplicationCommands');
const getLocalCommands = require('../../utils/getLocalCommands')
module.exports = async (client) => {
try {
const localCommands = getLocalCommands();
const applicationCommands = getApplicationCommands();
for (const localCommand of localCommands) {
const { name, description, options } = localCommand;
const existingCommand = await applicationCommands.cache.fetch(
(cmd) => cmd.name === name
);
if (existingCommand) {
if (existingCommand.deleted) {
await applicationCommands.delete(existingCommand.id);
console.log(`? Deleted command: ${name}!`);
continue;
}
if (areCommandsDifferent(existingCommand, localCommand)) {
await applicationCommands.edit(existingCommand.id, {
description,
options,
});
console.log(`? Edited command: ${name}`)
} else {
if (localCommand.deleted) {
console.log(`⏩ Skipping registering command ${name}!`);
continue;
}
}
applicationCommands.create({
name,
description,
options,
})
console.log(`✅ Command ${name} succsessfully registered!`)
}
}
} catch (error) {
console.log(`There was an error: ${error}!`);
}
};
Хотя в консоль все сообщение из такого же файла (consoleLog.js) пишутся.
Ответы (1 шт):
Во всех файлах где Вы вызываете getApplicationCommands() нужно передать в нее два параметра: client и guildId
В файле 01registerCommands это:
const applicationCommands = getApplicationCommands();
замените на это:
const applicationCommands = getApplicationCommands(client, yourGuildId);
Замените yourGuildId на id discord сервера.
Обычно его хранят в файле .env
Данный способ должен сработать:
const applicationCommands = getApplicationCommands(client, process.env.GUILD_ID);