处理完所有案件后,Promise 仍未解决
Promise remains unresolved even after handling all cases
我已经在 Discord.JS Bot 上写了很长时间了,在执行其中一个聊天命令后,它似乎时不时地在控制台中抛出一个随机错误/警告
(特别是 !clear
)。
现在,正如我已经说过的,我在控制台中收到的消息是 警告,而不是实际错误,所以这是不是我遇到的主要问题;
我的问题在于 Discord 端命令的执行:由于未解决的拒绝承诺,它根本不会执行 !clear
,留下包括命令本身在内的所有消息。这是我的代码片段:
if (member.hasPermission("MANAGE_MESSAGES")) {
channel.fetchMessages({ limit: 100 })
.then(messages => {
console.log(`Deleting ${messages.size} messages...`);
channel.bulkDelete(messages).then(res => {}, err => {});
channel.sendEmbed({
// Success Message
}).then(msg => msg.delete(10000), err => console.log(err));
}, err => { console.log(err) })
} else {
channel.sendEmbed({
// Permission Message
}).then(msg => msg.delete(10000), err => { console.log(err) });
}
如您所见,我解决了每个 Promise 的 success 和 failure 状态,但我仍然会看到以下内容控制台警告:
(node:14768) Error: Bad Request Sometimes also throws Not Found
-- Stack Trace that only includes internal Node.JS errors --
(node:14768) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
-- More Stack Trace not regarding any of my own code --
如果你们中的任何人需要提供额外的代码来回答问题,请随时问我,我会这样做的。另外,我还不能 +rep 回答,但我总是很感激他们 :)
您没有处理 msg.delete(10000)
拒绝。你应该这样处理:
channel.sendEmbed({
// Success Message
}).then(msg => msg.delete(10000)).catch(err => console.log(err));
我已经在 Discord.JS Bot 上写了很长时间了,在执行其中一个聊天命令后,它似乎时不时地在控制台中抛出一个随机错误/警告
(特别是 !clear
)。
现在,正如我已经说过的,我在控制台中收到的消息是 警告,而不是实际错误,所以这是不是我遇到的主要问题;
我的问题在于 Discord 端命令的执行:由于未解决的拒绝承诺,它根本不会执行 !clear
,留下包括命令本身在内的所有消息。这是我的代码片段:
if (member.hasPermission("MANAGE_MESSAGES")) {
channel.fetchMessages({ limit: 100 })
.then(messages => {
console.log(`Deleting ${messages.size} messages...`);
channel.bulkDelete(messages).then(res => {}, err => {});
channel.sendEmbed({
// Success Message
}).then(msg => msg.delete(10000), err => console.log(err));
}, err => { console.log(err) })
} else {
channel.sendEmbed({
// Permission Message
}).then(msg => msg.delete(10000), err => { console.log(err) });
}
如您所见,我解决了每个 Promise 的 success 和 failure 状态,但我仍然会看到以下内容控制台警告:
(node:14768) Error: Bad Request Sometimes also throws Not Found
-- Stack Trace that only includes internal Node.JS errors --
(node:14768) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
-- More Stack Trace not regarding any of my own code --
如果你们中的任何人需要提供额外的代码来回答问题,请随时问我,我会这样做的。另外,我还不能 +rep 回答,但我总是很感激他们 :)
您没有处理 msg.delete(10000)
拒绝。你应该这样处理:
channel.sendEmbed({
// Success Message
}).then(msg => msg.delete(10000)).catch(err => console.log(err));