首页 > 解决方案 > TypeError:无法读取 null 的属性“角色”

问题描述

我试图创建一个-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" + ('✅'))
            }
    }  
}
    
);

如果你能帮助我会很高兴

标签: commanddiscorddiscord.jsbots

解决方案


您是否尝试在 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...
})

推荐阅读