如何防止颜色转换崩溃(discord.js)



我一直在尝试制作一个不和谐的机器人,每个用户都可以选择自己的颜色,让机器人在使用时显示。到目前为止,一切都很正常。然而,当在嵌入的.setColor()中输入一些特定字符时,它会破坏脚本,并表示存在颜色转换错误。我试着把0x放在前面,#放在前面。但无论剧本在试图放入";ZZZZZZ";作为颜色代码。我问这个问题并不是因为我想使用奇怪的颜色,只是为了确保机器人不会因为使用它的白痴想要一些奇怪的颜色而崩溃,或者只是故意试图崩溃。我也知道这是可能的,因为我已经在另一个机器人上测试了它。在这里,它不会崩溃机器人,只是设置了一个颜色,即使我输入了";ZZZZZZ";作为颜色代码。如何确保脚本不会崩溃/将字母和数字的任何组合转换为有效的颜色?

只需验证颜色即可!

// colorArg is the argument for the wanted color
function checkHex(color) {
return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color);
}
if (!checkHex(colorArg) && !Object.keys(Discord.Constants.Colors).includes(colorArg.toUpperCase())) {
// invalid color
} else {
// valid color
}

checkHex函数取自该答案

我发现了,不幸的是,我无法使提供的其他代码正常工作。然而,我完成了这项工作:

hex = args[0] // args[0] is the user defined input.
function isHexColor (hex) {
return typeof hex === 'string'
&& hex.length === 6
&& !isNaN(Number('0x' + hex))
}
if (!isHexColor(hex) && !Object.keys(Discord.Constants.Colors).includes(hex.toUpperCase())) {
message.reply('Please enter a valid HEX color to use'); return;
}

最新更新