【问题标题】:Cannot read property 'roles' of undefined Discord.js无法读取未定义 Discord.js 的属性“角色”
【发布时间】:2019-01-25 11:31:44
【问题描述】:

我的 Discord 机器人有问题,它会成为棋盘游戏机器人(我希望如此)。因此,我尝试将他们的玩家编号分配给用户,例如第一个玩家将担任“玩家 1”等角色......但我总是遇到同样的问题:

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

TypeError:无法读取未定义的属性“角色” 在客户端。 (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\packets\handlers\MessageCreate.js:9:34)
在 WebSocketPacketManager.handle (C:\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:103:65)
在 WebSocketConnection.onPacket (C:\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:330:35)
在 WebSocketConnection.onMessage (C:\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:293:17)
在 WebSocket.onMessage (C:\node_modules\ws\lib\EventTarget.js:99:16)
在 emitOne (events.js:116:13)
在 WebSocket.emit (events.js:211:7)

我已经尝试过自己在 Google 上进行搜索,但我将这个机器人作为一种爱好,并且(还没有)对 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 ! ")
    }
})

【问题讨论】:

  • 永远不要使用文本图像。它们不可搜索,不可访问,并且难以在较小的屏幕尺寸上阅读。我已经为你打了出来,但以后你需要将任何代码复制到你的问题中,并使用内置的格式化控件正确格式化。
  • 好的,没问题,谢谢
  • @Alan 是在服务器上发送的消息还是直接消息?
  • @André 哪条消息? “Vous êtes dorénavant ....”必须在频道上发送,但控制台上的错误消息
  • 我的意思是您正在发送命令的消息。如果您通过直接消息发送,则该消息将没有公会

标签: bots roles discord


【解决方案1】:

试试这个:

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

编辑: 如果您使用的是 discord.js v12,请使用:

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

【讨论】:

    【解决方案2】:

    首先,您必须定义 myRole,

      // 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);
    

    【讨论】:

    • 我试过了,但我得到了和以前一样的错误,我不明白为什么 message.guild 是未定义的
    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 2022-01-13
    • 2020-12-29
    • 2021-08-10
    • 2022-01-14
    • 1970-01-01
    • 2020-08-17
    • 2020-12-14
    相关资源
    最近更新 更多