使用消息收集器设置嵌入字段

时间:2021-04-13 13:19:40

标签: javascript node.js discord discord.js

我有一个消息收集器,我正在尝试使用在嵌入中收集的数据作为标题、描述和嵌入颜色。到目前为止,我已经让它工作了,所以每个值都返回一个单独的嵌入。

我相信这是由于第 38 行中的 forEach,但是我尝试过的所有其他操作(删除该行,不返回任何内容,更改为 collects.messages(value) 抛出的值未定义,collected.messages 抛出的不是一个函数)不起作用

我不知道将它更改为什么,以获得我想要的结果(这是设置嵌入标题的第一个答案,第二个是嵌入描述,第三个是嵌入颜色)。

代码是


module.exports = {
    name: "embed",
    description: "Sets up a reaction role message!",
    async execute(client, message, args, Discord) {
    const questions = [
      'What is the message title?',
      'What is the message description?',
      'What is the embed colour?',
    ]

    let counter = 0

    const filter = (m) => !m.author.bot

    const collector = new Discord.MessageCollector(message.channel, filter, {
      max: questions.length,
      time: 60000 * 5, // 5m
    })

    message.channel.send(questions[counter++])
    collector.on('collect', (m) => {
      if (counter < questions.length) {
        m.channel.send(questions[counter++])
      }
    })

    collector.on('end', (collected) => {
      console.log(`Collected ${collected.size} messages`)

      if (collected.size < questions.length) {
        message.reply('The command has timed out')
        return
      }

      let counter = 0
      collected.forEach((value) => {
        console.log(value.content)
        let embed = new Discord.MessageEmbed()
            .setTitle(value.content)
            .setDescription(value.content)
            .setColor(value.content)
         
         
         let messageEmbed = message.channel.send(embed);
       
      })
      })
    }
    }```
    

Any help would be greatly appreciated

1 个答案:

答案 0 :(得分:0)

我需要做的就是设置一个变量来查看我在计数中的位置,然后使用该变量来设置字段

      let i = 0;
      collected.forEach((value) => {
        i++;
        if (i === 1) embed.setTitle(value.content);
        else if (i === 2) embed.setDescription(value.content);
        else if (i === 3) embed.setColor(value.content);
      })

      let messageEmbed = message.channel.send(embed);```