javascript - discord.js DiscordAPIError:未知消息
问题描述
我有数组,我正在通过嵌入上的反应循环。当按下反应时,应删除该消息并再次循环该功能。在第二反应新闻中,我收到此错误:
(node:12908) UnhandledPromiseRejectionWarning: DiscordAPIError: Unknown Message
在第一次后的每一次反应压力机上,打印的错误量都会增加一倍。
代码:
function movieChoiceEmbed(movies, message, count)
{
pagecount = count;
message.channel.send({embed: {
color: '#D733FF',
title: 'Choose movie',
fields: [
{
name: movies[pagecount].title,
value: movies[pagecount].description,
inline: true,
},
{
name: movies[pagecount+1].title,
value: movies[pagecount+1].description,
inline: true,
},
{
name: '\u200b',
value: '\u200b',
inline: false,
},
{
name: movies[pagecount+2].title,
value: movies[pagecount+2].description,
inline: true,
},
{
name: movies[pagecount+3].title,
value: movies[pagecount+3].description,
inline: true,
},
],
timestamp: new Date(),
footer: {
icon_url: client.user.displayAvatarURL(),
text: 'Andrea Gafa'
}
}})
.then(sentEmbed => {
sentEmbed.react("⏪");
sentEmbed.react("⏩");
})
.catch();
client.on("messageReactionAdd", async (reaction, user) => { // When a reaction is added
if(user.bot) return;
if(reaction.emoji.name == "⏪")
{
await reaction.message.delete();
count -= 4;
movieChoiceEmbed(movies, message, count);
}else if(reaction.emoji.name == "⏩")
{
await reaction.message.delete();
count += 4;
movieChoiceEmbed(movies, message, count);
}
return;
});
}
我尝试删除最后一条消息,但结果相同:
await message.channel.lastMessage.delete();
有什么线索吗?我很迷失在这里。
编辑:
函数内部的 messagereactionadd 事件似乎是问题所在。把它放在外面可以解决问题。
解决方案
你的错误是因为你得到了一个没有被抓住的承诺。您有几个异步调用并返回承诺,其中一个或多个导致错误。我会向它们添加 catch 块,然后这将帮助您找出问题所在。例如:
await reaction.message.delete();
可以改为:
await reaction.message.delete()
.then(() { /* do something if interested */ })
.catch(err => { console.error(err); });
将此添加到您承诺的所有功能中,您就会知道问题出在哪里。
现在至于错误本身,您正在尝试删除一条可能已被删除的消息。您是要删除反应还是消息?如果您删除了一条消息,然后在随后的通话中尝试对这条消息进行处理,那就是问题所在。
推荐阅读
- java - JavaFX Eclipse 建议导入不存在
- python - 仅使用 coverage.py 计算测试覆盖率以使用 anybadge 创建 gitlab 徽章
- maven - 为什么在 Maven 项目中强制执行 apache-rat-plugin?
- jquery - jQuery:数据未加载:ERR_FAILED / ERR_HTTP2_PROTOCOL_ERROR / ERR_CONNECTION_CLOSED
- postman - Postman 客户端:无法设置请求正文(显示忙碌指示符)
- c - C指针和int之间的int乘法问题
- android - 如果您丢失了密钥,如何在 Google Play 控制台中更新应用程序?
- reactjs - 为什么我的减速器没有在组件中显示它的值?
- r - 是否可以在 R 数据框中将列值上移一位?
- networking - 特定命名空间上每个虚拟以太网接口的多个路由网关