1

我正在尝试发送带有按钮的嵌入,但是当我尝试使用添加收集器时createButtonCollector,我收到以下错误:

TypeError: press.createButtonCollector is not a function

这是我的代码:

if (message.content.toLowerCase().startsWith(prefix+ 'test')) {
    let first = new disbut.MessageButton().setStyle("blurple").setID("1").setLabel("Confirm") //first button
    let second = new disbut.MessageButton().setStyle("red").setID("2").setLabel("Cancel") //second button
    var buttons = [first, second]
    let embed = new Discord.MessageEmbed() 
      .setTitle(":fire: Test")
      .setDescription("Yes")
      .setColor("#BEBDBD")
      .setTimestamp("Today"+ message.createdAt)
    let press = message.channel.send({ embed: embed, buttons: buttons })

    const collector = press.createButtonCollector((button)=> button.clicker.user.id === message.author.id, { time: 60e3 })

     collector.on('clickButton', async (button) => {
      console.log('run successfully')
      if (button.id === "1") {
        button.channel.send("it worked");
      } else if 
        (button.id == "2") {
        button.message.delete(0500);
      }
     })
    }

我不知道还有什么问题。

4

1 回答 1

1

press似乎是一个未决的承诺,因为message.channel.send() 返回一个承诺。您需要等待它得到解决。解决后,discord-buttons'createButtonCollector()将可以使用。

let press = await message.channel.send({ embed: embed, buttons: buttons })

// now the promise is resolved, createButtonCollector() is the function/method you want
let collector = press.createButtonCollector(
  (button) => button.clicker.user.id === message.author.id,
  { time: 60e3 }
)

确保它在一个async函数中。

于 2021-07-17T08:50:22.340 回答