【发布时间】:2020-11-28 11:17:13
【问题描述】:
所以,我有一个代码的工作示例,它向公会的所有成员发送 DM。 但是,我希望整个事情以一条消息结束,类似于:“成功发送 XX 条消息”。
const sentMessages = 0;
if (!message.member.hasPermission(`ADMINISTRATOR`)) {
message.channel.send(`You don't have permission to use this command!`);
message.client.channels.cache.get(logchannel).send(`${message.author} tried using DMALL! ` + dato.toLocaleTimeString() + dato.toLocaleDateString());
return;
} else {
const delay = (msec) => new Promise((resolve) => setTimeout(resolve, msec));
const sendMessage = args.join(" ");
message.channel.send(`Sending messages, please wait...`);
await delay(1000);
let interval = 500; // how much time should the delay between two iterations be (in milliseconds)?
let promise = Promise.resolve();
message.guild.members.cache.forEach(function (user) {
promise = promise.then(function () {
if (user.id != message.client.user.id) {
user.send(sendMessage);
sentMessages++;
return new Promise(function (resolve) {
setTimeout(resolve, interval);
});
}
});
message.channel.send(`Successfully sent ${sentMessages} messages!`);
});
无论何时何地,最后的消息(Successfully...)都会返回 0。 如果我在 sentMessages++; 下方添加如下一行:message.channel.send(`Sent: ${sentMessages});,我会得到一个预期的递增数字。 p>
我在哪里做错了什么?
【问题讨论】:
标签: node.js foreach promise discord.js increment