command - 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" + ('✅'))
}
}
}
);
如果你能帮助我会很高兴
解决方案
您是否尝试在 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...
})
推荐阅读
- hibernate - JPA,休眠find()方法返回null
- kubernetes - 根据一天中的时刻自动缩放 k8s pod
- mysql - SQL - 如何将整个表中的字符替换为 100 列?
- angular - Angular 5 - 图像在上传到磁盘存储后不加载
- sonarqube - 以编程方式配置 sonarqube webhook
- genymotion - Linux Mint 18.3 和 genymotion
- google-sheets-api - 公共工作表 - 使用 api 密钥获取访问权限可以工作几天,然后权限被拒绝
- ruby-on-rails - Rails/ERB 视图不显示从控制器传递的变量,但迭代数组有效
- sql - 如何在 PROC SQL 中使用 CATS 引用 SAS 变量?
- python - 错误导入 urllib 和导入 http.client