【发布时间】:2018-11-04 06:53:44
【问题描述】:
var color = Math.floor(Math.random() * 16777215).toString(16);
var hex = Number.parseInt(color, 16);
console.log(hex);
message.channel.send({embed: {
color: hex, //This is the place I attempt to implement it. It doesn't accept strings.
author: {
name: message.author.username + "'s Profile",
icon_url: message.author.avatarURL
},
description: ":white_small_square: **About:** " + message.author.bio,
fields: [{
name: "Client Info",
value: ":white_small_square: **User ID** - " + "`" + message.member.id + "`" + "\n:white_small_square: **Status** - " + "`" + message.author.presence.status.toUpperCase() + "`" + " | ***Is*** " + occupation
},
{
name: "Server Info",
value: ":white_small_square: **Joined at** - " /*+ "`" + new Date(guild.detailsOfUser(message.author.user).joinedAt).toUTCString() + "`" */+ "\n:white_small_square: **Avowed Roles** - " + ranks
}
],
timestamp: new Date(),
footer: {
text: message.author.username,
}
}
});
}
我环顾四周,发现一个论坛帖子,其中一群人成功地在一行中创建了一个十六进制生成器。这工作得很好,但是,我不希望它是一个字符串。我试图在该行之后解析Int,但它只是返回为“未定义”,当放入一个数字的位置时,它说它不是整数。如果有人对如何将其解析为 Int 有任何想法,请告诉我。
编辑:在我解释我为什么要关闭它之前,感谢所有帮助我尝试修复此问题的人。我只是在试验并意识到 .toString(16) 从未真正需要,并且结果数字是有效的颜色。再次感谢大家帮助我
【问题讨论】:
-
根据文档,我看到here
color应该是一个整数值(或可能一个格式为"#00AE86"的字符串)。我不确定你从哪里得到它是某种神秘的“十六进制”格式的要求。0x00AE86只是写与44678相同的数字的一种方式。因此,您的问题中仍然缺少的关键部分是:如果删除toString(16)部分会发生什么?它到底怎么行不通?这是一个错误吗?是别的吗? -
好的,所以你是在暗示一个字符串如果它前面有一个 # 也会起作用?如果是这样,我会修改代码,希望它应该有我正在寻找的结果:)
-
根据这个问题的答案stackoverflow.com/questions/46734519/…,它确实需要是一个十六进制值。但是,正如@SergGr 所说,它只是一个整数。即使您将
0x00AE86放入您的 Web 控制台,它也会显示一个整数 -
是的,根据Embed Visualizer 判断,
color必须是整数而不是字符串。字符串可能仅受RichEmbedbuilder 支持。仍然“十六进制”不是整数的属性。这是表示整数的方法。10和0xA在解释器/编译器解析代码后是同一个整数。 -
@NocNit,因为
16777215实际上是0xFFFFFF,是的,该代码生成的任何值都应该在有效颜色范围内。 @Masterthias,如果您删除了.toString(16)部分,当您有更多关于究竟出了什么问题的详细信息时,您可能应该回到这里。作为一个简单的检查color实际上是问题的原因,您可以出于测试目的硬编码一些颜色,如0x112233并检查所有其他字段是否正常。
标签: javascript math hex discord