discord.js如果args为null,则表示不会发送错误消息



我有一个命令,它使用了3个参数,一个提到的用户参数、一个提到了的通道参数和一个文本参数。但每次我错过arg时,它都会在控制台中显示错误,而不是显示错误消息。代码如下:

const Discord = require('discord.js')
const { MessageEmbed } = require('discord.js');
module.exports = {
name: 'rejeitar',
category: 'Premium',
description: 'rejeitar alguem na org '
,
run: async (client, message, args, user, guild) => {
if(message.member.roles.cache.some(r => r.name === "[🔥] Gestor tickets")){

let member = message.mentions.members.first();
let channel = message.mentions.channels.first();
const motivo = args.slice(2).join(' ');
const rejeitado2 = new MessageEmbed()
.setColor('#ff0000')
.setTitle('**📝❱Resultado cands**')
.setDescription('**Rejeitado**')
.addFields(
{ name: '**💼❱ Rejeitado pelo Staff**', value: `${message.author.tag}` },
{ name: '**🕒❱ Data**', value: `${message.createdAt}` },
{ name: '**🕒❱ Motivo**', value: `${motivo}` },
{ name: '**👨‍🦲❱ Membro Rejeitado**', value:`${member}`, inline: true },
)
.setTimestamp()
.setFooter({ text: 'Bot feito por Chain#6988' });
////---------------LOG EMBED-------------/////

const rejeitado = new MessageEmbed()
.setColor('#ff0000')
.setTitle('**📝❱Infelizmente não foste aceite nos TDT**')
.setDescription('**Tenta denovo mais tarte **')
.addFields(
{ name: '**💼❱Rejeitado pelo Staff **', value: `${message.author.tag}` },
{ name: '**🕒❱Data**', value: `${message.createdAt}` },
{ name: '**🕒❱ Motivo**', value: `${motivo}` },
{ name: '**👨‍🦲❱Membro Rejeitado**', value:`${member}`, inline: true },
)
.setFooter({ text: 'Bot feito por Chain#6988' });
if(channel && member ){ 
channel.send({ embeds: [rejeitado] });
channel.send (`${member}`)
client.channels.cache.get('1002892850385657866').send({ embeds: [rejeitado2] });
client.channels.cache.get('1002892850385657866').send(`${member}`);
message.react("✅")
message.channel.send("Clica no ✅ para apagar o ticket!")
}
else
message.channel.send("**ERRO**nVerifica se podes usar o comando ou se esta correto!(.aceitar #ticket  @pessoa rejeitada motivo")

function filter(reaction, user) {
return reaction.emoji.name === '✅' && user.id === message.author.id;
}
// Increase or decrease the time based on your needs.
const collector = message.createReactionCollector({ filter, time: 1500000, max: 1 });
collector.on("collect", (reaction, user) => {
/* Because of the way we defined our filter, there is no need to check
if the user reacted with any other emoji than the ✅ */
channel.delete();
})
// and if the user doesn't react with anything in the time limit
collector.on('end', collected => {
if(collected.size < 1) {
return message.channel.send("o tempo acabou, vais ter de fechar o ticket manualmente")


}
})
}
}
}

控制台中显示的错误:

/home/runner/turqia-bot/node_modules/discord.js/src/util/Util.js:428
if (!allowEmpty && data.length === 0) throw new error(errorMessage);
^
RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.

如果通道没有args或缺少args,则假定向通道发送错误消息。如果你们知道解决办法,帮我。谢谢

由于您使用的是if...else语句,因此不会发送错误消息。您的初始条件返回true,因此您的else语句将不会执行。

你可以做什么来解决你的问题,只是简单地检查是否有3个参数使用:

if(message.member.roles.cache.some(r => r.name === "[🔥] Gestor tickets")){
// or the equivalent index of your last argument
if(!args[2]) {
return message.channel.send("**ERRO**nVerifica se podes usar o comando ou se esta correto!(.aceitar #ticket  @pessoa rejeitada motivo");
}
// rest of your code
}

您还可以在try...catch语句中封装代码,并在出现任何错误时发送消息。这不是最好的方法,但它仍然有效。

最新更新