我正在尝试制作一个编辑自己的消息的机器人,但我不知道如何保留发送消息。
我想做这样的事情:
- 我触发命令
- 机器人答案,例如"是"
- 一秒钟后,"是"被否代替了
所以我想我需要将"是"消息保留在变量中才能编辑它,我该怎么做?
您可以通过链接.then()
来跟踪您的消息。例如:
message.channel.send("Hello from StackOverflow!").then((msg) => {
// Your logic ...
// ...
msg.edit("Hello!");
});
当您的机器人发送消息(例如message.channel.send('...')
(时,该方法将返回Message
的Promise
。我不会进一步解释承诺如何在JavaScript中起作用,但是请记住,您在使用Discord.js开发时需要很多东西,这是现代JavaScript中的重要知识。
基本上,有两种方法可以访问您发送的消息。
- 使用
.then()
:
message.channel.send('...').then((msg) => {
/* The sent message is stored in the msg variable, do whatever you want with it
However, note that you cannot use it outside of this .then() block in any way */
});
- 使用
async/await
:
const msg = await message.channel.send('...');
// Now, your sent message is stored in the msg variable
请记住,await
关键字只能在async
函数中使用。因此,正如我们的大多数Discord.js代码都在活动中一样,您可以将活动听众这样:
client.on('message', async function() { /* ... */ });
仅包含async
关键字允许您在其中使用await
关键字。
再次,掌握承诺对于discord.js和总体而言,确实很重要。除了我在解释中提出的链接外,《 discord.js指南》的这篇文章可能会对您有很大帮助。