[英]TypeError: Cannot read property 'first' of undefined
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.`
);
}
}
});
I'm not sure what the error in my code is, any help is appreciated!我不确定我的代码中的错误是什么,任何帮助表示赞赏! I would also take any suggestions on how to improve this code in general.
我还会就如何改进此代码提出任何建议。
user
is not a property of mentions
. user
不是mentions
的属性。 Instead use users
:而是使用
users
:
mentions.users.first();
MessageMentions
docs MessageMentions
文档
Also, as a bit of a suggestion, instead of getting the mention as a User
object, then turning it into a GuildMember
object, you could just skip straight to the GuildMember
object.另外,作为一个建议,您可以直接跳到
GuildMember
对象,而不是将提及作为User
对象,然后将其转换为GuildMember
对象。
// instead of:
const target = mentions.users.first();
// use:
const target = mentions.members.first();
mentions.users
returns a collection of every user that was mentioned in that message. mentions.users
返回该消息中提到的每个用户的集合。 You are taking the first User
object (first mention).您正在获取第一个
User
对象(第一次提及)。
You are then turning that User
object into a GuildMember
object using the Guild.member()
function :然后使用
Guild.member()
函数将该User
对象转换为GuildMember
对象:
message.guild.members.cache.get(target.id);
However , message.members
returns a collection of every GuildMember
that was mentioned, eliminating the need to convert a User
object to a GuildMember
later in your code, as it would already be a GuildMember
.但是,
message.members
返回提到的每个GuildMember
的集合,无需稍后在代码GuildMember
User
对象转换为GuildMember
,因为它已经是GuildMember
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.