使用Discord.js的EmbedBuilder设置RANDOM颜色报错求助
Discord.js EmbedBuilder 设置随机颜色报错问题
我尝试用以下代码创建带随机颜色的Embed,按文档说明.setColor()应支持包含'RANDOM'的ColorResolvable类型,但一直报错:
Unable to convert color to a number.
code : ColorConvert
代码示例:
const embed = new EmbedBuilder() .setColor('RANDOM') .setDescription("Some description") await interaction.reply({embeds : [embed]})
问题原因
Discord.js v14及后续版本中,EmbedBuilder的setColor()方法不再支持'RANDOM'字符串参数,要求传入的颜色必须是可转换为数字的格式(如十六进制字符串、RGB数组/对象、十进制数字)。
解决方案
方法1:生成随机十六进制颜色字符串
手动生成6位随机十六进制颜色值传入:
// 生成随机十六进制颜色 const randomHexColor = `#${Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0')}`; const embed = new EmbedBuilder() .setColor(randomHexColor) .setDescription("Some description") await interaction.reply({embeds : [embed]})
方法2:生成随机十进制颜色值
直接生成0到16777215之间的随机整数(对应RGB颜色范围):
const randomDecimalColor = Math.floor(Math.random() * 16777215); const embed = new EmbedBuilder() .setColor(randomDecimalColor) .setDescription("Some description") await interaction.reply({embeds : [embed]})
内容的提问来源于stack exchange,提问作者user14800015
相关产品推荐
相关产品推荐

