首页 > 解决方案 > discord.js 无法读取未定义的属性“id”

问题描述

我正在写一个不和谐的机器人,当有人说一个特定的词时,它会临时分配一个角色。我的代码一直返回以下错误,即使我认为我的代码中没有任何错误。

message.member.roles.add(role555.id);
                                 ^

TypeError: Cannot read property 'id' of undefined` 

这是我的代码:

async function bannedword(message) {
    let role555 = message.guild.roles.cache.get((r) => r.name === "Quarantined");

    setTimeout(() => {
        message.member.roles.add(role555.id);
    }, ms("1s"));
    setTimeout(() => {
        message.member.roles.remove(role555.id);
    }, ms("30m"));
}

client.on("message", (message) => {
    if (message.content.includes("fart") && message.author.bot == false && isolations == true) {
        bannedword(message);
        message.channel.send(publicquarantined);
        message.author.send(dmquarantined);
    }
});

消息和 dm 已发送并且工作正常,但由于某种原因,未分配角色并吐出此错误。

标签: javascriptnode.jsdiscorddiscord.js

解决方案


这不是如何get()工作的。get() 需要一个Snowflake。我想你正在寻找的是find(). 在您的情况下,如果条件存在,find()方法将起作用并返回。


推荐阅读