#discord #bots #discord.js
#Discord #боты #discord.js
Вопрос:
Я создаю команду отчета и получил эту ошибку
reportsChannel.send(`**${message.author.username}** has reported **${target.user.username}** for
^
**${reason}**.`);
TypeError: Cannot read property 'send' of undefined
Эта ошибка возникает только тогда, когда я нахожусь на другом сервере, отличном от канала, где хранятся все отчеты
вот мой код:
switch(args[0]){
case 'report':
let target = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if(!target) return message.channel.send('Please provide a user that you wish to report').then(m => m.delete({timeout: 15000}));
var reason = args.slice(2).join(" ");
if(!reason) return message.channel.send(`Please provide a reason for reporting **${target.user.username}**`).then(m => m.delete({timeout: 15000}));
let reportsChannel = message.guild.channels.cache.find(x => x.id === "747697771594645566")
if(args[1] === target, args[2] === reason){
message.channel.send('Your report has been filled to the staff team. Thank you for reporting!')
reportsChannel.send(`**${message.author.username}** has reported **${target.user.username}** for **${reason}**.`);
}
break;
};
Есть идеи, как это исправить? Спасибо
Ответ №1:
Позвольте мне внести уточнение, на другом сервере вы не можете получить его гильдию через message.guild
он вернется на сервер, на котором он включен… Итак, измените это:
let reportsChannel = message.guild.channels.cache.find(x => x.id === "747697771594645566")
к этому:
let reportsChannel = client.channels.cache.find(x => x.id === "747697771594645566")
Комментарии:
1. Вы также можете пропустить
guild
часть и просто сделатьmessage.client.channels.cache.get()
2. Это здорово, я не проверял это, как правило, делаю вещи сложным способом xd.