Ошибка типа бота JavaScript discord: Не удается прочитать свойство «гильдия» неопределенного

#discord.js

Вопрос:

Я пытаюсь использовать этот код билета JavaScript в своем боте discord, но ошибка TypeError: Cannot read property 'guild' of undefined продолжает появляться. Я не понимаю, почему. Может ли кто-нибудь направить меня в правильном направлении?

 module.exports = {
    name: "ticket",
    aliases: [],
    permissions: [],
    description: "Open a ticket!",
    async execute(message, args, cmd, client, discord) {
      const channel = await message.guild.channels.create(`ticket: ${message.author.tag}`);
      channel.setParent("820276801652916270");
  
      channel.updateOverwrite(message.guild.id, {
        SEND_MESSAGE: false,
        VIEW_CHANNEL: false,
      });
      channel.updateOverwrite(message.author, {
        SEND_MESSAGE: true,
        VIEW_CHANNEL: true,
      });
  
      const reactionMessage = await channel.send("Thank you for contacting support!");
  
      try {
        await reactionMessage.react("🔒");
        await reactionMessage.react("⛔");
      } catch (err) {
        channel.send("Error sending emojis!");
        throw err;
      }
  
      const collector = reactionMessage.createReactionCollector(
        (reaction, user) => message.guild.members.cache.find((member) => member.id === user.id).hasPermission("ADMINISTRATOR"),
        { dispose: true }
      );
  
      collector.on("collect", (reaction, user) => {
        switch (reaction.emoji.name) {
          case "🔒":
            channel.updateOverwrite(message.author, { SEND_MESSAGES: false });
            break;
          case "⛔":
            channel.send("Deleting this channel in 5 seconds!");
            setTimeout(() => channel.delete(), 5000);
            break;
        }
      });
  
      message.channel
        .send(`We will be right with you! ${channel}`)
        .then((msg) => {
          setTimeout(() => msg.delete(), 7000);
          setTimeout(() => message.delete(), 3000);
        })
        .catch((err) => {
          throw err;
        });
    },
}
 

Комментарии:

1. Похоже, что вы не определились message при выполнении своего файла. Не могли бы вы предоставить нам код, который выполняет этот файл?

2. Да… ты имеешь в виду одну из этих частей? если(билета команды===») { клиент.команды.вам («билет»).выполнить(сообщение.параметр args); } }) commandFiles константный = ФС.readdirSync(‘./команды/’).фильтр(файл=>.метода endswith(‘.в JS’)) в(пост файла commandFiles){ константный команда = требуют( ./commands/${file} ); клиент.команды.набор(команд.имя команды); } асинхронного выполнения(сообщение, аргументы, УМК, клиент, раздор) {

Ответ №1:

Используя информацию в вашем комментарии, ваш обработчик команд был настроен неправильно. Когда вы ставите execute(message.args) , код пытается передать args свойство вашего аргумента сообщения, которое возвращает undefined .

Вместо этого вы должны использовать execute(message, args) для правильной передачи каждого аргумента для вашей команды.