Как мне сделать эту работу (сборщик сообщений)? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь заставить своего бота собирать сообщения и отправлять их пользователю, например, сейчас это мой код

if (message.content.toLowerCase() === 'reply'){
message.channel.send('Type the user id that you want to send the message to.')
  .then(() => message.channel.awaitMessages((
    // only include messages from the original author
    m => m.author.id === message.author.id),
    // This stops collecting after one message that passes the above filter
    {max: 1}
  ))
    .then(collected => {
      const id = collected.first().content
      bot.users.fetch(id)
        .then(user => user.send('hello there person'))
        .catch(() => message.channel.send(`${id} is not a valid user ID!`))
    })
  }

Я хочу, чтобы это исправить, чтобы он мог собирать как можно больше сообщений. Я хочу, но не предустановленное сообщение. Я хочу, чтобы оно отправляло сообщение, которое я на самом деле печатаю. Например, этот код отправит только одно сообщение «Привет, человек», но я хочу сделать это так, что если я наберу «ответить» и введу чей-то идентификатор пользователя, он начнет собирать любое сообщение, которое я набираю в тот момент. поэтому в основном собирать сообщения в режиме реального времени. Если это имеет смысл.

1 Ответ

0 голосов
/ 30 апреля 2020

Сначала необходимо создать коллектор сообщений. Вот пример того, как я это делаю:

//creates a message collector only looking for messages by the author for 60 seconds
const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { time: 60000 }); 

//this runs as soon as the author writes a message
collector.on('collect', async message => {
    console.log(message.content) //logs the users message
    collector.stop() //stops the collector
})
//this runs when the collector stops
collector.on(`end`, => {
        message.channel.send(`Collected your message!`) //sends a confirmation message
})
...