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);
→ Ссылка