类型错误:无法读取未定义的属性“first”
2020-08-28
1280
client.on('message', (message) => {
const { member, mentions } = message;
const tag = `<@${member.id}>`;
if (message.content.startsWith(`${prefix}ban`)) {
if (
member.hasPermission('ADMINISTRATOR') ||
member.hasPermission('BAN_MEMBERS')
) {
const target = mentions.user.first();
if (target) {
const targetMember = message.guild.members.cache.get(target.id);
targetMember.ban();
message.channel.send(
`${tag} Cet.te ancien.ne membre a été bannii avec succès !`
);
} else {
message.channel.send(`${tag} Merci de spécifier le membre à bannir.`);
}
} else {
message.channel.send(
`${tag} Tu n'as pas la permission d'effectuer cette commande.`
);
}
}
});
我不确定我的代码中有什么错误,任何帮助都非常感谢!我也会接受任何关于如何改进此代码的建议。
2个回答
user
不是
mentions
的属性。而是使用
users
:
mentions.users.first();
另外,作为一个建议,不要将 mention 作为
User
对象,然后将其转换为
GuildMember
对象,而是可以直接跳到
GuildMember
对象。
// instead of:
const target = mentions.users.first();
// use:
const target = mentions.members.first();
mentions.users
返回一个该消息中提到的每个用户的集合。您正在获取第一个
User
对象(第一次提及)。
然后,您使用
Guild.member()
函数
将该
User
对象转换为
GuildMember
对象:
message.guild.members.cache.get(target.id);
但是
,
message.members
返回提及的每个
GuildMember
的集合,从而无需转换
User
对象稍后会在代码中更改为
GuildMember
,因为它已经是
GuildMember
。
Lioness100
2020-08-28
它实际上是 mentions.user s .first() 。 请参阅 文档 。
2020-08-28