微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

未捕获的类型错误:member.hasPermission 不是函数

如何解决未捕获的类型错误: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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?