如何修复无法读取未定义的属性'channels'



我想制作一个不和谐的机器人程序。 当新人进入服务器时,他们必须键入!daftar才能享受服务器。 当他们输入时!daftar消息列表将出现在 #welcome 频道上。 但是我收到标题中的错误。 这是我的代码

const { GuildMember } = require("discord.js");
module.exports = {
name: 'daftar',
description: "This is for add roles to a member",
execute(message, args) {
let role = message.guild.roles.cache.find(r => r.name === "Members")
if (message.member.roles.cache.some(r => r.name === "Members")) {
message.channel.send('Kamu sudah menjadi MEMBER Di grup ini');
} else {
message.member.roles.add('817360044622217276');
message.member.roles.remove('817965925122048010');
message.channel.send('Baiklah silahkan menikmati Server');
GuildMember.guild.channels.cache.get('817957997312737290').send(`Selamat Datang <@${GuildMember.user.id}>`)
}

}
}
GuildMember

没有完全定义。是的,您正在将其解构为discord.js的属性,但它并没有完全定义为成员的实际身份。现在它只是一个不属于任何人的空对象,这意味着它本身也没有属性,因为它不知道它指的是什么。

假设您要将角色授予键入此命令的成员,则必须使GuildMember对象成为在参数中定义为messageMessage对象的属性。我们可以使用message=>message.membermember属性获取此对象。

现在,假设您要向其发送消息的通道与message对象位于同一公会中,那么使用GuildMember对象查找某个通道是没有意义的,而我们可以改用Message对象,如下所示:

最终代码

module.exports = {
name: 'daftar',
description: "This is for add roles to a member",
execute(message, args) {
let role = message.guild.roles.cache.find(r => r.name === "Members")
if (message.member.roles.cache.some(r => r.name === "Members")) {
message.channel.send('Kamu sudah menjadi MEMBER Di grup ini');
} else {
message.member.roles.add('817360044622217276');
message.member.roles.remove('817965925122048010');
message.channel.send('Baiklah silahkan menikmati Server');
message.guild.channels.cache.get('817957997312737290').send(`Selamat Datang <@${GuildMember.user.id}>`)    
}
}
}

最新更新