#node.js #discord #discord.js
Вопрос:
Я пытался сделать отчет «команда об ошибке». До сих пор это мой код:
bot.on('message', async (client, message, args) => {
let parts = message.content.split(" ");
if(parts[0].toLocaleLowerCase() == '!bugreport') {
const owner = client.users.cache.get('567717280759283883');
const query = args.join(" ");
if(!query) return message.channel.send('Bitte schildere den Bug').then(m => m.delete({timeout: 5000}))
const reportEmbed = new Discord.MessageEmbed()
.setTitle('Fehlermeldung')
.setThumbnail(message.guild.iconURL())
.addField('Fehler:', query)
.addField('Server:', message.guild.name, true)
.setFooter(`Gesendet von ${message.author.tag}`, message.author.displayAvatarURL({dynamic: true}))
.setTimestamp();
owner.send(reportEmbed);
}
});
Код ошибки всегда говорит, что «содержимое» не определено, но я этого не понимаю
Ответ №1:
Предполагая , что у вас bot
есть a Client
, похоже, вы ожидаете message
, что событие передаст больше аргументов, чем на самом деле. Хотя это указывало бы на то , что вы пытаетесь читать content
undefined
, но не content
само undefined
по себе .
Ответ №2:
Client#message
Событие допускает 1 параметр, который является экземпляром Message
. Измените свой код на этот
bot.on('message', async (message) => {
//code here
})
Вы, вероятно, запутались с обработчиками сообщений, где вы можете настроить функцию по своему вкусу.
Ответ №3:
Событие message передает только полученное сообщение в соответствии с discord.js документы. Ваш обработчик событий должен выглядеть примерно так в начале:
bot.on('message', async (message) => {
Обратите внимание, что это не полностью исправит вашу команду, так как вы все равно будете пропускать параметры args
и. client
Вот мое лучшее предположение о том, где их взять, основываясь на том, как вы их используете:
const args = parts.splice(0,1); // gives array of everything after "!bugreport"
const client = bot; // alternatively, replace client with bot in your code