我刚刚学习了如何从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选择要回复的内容,我该如何使它工作?我需要使用数据库吗?谢谢!
答案 0 :(得分:1)
您可以使用消息收集器(通过awaitMessages
或createMessageCollector
进行此操作:
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。