Discord.Js бот не ждет ответа

#discord.js

#discord.js

Вопрос:

Я сделал команду announce для своего Discord.js бот v12.

Что происходит, когда я запускаю свою команду:

Что происходит, когда я запускаю свою команду

Вот мой код:

 // title
message.channel.send("What would be the title ?");
const titlecollector = new Discord.MessageCollector(
  message.channel,
  (m) => m.author.id === message.author.id,
  { time: 60000 }
);
// description
message.channel.send("What would be the description ?");
const descCollector = new Discord.MessageCollector(
  message.channel,
  (m) => m.author.id === message.author.id,
  { time: 180000 }
);
// ping
message.channel.send("Would I ping everyone, here or none ?");
const pingCollector = new Discord.MessageCollector(
  message.channel,
  (m) => m.author.id === message.author.id,
  { time: 60000 }
);
// channel
message.channel.send("Which channel should I send it to ?");
const channelCollector = new Discord.MessageCollector(
  message.channel,
  (m) => m.author.id === message.author.id,
  { time: 60000 }
);
// color
message.channel.send("What color should I use ?");
const colourCollector = new Discord.MessageCollector(
  message.channel,
  (m) => m.author.id === message.author.id,
  { time: 180000 }
);

// THE ANNONCEMENT

const announcementEmbed = new Discord.MessageEmbed()
  .setTitle(collector)
  .setDescription(descriptionCollector)
  .setFooter(`Sent by ${message.member.user.tag}`);

const channel = Client.channels.cache.find(
  (channel) => channel.name === channelCollector
);

if (pingCollector == "everyone") {
  channel.send("@everyone");
} else if (pingCollector == "here") {
  channel.send("@here");
}
channel.send(announcementEmbed);
  

Я хочу, чтобы он дождался ответа, а затем сохранил его. Что не так с моим кодом?

Ответ №1:

Вам нужно дождаться сообщений, вместо того, чтобы использовать сборщик сообщений.

 //title
message.channel.send("Enter a title").then(() => {
  const filter = m => m.author.id == message.author.id //this ensures that it's waiting messages from the person who sent the message
  message.channel.awaitMessages(filter, {time: 60000, max: 1, errors: ['time']) //the time variable is the amount of milliseconds it should wait for, change this accordingly
  .then(async messages => {
    let title = messages.first().content
    //description
    message.channel.send("Enter a description!").then(() => {
      message.channel.awaitMessages(filter, {time: 60000, max: 1, errors: ['time'])
      .then(async messages2 => {
        let description = messages2.first().content
      }).catch(() => {
        message.channel.send("You didn't enter anything!")
      })
    })
  }).catch(() => {
    message.channel.send("You didn't enter anything!")
  })
})
  

И так далее…