如何在 Discord.js v12 中创建随机颜色作为嵌入强调色?

Posted

技术标签:

【中文标题】如何在 Discord.js v12 中创建随机颜色作为嵌入强调色?【英文标题】:How to create random colours as an embed accent colour in Dicord.js v12? 【发布时间】:2021-05-21 10:32:47 【问题描述】:

所以,我想创建一个嵌入,每次使用它时,输出一个随机颜色作为它的重音。

这是我当前的代码:

const Discord = require('discord.js');

const exampleEmbed = new Discord.MessageEmbed()
    .setColor('#0099ff')
    .setTitle('Some title')
    .setURL('https://discord.js.org/')
    .setAuthor('Some name', 'https://i.imgur.com/wSTFkRM.png', 'https://discord.js.org')
    .setDescription('Some description here')
    .setThumbnail('https://i.imgur.com/wSTFkRM.png')
    .addFields(
         name: 'Regular field title', value: 'Some value here' ,
         name: '\u200B', value: '\u200B' ,
         name: 'Inline field title', value: 'Some value here', inline: true ,
         name: 'Inline field title', value: 'Some value here', inline: true ,
    )
    .addField('Inline field title', 'Some value here', true)
    .setImage('https://i.imgur.com/wSTFkRM.png')
    .setTimestamp()
    .setFooter('Some footer text here', 'https://i.imgur.com/wSTFkRM.png');

message.channel.send(exampleEmbed);

我怎样才能简单有效地做到这一点?

【问题讨论】:

【参考方案1】:

这实际上是超级简单的创建,实际上已经融入 Discord.js v12!要以最基本的形式实现这一点,只需使用以下代码:

const Discord = require('discord.js');

const exampleEmbed = new Discord.MessageEmbed()
    .setColor('RANDOM')
    .setTitle('Some title')
    .setURL('https://discord.js.org/')
    .setAuthor('Some name', 'https://i.imgur.com/wSTFkRM.png', 'https://discord.js.org')
    .setDescription('Some description here')
    .setThumbnail('https://i.imgur.com/wSTFkRM.png')
    .addFields(
         name: 'Regular field title', value: 'Some value here' ,
         name: '\u200B', value: '\u200B' ,
         name: 'Inline field title', value: 'Some value here', inline: true ,
         name: 'Inline field title', value: 'Some value here', inline: true ,
    )
    .addField('Inline field title', 'Some value here', true)
    .setImage('https://i.imgur.com/wSTFkRM.png')
    .setTimestamp()
    .setFooter('Some footer text here', 'https://i.imgur.com/wSTFkRM.png');

message.channel.send(exampleEmbed);

如果您仔细研究一下,您会注意到我所做的只是更改了代码的 .setColor('#0099ff') 位。这就是你所要做的!通过将十六进制值更改为“RANDOM”,您可以让 D.js 知道您希望它为您创建随机颜色。请注意,这实际上有点奇怪,因为它实际上只是通过“彩虹”图案旋转颜色。因此,如果您多次运行足够多的命令或相同的命令,您会注意到颜色最终会重复。

如果您想要更复杂的选项

这里的这段代码将使用 RNG 生成随机 RGB 值。

const randomBetween = (min, max) => Math.floor(Math.random()*(max-min+1)+min);

const color = [
  randomBetween(0, 255),
  randomBetween(0, 255),
  randomBetween(0, 255),
];

使用此功能,您可以:

const Discord = require('discord.js');

const randomBetween = (min, max) => Math.floor(Math.random()*(max-min+1)+min);

const color = [
  randomBetween(0, 255),
  randomBetween(0, 255),
  randomBetween(0, 255),
];

const exampleEmbed = new Discord.MessageEmbed()
    .setColor(`$color[0], $color[1], $color[2]`)
    .setTitle('Some title')
    .setURL('https://discord.js.org/')
    .setAuthor('Some name', 'https://i.imgur.com/wSTFkRM.png', 'https://discord.js.org')
    .setDescription('Some description here')
    .setThumbnail('https://i.imgur.com/wSTFkRM.png')
    .addFields(
         name: 'Regular field title', value: 'Some value here' ,
         name: '\u200B', value: '\u200B' ,
         name: 'Inline field title', value: 'Some value here', inline: true ,
         name: 'Inline field title', value: 'Some value here', inline: true ,
    )
    .addField('Inline field title', 'Some value here', true)
    .setImage('https://i.imgur.com/wSTFkRM.png')
    .setTimestamp()
    .setFooter('Some footer text here', 'https://i.imgur.com/wSTFkRM.png');

message.channel.send(exampleEmbed);

这将为 RGB 值的每个部分生成 0 到 255 之间的任何值,使您的嵌入强调色始终 100% 随机。

这段代码取自:Olian04's response on this question!我觉得好像这在任何地方都没有很好的记录,所以决定把它都放在这里!

【讨论】:

【参考方案2】:

如果你在 .setcolor 中写随机,你会得到随机颜色

.setColor('RANDOM')

【讨论】:

对,你的回答比较全面,我会删除我的回答。 @黄昏

以上是关于如何在 Discord.js v12 中创建随机颜色作为嵌入强调色?的主要内容,如果未能解决你的问题,请参考以下文章

如何定位文件 discord.js v12?

如何在 discord.js v12 中列出所有公会成员

Discord.js v12 - 如何添加角色?

如何在 discord.js 中创建 case 语句

如何在 Discord.JS v12 中查看用户正在玩的游戏

如何在 discord.js V12 中等待获取 X 人的所有语音频道?