如何在Discord.js中制作DM提示?

时间:2020-09-04 07:31:17

标签: javascript node.js discord discord.js bots

我刚刚学习了如何从Discord.js机器人发送DM,但是如何将其转换为提示?目前,我的代码如下:

client.on('message', message => {
  if (message.channel.type == "dm") {
    if (message.author.bot) return;
    if (message.content == "hello") {
      message.author.send("Hello!");
    }
  }
});

但是我如何存储有关该dm中发生的情况的数据?如果我正在制作像Application Bot这样的机器人,它将根据先前的dms选择要回复的内容,我该如何使它工作?我需要使用数据库吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用消息收集器(通过awaitMessagescreateMessageCollector进行此操作:

message.author.send("Hello!");

// With awaitMessages:
message.dmChannel.awaitMessages(
  // This is a filter function that allows you to only receive certain messages.
  // Return true to receive the message.
  // This filter will accept all messages.
  msg => true,
  // Options. This example makes the promise resolve after 1 message has been 
 collected.
  {max: 1}
).then(messages => {
  // messages is a Collection of messages
  const msg = messages.first();
  // do something...
});

// With createMessageCollector:
const collector = message.dmChannel.createMessageCollector(msg => true, {max: 1})
collector.on("collect", msg => {
  // do something...
});

您还可以将ES2017的async / await语法与awaitMessages一起使用:

// Note the async here
client.on('message', async message => {
  if (message.channel.type == "dm") {
    if (message.author.bot) return;
    if (message.content == "hello") {
      message.author.send("Hello!");

      const messages = await message.dmChannel.awaitMessages(msg => true, {max: 1});
      const msg = messages.first();
      // do something...
    }
  }
});

有关更多信息,请参见‘Collectors’ on the discord.js guide