如何解决未捕获的类型错误:member.hasPermission 不是函数
几天前我开始制作一个不和谐的机器人。这一切都有效。但是,今天突然,它抛出一个错误“未捕获的类型错误:member.hasPermission 不是函数”。这很奇怪,因为这一切都奏效了。 这是一个脚本,其中使用了 member.hasPermission。
var discord = require('discord.js');
var ms = require('ms');
exports.run = async(client,msg,args) => {
if(!msg.member.hasPermission('MANAGE_MESSAGES')) return msg.reply('Du kannst das nicht benutzen!');
var user = msg.mentions.users.first();
if(!user) {
msg.channel.send("\`\`\`\nMute: \nArg1: [User]\nArg2: [Time] - - - s = Sekunde | m = Minute | d = Tag \nArg3: [Grund]\nBsp : +mute @Test 15m spam\n\`\`\` ")
}
var member;
try {
member = await msg.guild.members.fetch(user);
} catch(err) {
member = null;
}
if(!member) return msg.reply('Sie sind nicht auf dem Server!');
if(member.hasPermission('MANAGE_MESSAGES')) return msg.reply('Du kannst diese Person nicht muten!');
var rawTime = args[1];
var time = ms(rawTime);
if(!time) return msg.reply('Du hast keine Zeit angegeben!');
var reason = args.splice(2).join(' ');
if(!reason) return msg.reply('Du musst einen Grund angeben!');
var channel = msg.guild.channels.cache.find(c => c.name === 'potato');
var log = new discord.MessageEmbed()
.setTitle('User Muted')
.addField('User:',user,true)
.addField('By:',msg.author,true)
.addField('Expires:',rawTime)
.addField('Reason:',reason)
msg.channel.send(log)
var embed = new discord.MessageEmbed()
.setTitle('You were muted!')
.addField('Expires:',rawTime,true)
.addField('Reason:',reason,true);
try {
user.send(embed);
} catch(err) {
console.warn(err);
}
var role = msg.member.guild.roles.cache.find(role => role.name === "Muted");
await member.roles.add(role);
setTimeout(async() => {
member.roles.remove(role);
var log2 = new discord.MessageEmbed()
.setTitle('User unmuted')
.addField('User:',true)
msg.channel.send(log2)
},time);
}
解决方法
var Discord = require('discord.js');
var ms = require('ms');
exports.run = async(client,msg,args) => {
if(!msg.member.hasPermission('MANAGE_MESSAGES')) return msg.reply('Du kannst das nicht benutzen!');
var user = msg.mentions.users.first();
if(!user) {
msg.channel.send("\`\`\`\nMute: \nArg1: [User]\nArg2: [Time] - - - s = Sekunde | m = Minute | d = Tag \nArg3: [Grund]\nBsp : +mute @Test 15m spam\n\`\`\` ")
}
var member;
try {
member = await msg.guild.members.cache.get(user);
} catch(err) {
member = null;
}
if(!member) return msg.reply('Sie sind nicht auf dem Server!');
if(member.hasPermission('MANAGE_MESSAGES')) return msg.reply('Du kannst diese Person nicht muten!');
var rawTime = args[1];
var time = ms(rawTime);
if(!time) return msg.reply('Du hast keine Zeit angegeben!');
var reason = args.splice(2).join(' ');
if(!reason) return msg.reply('Du musst einen Grund angeben!');
var channel = msg.guild.channels.cache.find(c => c.name === 'potato');
var log = new Discord.MessageEmbed()
.setTitle('User Muted')
.addField('User:',user,true)
.addField('By:',msg.author,true)
.addField('Expires:',rawTime)
.addField('Reason:',reason)
msg.channel.send(log)
var embed = new Discord.MessageEmbed()
.setTitle('You were muted!')
.addField('Expires:',rawTime,true)
.addField('Reason:',reason,true);
try {
user.send(embed);
} catch(err) {
console.warn(err);
}
var role = msg.member.guild.roles.cache.find(role => role.name === "Muted");
await member.roles.add(role);
setTimeout(async() => {
member.roles.remove(role);
var log2 = new Discord.MessageEmbed()
.setTitle('User unmuted')
.addField('User:',true)
msg.channel.send(log2)
},time);
}
,
解决办法是
msg.member.roles.cache.map(role => role.name).join(",")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。