javascript - 未捕获的类型错误:member.hasPermission 不是函数
问题描述
几天前我开始制作一个不和谐的机器人。这一切都有效。但是,今天突然,它抛出一个错误“Uncaught TypeError: member.hasPermission is not a function”。这很奇怪,因为这一切都已经奏效了。这是一个脚本,其中使用了 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:', 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:', user, true)
msg.channel.send(log2)
}, time);
}
推荐阅读
- mysql - 从 MySQL 列中提取多个文本 URL
- gremlin - 如何在 Gremlin Server 上以编程方式在运行时创建新的图形实例
- laravel - 保护响应式文件管理器免受直接访问
- javascript - Nodejs 和 Express,使用来自工作线程的 res.send()
- python - KeyError:“record_id”用于在 record_id 上合并 CSV
- powershell - 如何在 EWS 中按标志状态过滤电子邮件?
- sql-server - Debezium Sql Server 连接器在一段时间不活动后不接收更新
- html - React - 如何修改根目录中的 html?
- keras - Keras 批量标准化“被破坏”:模型无法预测。它_真的_坏了吗?有解决办法吗?或者具体的文档有关?
- c++ - C++ - 可以帮助我将这个 for 循环转换为递归函数吗?