首页 > 解决方案 > discord.js awaitmessage 不收集数据

问题描述

所以由于某种原因,当我使用awaitMessage()它时,它不会为我收集数据。我正在使用 glitch.com 和 discord.js 12.4.0。

这是我的代码:

const Discord = require("discord.js");
const Bot = new Discord.Client();
const ms = require("ms");

const filter = response => {
  return response.author.id === response.author.id;
}

const token = "a-token";
Bot.on("ready", () => {
  console.log("This bot is ready!");
});
Bot.login(token);

Bot.on("message", msg => {
  if (msg.content.includes("!suggest")) {
    var Title;
    var Description;
    console.log("thing");
    //host function
    let sender = msg.member;

    if (sender.roles.cache.some(role => role.name === "Verified")) {
      let splitmessage = msg.content.split(" ");
      console.log("1");
      msg.channel.send("What is your suggestion title?").then(() => {
        console.log("2");
        msg.channel
          .awaitMessages(() => true, {
            time: 30000,
            errors: ["time"]
          }).then(collected => {
            //the issue is here
            console.log("3");
            Title = collected.first().content;
            msg.channel.send("What is your suggestion description?").then(() => {
                 msg.channel
                  .awaitMessages(() => true, {
                    time: 30000,
                    errors: ["time"]
                  })
                  .then(collected2 => {
                    Description = collected2.first().content;
                    let Embed = new Discord.MessageEmbed()
                      .setTitle(Title)
                      .setDescription(Description)
                      .setColor("#0099ff")
                      .setTimestamp();
                    Bot.channels.cache
                      .get("748562622915412018")
                      .send(Embed)
                      .then(function(message) {
                        message.react("");
                        message.react("");
                      });
                    //Bot.channels.cache.get("771467173922078720").send("@everyone");
                    msg.channel.send("Suggested!");
                  });
              });
          })
          .catch(collected => {
            msg.channel.send("Looks like nobody got the answer this time.");
          });
      });

      //the format is correct
    } else {
      msg.channel.send("You don't have the permission to suggest, tuff.");
    }
  }
});

我正在尝试做的是制作一个机器人,它会提出多个问题,然后它基本上会在另一个频道中发布建议。

标签: javascriptdiscord.js

解决方案


这可能是因为没有使用等待。在收集器之前使用 await 。

await msg.channel.awaitMessages({ time: 30000, errors: ['time'] }).then(collected=>{
    let result = collected.first().content
})

确保将其保存在异步函数中。


推荐阅读