【问题标题】:TypeError: Cannot read property 'roles' of nullTypeError:无法读取 null 的属性“角色”
【发布时间】:2021-02-26 17:47:27
【问题描述】:

我试图创建一个 -clear (amount) 命令,并且 coomand 做得很好,但权限没有 这就是我得到的错误

TypeError: Cannot read property 'roles' of null
    at Client.<anonymous> (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\main.js:448:23)
    at Client.emit (events.js:327:22)
    at MessageCreateAction.handle (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (C:\Users\elyas\OneDrive\שולחן העבודה\discordbot\node_modules\ws\lib\websocket.js:825:20)

这里是代码:

client.on('message', message => {
    let args = message.content.substring(PREFIX.length).split(" ");
    const deltef = args[1]
    const amount = parseInt(args[1]);
    if(message.member.roles.cache.has('715841880482512897')) {
        if(args[0] == 'clear') {
            if (isNaN(amount)) {
                 message.reply('that doesn\'t seem to be a valid number.');
            } else if (amount < 2 || amount > 100) {
                 message.reply('you need to input a number between 2 and 100.');
            }  
            else if (amount > 2 || amount < 100)
                message.channel.bulkDelete(args[1]);
                message.channel.send("deleted" + " " + deltef + " " + "messages" + ('✅'))
            }
    }  
}
    
);

如果你能帮到我,我会很高兴

【问题讨论】:

    标签: command discord discord.js bots


    【解决方案1】:

    您是否尝试在 DM 中使用此命令?因为根据 Discord.JS 文档,message.member 仅在公会中可用,如果您尝试在 DM 中使用它意味着undefined

    https://discord.js.org/#/docs/main/master/class/Message?scrollTo=member

    我建议只对公会使用命令,这样就不会发生这种情况。

    client.on('message', message => {
      if (message.author.bot || message.channel.type === "dm") return;
      // your code...
    })
    

    【讨论】:

    • 但是现在每个人都可以使用我需要的命令,只有具有特定角色的人才能做到
    • 最重要的是修复了错误。如果您想将其限制为仅具有特定角色的用户,您仍然可以使用 this 之类的东西来执行此操作(上面的代码可能需要根据您想要使用它的方式进行更改)
    猜你喜欢
    • 2021-03-02
    • 2021-07-18
    • 1970-01-01
    • 2022-07-24
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多