TypeError: Cannot read properties of undefined (reading 'hasPermission')
TypeError: Cannot read properties of undefined (reading 'hasPermission')
我又回来了,我的票务功能又回来了。这次我正在研究关闭命令。无论我尝试什么,我总是会遇到同样的错误:
TypeError: message.member.hasPermission is not a function
谁能看看代码?
const { MessageEmbed, Collection, Permissions } = require ('discord.js');
module.exports = {
name: 'close',
description: "closes the ticket",
execute(message, args, client){
if(!message.member.hasPermission("MANAGE_CHANNELS")) return message.channel.send("Only a moderator can end a ticket!")
if(message.member.hasPermission("MANAGE_CHANNELS")) message.channel.delete()
}
}
根据你对我的评论的回答,你似乎只是把论点放在了错误的顺序上。
你的函数定义为
execute(client, message, args)
所以你应该用相同的顺序调用它:
try {
command.execute(client, message, args); // `client` is first, not last
} catch (error) {
console.error(error);
message.channel.send('There was an error trying to execute that command!');
}
根据您对此答案的评论,它解决了最初的问题。现在 message.member
有值了!
但是现在member.hasPermission
好像不是函数。事实上它不是:当你查看 at the documentation 时,GuildMember 上没有 hasPermission
方法。
所以你必须弄清楚你到底需要什么,并查看文档以了解如何去做。
首先,您应该尝试阅读 docs and see what properties GuildMember actually has, just a quick look through it, you should be able to find a .permissions
, following from that, you'll get to this doc 权限 class。从那里,您可以看到可以使用 .has
函数。所以你的最终代码应该是
message.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)
此代码将检查成员是否具有 MANAGE_CHANNELS
的权限,并且由于 .permissions.has()
return 是一个布尔值,它将 return true 或 false,如果用户没有这样的权限它会 return 一条消息说他们不能使用命令,否则如果它会删除频道...
if(!message.member.permissions.has(Permissions.FLAGS.MANAGE_CHANNELS)) {
return message.channel.send("Only a moderator can end a ticket!")
} else {
return message.channel.delete()
}
我又回来了,我的票务功能又回来了。这次我正在研究关闭命令。无论我尝试什么,我总是会遇到同样的错误:
TypeError: message.member.hasPermission is not a function
谁能看看代码?
const { MessageEmbed, Collection, Permissions } = require ('discord.js');
module.exports = {
name: 'close',
description: "closes the ticket",
execute(message, args, client){
if(!message.member.hasPermission("MANAGE_CHANNELS")) return message.channel.send("Only a moderator can end a ticket!")
if(message.member.hasPermission("MANAGE_CHANNELS")) message.channel.delete()
}
}
根据你对我的评论的回答,你似乎只是把论点放在了错误的顺序上。
你的函数定义为
execute(client, message, args)
所以你应该用相同的顺序调用它:
try {
command.execute(client, message, args); // `client` is first, not last
} catch (error) {
console.error(error);
message.channel.send('There was an error trying to execute that command!');
}
根据您对此答案的评论,它解决了最初的问题。现在 message.member
有值了!
但是现在member.hasPermission
好像不是函数。事实上它不是:当你查看 at the documentation 时,GuildMember 上没有 hasPermission
方法。
所以你必须弄清楚你到底需要什么,并查看文档以了解如何去做。
首先,您应该尝试阅读 docs and see what properties GuildMember actually has, just a quick look through it, you should be able to find a .permissions
, following from that, you'll get to this doc 权限 class。从那里,您可以看到可以使用 .has
函数。所以你的最终代码应该是
message.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)
此代码将检查成员是否具有 MANAGE_CHANNELS
的权限,并且由于 .permissions.has()
return 是一个布尔值,它将 return true 或 false,如果用户没有这样的权限它会 return 一条消息说他们不能使用命令,否则如果它会删除频道...
if(!message.member.permissions.has(Permissions.FLAGS.MANAGE_CHANNELS)) {
return message.channel.send("Only a moderator can end a ticket!")
} else {
return message.channel.delete()
}