如何创建一个嵌入与一定数量的字段从一个数字?



我正在创建一个嵌入,它的格式是:

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

最新更新