#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)
для правильной передачи каждого аргумента для вашей команды.