Javascript discord.js未处理的承诺拒绝警告:TypeError:无法读取属性';包括';空的
我最近为我的机器人制作了一个自动角色代码,它读取每个用户的状态,如果他们的状态中有我们的服务器虚荣邀请链接,就给他们一个角色。代码工作正常,机器人添加角色,然后删除角色,但这里的问题是它在错误中循环,而不会使机器人崩溃:Javascript discord.js未处理的承诺拒绝警告:TypeError:无法读取属性';包括';空的,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我最近为我的机器人制作了一个自动角色代码,它读取每个用户的状态,如果他们的状态中有我们的服务器虚荣邀请链接,就给他们一个角色。代码工作正常,机器人添加角色,然后删除角色,但这里的问题是它在错误中循环,而不会使机器人崩溃: (node:38) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'includes' of null (node:38) UnhandledPromiseRejectionWarning:
(node:38) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'includes' of null
(node:38) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 345)
我很确定这是因为机器人无法读取离线用户的状态,而这些用户没有状态。我很感谢你的帮助,因为我想不出解决办法。
这是我的代码:
client.on('presenceUpdate', async (oldPresence, newPresence) => {
const role = newPresence.guild.roles.cache.get("832132526302035992");
const member = newPresence.member
const activities = member.user.presence.activities[0];
if (activities && (activities.state.includes( ".gg/moonxile" ) || activities.state.includes("discord.gg/moonxile" ))) {
return newPresence.member.roles.add(role)
.catch(err => {
console.log(err)
return;
})
} else {
if(member.roles.cache.get(role.id)) {
newPresence.member.roles.remove(role)
.catch(err => {
console.log(err)
return;
})
}
}
});
首先检查
活动
,然后检查活动。状态
,最后包括.include()
,当一些人从“存在”状态更改为“无”时,它将没有数据,因此应进行检查
if(activities&&activities.state&&activities.state.includes(“.gg/moonxile”)| | activities.state.includes(“discord.gg/moonxile”)){
返回newPresence.member.roles.add(角色)
.catch(错误=>{
console.log(错误)
返回;
})
}
哦,好吧,让我试试看。好吧,控制台中充斥着这样的内容:(节点:174)未处理PromisejectionWarning:TypeError:无法读取未定义(节点:174)未处理PromisejectionWarning:Unhandled Promisejection的属性“状态”。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志--unhandled rejections=strict(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (拒绝id:5)
哦,好吧。更新。好的,让我试试看。我试过了,我得到了机器人在用户离线时删除角色,并在他/她恢复在线时将其添加回来。这是控制台显示的另一个问题错误。你能提供更多信息吗?你有没有收到错误当用户离线时,机器人会删除角色,当他/她恢复在线时会将角色添加回来–>如果你想防止这种行为,你必须检查用户状态是否未处于离线状态,并更改其状态哦,好的,让我这样做