【发布时间】:2019-09-11 18:41:20
【问题描述】:
我的机器人日志中有这个错误
-(node:315) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'get' of undefined
at guildInvites.find.i (/app/server.js:477:46)
at Map.find (/rbd/pnpm-volume/e510aebc-aa8d-41e6-bdbe-632fceb24fc5/node_modules/.registry.npmjs.org/discord.js/11.5.1/node_modules/discord.js/src/util/Collection.js:506:11)
at member.guild.fetchInvites.then.guildInvites (/app/server.js:477:33)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
(node:315) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 355)
这是代码
const invites = {};
const wait = require('util').promisify(setTimeout);
client.on('ready', () => {
wait(1000);
client.guilds.forEach(g => {
g.fetchInvites().then(guildInvites => {
invites[g.id] = guildInvites;
});
});
});
member.guild.fetchInvites().then(guildInvites => {
const ei = invites[member.guild.id];
invites[member.guild.id] = guildInvites;
const invite = guildInvites.find(i => ei.get(i.code).uses < i.uses);
const inviter = client.users.get(invite.inviter.id);
if(!inviter) inviter = `I can\'t figure out how ${member.displayName} joined the server.`;
我不知道如何解决它,这不是所有代码,我只是发送了一部分代码,但这是错误所在
请有人告诉我如何处理 Promise bc 我认为这是问题所在 例如这是一个代码我该如何处理它
client.on("message", async message=>{
if (message.isMentioned(client.user)){
let msg = await message.channel.send("xxx")
msg.edit(`xxx`)
}
});
【问题讨论】:
-
Ì如果
invites中没有针对特定公会的邀请,则 ei 将为空/未定义并导致此问题。您需要在代码中处理这种情况 -
虽然我错过了下一行的第二个
get-client.users.get。这也可能是来源 -
好的,我该如何处理
-
@fredrik 如果在事件发出时定义了变量,则机器人没有缓存来比较当前邀请;它需要在监听器被执行之前设置。
标签: javascript node.js discord.js