提问者:小点点

无法读取未定义的discord.js的属性“roles”


我有一个问题与我的不和机器人,这将是一个棋盘游戏机器人(我希望)。所以,我试着给用户分配他们的玩家号码,比如第一个玩家会有角色‘玩家1’等等。但我总是有同样的问题:

let role = message.guild.roles.find("480091776468647936");
                         ^

TypeError:无法读取客户端未定义得属性“roles”。(C:\users\alant\desktop\informatique-développement\shadow bot\shadow_bot.js:54:32)
位于emitOne(events.js:121:20)
位于client.emit(events.js:211:7)
位于messageCreateHandler.handle(C:\node_modules\discord.js\src\client\websocket\packethandlers\messageCreate.js:9:34)
位于

我已经试过自己在谷歌上搜索了,但是我做这个机器人只是一个爱好,对JavaScript还没有很深的了解,所以我希望能得到一些帮助。(如果我的英语不好,很抱歉,我不是来自讲英语的国家)

bot.on('message', function(message) {
    var message = message.content;
    if (message === "joueur  1") {
        membre = message.author;
        let role = message.guild.role.find("480091776468647936");
        membre.addRole(role);
        message.channel.send("Vous etas doreavant le joueur 1 ! ")
    }
})

共2个答案

匿名用户

请尝试以下操作:

let myRole = message.guild.roles.find(x => x.name === "Moderators");

编辑:如果您处于discord.jsv12中,请使用以下命令:

let role = message.guild.roles.cache.find("480091776468647936");

匿名用户

首先,你必须定义我的角色,

  // get role by ID
let myRole = message.guild.roles.get("264410914592129025");

// get role by name
let myRole = message.guild.roles.find("name", "Moderators");

选一个吧。

if (command === "addroletome") {

// Add the role!
  message.author.addRole(role).catch(console.error);
message.channel.send("Successfully assigned the role! ")
}

好处:你可以很容易地修改它来删除角色

// Remove a role!
message.author.removeRole(role).catch(console.error);