我正在创建一个嵌入,它的格式是:
let myEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle(tempDay)
.addFields(
{ name: '1', value: 'This is a value' }
);
我想我的bot创建这个嵌入多个字段,当它被给定2个值,开始和结束的数字。例如,如果我的起始数字是2,结束数字是4,它会产生如下嵌入:
let myEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle(tempDay)
.addFields(
{ name: '2', value: 'This is a value' },
{ name: '3', value: 'This is a value' },
{ name: '4', value: 'This is a value' },
);
有没有一种方法我的代码可以做到这一点,而不需要我手动创建这个嵌入?提前感谢
addFields
方法接受一个选项数组。所以你需要做的是创建一个函数来创建你的格式。在本例中,我将坚持使用两个给定的数字,而不考虑字段的值。
现在,让我们创建一个名为createEmbedFields
的函数,它将这两个数字作为参数并返回所需形式的数组。该函数只是检查第一个数字是否比第二个数字小,并在将其放入数组后增加它。注意:我们在这里使用parseInt
函数,因为很可能你会得到字符串格式的数字,我们需要将其更改为整数才能正常工作。
function createEmbedFields(num1, num2) {
let embedFields = [];
while (parseInt(num1) <= parseInt(num2)) {
embedFields.push({name : parseInt(num1), value: 'This is a value'});
num1++;
}
return embedFields;
}
现在我们有了一个函数,我们可以用它来创建嵌入。首先,我们需要将返回的数组保存在一个变量中,然后将其放入addFields
方法中。
一旦嵌入了所需的字段,您可以使用MessageEmbed#fields
访问它们。
const first = 1;
const second = 6;
let options = createEmbedFields(first, second);
const embed = new Discord.MessageEmbed()
.addFields(options);
embed.fields[0].value = "this is a test value";
message.channel.send(embed);
let myEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle(tempDay)
const start = 1;
const end = 5;
for(var i=start; i < end; i++){
myEmbed.addField(toString(i), ‘this is a value’);
}
这应该可以工作,因为. addfield()可以多次重复到同一个嵌入。
如果你想包含最后一项,你可以将i < end
更改为i <= end