.hasPermissions not working? Type Error: Cannot read property of undefined client?
.hasPermissions not working? Type Error: Cannot read property of undefined client?
我和我的朋友们正在尝试制作一个 Discord 机器人。我们目前正在尝试发出踢球命令。但是,当我们尝试踢一个没有角色且只有基本权限的成员时,它不起作用并且此错误出现在 Repl.it 控制台上:
if(member.hasPermission("ADMINISTRATOR"))
^
TypeError: Cannot read property 'hasPermission' of undefined
at Client.client.on.msg
然后是整个错误段落。
这是我们的代码:
我曾尝试寻找解决方案,但找不到任何解决方案。我发现的大多数网站都使用 has.Permission() 并且在 post 和 GitHub 上说使用 perm.has 但显然 "perm" 未定义。这是 Github post: https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/understanding/roles.md
const Discord = require('discord.js');
const client = new Discord.Client();
const token = process.env.DISCORD_BOT_SECRET;
client.on('ready', () => {
console.log("I'm in. My prefix is &.");
console.log(client.user.username);
});
client.on('message', msg => {
if (msg.author.id != client.user.id)
{
if(msg == "&help")
{
msg.channel.send("Here are some commands you can do! (prefix is &):");
}
if (msg.content.startsWith("&kick"))
{
if(member.hasPermission("ADMINISTRATOR"))
{
// Easy way to get member object though mentions.
var member = msg.mentions.members.first();
// Kick
member.kick().then((member) => {
// Successmessage
message.channel.send(member.displayName + " has been successfully kicked!");
}).catch(() => {
// Failmessage
msg.channel.send("Access Denied");
});
}
}
}
});
client.login(token);
您似乎没有设置 member
变量,或者您使用了不正确的变量来引用 运行 命令中的用户。
您可以将 member
变量设置为调用命令的成员,但由于您只使用它一次,所以最好直接使用它。
...
if (msg.content.startsWith("&kick"))
{
// Get the member calling the command.
if(msg.member.hasPermission("ADMINISTRATOR"))
...
请注意,如果此命令是 运行 在直接消息中,则给定的解决方案将导致问题。
我和我的朋友们正在尝试制作一个 Discord 机器人。我们目前正在尝试发出踢球命令。但是,当我们尝试踢一个没有角色且只有基本权限的成员时,它不起作用并且此错误出现在 Repl.it 控制台上:
if(member.hasPermission("ADMINISTRATOR"))
^
TypeError: Cannot read property 'hasPermission' of undefined
at Client.client.on.msg
然后是整个错误段落。
这是我们的代码:
我曾尝试寻找解决方案,但找不到任何解决方案。我发现的大多数网站都使用 has.Permission() 并且在 post 和 GitHub 上说使用 perm.has 但显然 "perm" 未定义。这是 Github post: https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/understanding/roles.md
const Discord = require('discord.js');
const client = new Discord.Client();
const token = process.env.DISCORD_BOT_SECRET;
client.on('ready', () => {
console.log("I'm in. My prefix is &.");
console.log(client.user.username);
});
client.on('message', msg => {
if (msg.author.id != client.user.id)
{
if(msg == "&help")
{
msg.channel.send("Here are some commands you can do! (prefix is &):");
}
if (msg.content.startsWith("&kick"))
{
if(member.hasPermission("ADMINISTRATOR"))
{
// Easy way to get member object though mentions.
var member = msg.mentions.members.first();
// Kick
member.kick().then((member) => {
// Successmessage
message.channel.send(member.displayName + " has been successfully kicked!");
}).catch(() => {
// Failmessage
msg.channel.send("Access Denied");
});
}
}
}
});
client.login(token);
您似乎没有设置 member
变量,或者您使用了不正确的变量来引用 运行 命令中的用户。
您可以将 member
变量设置为调用命令的成员,但由于您只使用它一次,所以最好直接使用它。
...
if (msg.content.startsWith("&kick"))
{
// Get the member calling the command.
if(msg.member.hasPermission("ADMINISTRATOR"))
...
请注意,如果此命令是 运行 在直接消息中,则给定的解决方案将导致问题。