Discord.js设置MessageEmbed随机颜色报错求助
解决Discord.js MessageEmbed设置随机颜色报错的问题
问题原因
Discord.js v13及以上版本已移除"RANDOM"作为setColor()参数的支持,同时颜色值必须是有效的十进制数值、带#/不带#的十六进制字符串,或Discord官方支持的颜色常量(如"BLUE")。你遇到的COLOR_CONVERT错误,就是因为传入了当前版本不兼容的颜色参数。
解决方案
方案1:生成随机RGB颜色值
直接生成0~16777215之间的随机整数(对应十六进制0xFFFFFF,覆盖所有RGB颜色范围),替换原有的"RANDOM":
const Command = require("../structures/Command.js"); const config = require("../data/config.json"); const {MessageEmbed} = require('discord.js') module.exports = new Command({ name: "artlumen", description: "idk", async run(message, args, client) { const artlumen = new MessageEmbed() .setColor(Math.floor(Math.random() * 16777215)) // 生成随机颜色 .setTitle("Elite 0") .setImage('https://raw.githubusercontent.com/Aceship/Arknight-Images/main/characters/char_4042_lumen_1.png') .setTimestamp() message.channel.send({ embeds: [artlumen] }); } });
方案2:使用预设颜色列表(修复自定义函数)
如果想用指定的预设颜色,确保函数在可访问的作用域内,返回格式正确的颜色值:
const Command = require("../structures/Command.js"); const config = require("../data/config.json"); const {MessageEmbed} = require('discord.js') module.exports = new Command({ name: "artlumen", description: "idk", async run(message, args, client) { function getRandomColor() { const colorList = ["#000000", "#1ABC9C", "#11806A", "#57F287", "#1F8B4C", "#3498DB", "#206694", "#9B59B6", "#71368A", "#E91E63", "#AD1457", "#F1C40F", "#C27C0E", "#E67E22", "#A84300", "#ED4245", "#992D22", "#95A5A6", "#979C9F", "#7F8C8D", "#BCC0C0", "#34495E", "#2C3E50", "#FFFF00"] return colorList[Math.floor(Math.random() * colorList.length)]; } const artlumen = new MessageEmbed() .setColor(getRandomColor()) .setTitle("Elite 0") .setImage('https://raw.githubusercontent.com/Aceship/Arknight-Images/main/characters/char_4042_lumen_1.png') .setTimestamp() message.channel.send({ embeds: [artlumen] }); } });
补充说明
- 16777215是十六进制
0xFFFFFF的十进制值,覆盖了所有RGB颜色范围。 - 预设颜色列表中的值,带
#或不带#的十六进制字符串,Discord.js v13+都能正确解析。
内容的提问来源于stack exchange,提问作者Sakura Kaslana
相关产品推荐
相关产品推荐

