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

问题描述

我想尝试修复此错误,但我不知道我如何使用代码:


const rainPerms = [
    "MANAGE_ROLES",
    "ADMINISTRATOR"
  ];

    let place = 0;
    const servers = ["111111111111111111", "222222222222222222"] //fake ID
    const Guilds = client.guilds.cache.map(guild => guild.id);
    const Server = Guilds
    function changeColor() {
        for (let index = 0; index < servers.length; ++index) {
            let server = client.guilds.cache.get(servers[index]);
            let role = server.roles.cache.find(r => r.name === 'Rainbow');
            role.setColor(rainbow[place]).catch;
            if (!rainPerms) {
            }
            continue;
            }
        }
        if (place == (size - 1)) {
            place = 0;
        } else {
            place++;
        }
    client.on('ready', () => {
        setInterval(changeColor, 60000);
        changeColor();
    });

我的错误是:

let role = server.roles.cache.find(r => r.name === 'Rainbow');
                  ^
                    
TypeError: Cannot read property 'roles' of undefined

我已经搜索了所有内容,但找不到太多我能理解的内容,有人可以解释一下这里到底发生了什么吗?谢谢!

标签: javascriptnode.jsdiscord.js

解决方案


如果您使用的是 v12/v13,我不建议使用角色缓存,而是使用异步函数。

获得公会:

let guild = await client.guilds.fetch('id')

并获得一个角色:

let role = await guild.roles.fetch('id')

推荐阅读