如何解决无法读取未定义的属性“first”
我正在尝试为我的不和谐机器人发出静音命令,但出现错误:
Cannot read property 'first' of undefined
const BaseCommand = require('../../utils/structures/BaseCommand');
const discord = require('discord.js');
const MuteroleCommand = require('./MuteroleCommand');
const { muterole } = require('./MuteroleCommand.js')
module.exports = class MuteCommand extends BaseCommand {
constructor() {
super('mute','moderation',[]);
}
async run(client,message,args) {
if(!message.member.hasPermission("MUTE_MEMBERS")) return message.channel.send("You do not have Permission to use this command.");
if(!message.guild.me.hasPermission("MUTE_MEMBERS")) return message.channel.send("I do not have Permissions to mute members.");
const Embedhelp = new discord.MessageEmbed()
.setTitle('Mute Command')
.setColor('#6DCE75')
.setDescription('Use this command to Mute a member so that they cannot chat in text channels nor speak in voice channels')
.addFields(
{ name: '**Usage:**',value: '=mute (user) (time) (reason)'},{ name: '**Example:**',value: '=mute @Michael stfu'},{ name: '**Info**',value: 'In order for the command to work,a muterole must be provided. this can be done by "=muterole <role ID>"\nYou cannot mute yourself.\nYou cannot mute me.\nYou cannot mute members with a role higher than yours\nYou cannot mute members that have already been muted'}
)
.setFooter(client.user.tag,client.user.displayAvatarURL());
const mentionedMember = message.mentions.member.first() || await message.guild.members.fetch(args[0]);
let reason = args.slice(1).join(" ");
const banEmbed = new discord.MessageEmbed()
.setTitle('You have been Muted in '+message.guild.name)
.setDescription('Reason for Mute: '+reason)
.setColor('#6DCE75')
.setTimestamp()
.setFooter(client.user.tag,client.user.displayAvatarURL());
if (!reason) reason = 'No reason provided';
if (!args[0]) return message.channel.send(Embedhelp);
if (!mentionedMember) return message.channel.send(Embedhelp);
if (!mentionedMember.bannable) return message.channel.send(Embedhelp);
if (mentionedMember.user.id == message.author.id) return message.channel.send(Embedhelp);
if (typeof muterole === undefined) return message.channel.send(Embedhelp);
if (mentionedMember.user.id == client.user.id) return message.channel.send(Embedhelp);
if (mentionedMember.roles.cache.has(muterole.id)) return message.channel.send(Embedhelp);
if (message.member.roles.highest.position <= mentionedMember.roles.highest.position) return message.channel.send(Embedhelp);
await mentionedMember.send(banEmbed).catch(err => console.log(err));
await mentionedMember.roles.add(muterole.id).catch(err => console.log(err).then(message.channel.send('There was an error while muting the member')))
}
}
我不确定为什么会出现这个错误,我也不确定这段代码中是否还有更多错误,我很想知道问题是什么。
解决方法
根据 Discord js Documentation 是 message.mentions.members.first() 而不是 message.mentions.member.first()
问题出在这一行:
const mentionedMember = message.mentions.member.first() || await message.guild.members.fetch(args[0]);
您的问题似乎是 message.mentions.member
未定义
MessageMentions 类不包含名为 member
的字段,但它确实有一个名为 members
的字段,我认为这正是您要查找的内容。
将 member
替换为 members
,您应该可以开始使用了! :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。