当我尝试
message.member.roles.add('695699359634817094');
我收到以下错误:
TypeError: Cannot read property 'add' of undefined
是否有通过DM添加公会ID并将其角色更新到该特定服务器的特定方法?
我的函数通过调用命令在行会中起作用,但是,通过DM不能。
答案 0 :(得分:1)
您可以使用message.author.id
获取用户的ID,然后使用guild.get(guild_ID).members.fetch(user_ID)
访问该用户的GuildMember
。
您还提到,您使用户能够在DM或行会中的文本通道中运行该命令。
如果是这种情况,我建议添加检查以查看命令是发送到文本通道还是dm通道。
if (message.channel.type === "dm") {
const member = await client.guilds.get(guild_ID).members.fetch(message.author.id);
member.roles.add(role_ID);
} else {
message.member.roles.add('695699359634817094');
}
如果打算仅从dm运行命令,请忽略if语句。
答案 1 :(得分:0)
通过使用Syntle和tipakA提供的信息,这是解决方案。
if (message.channel.type === "dm") {
client.guilds.get('[SeverId]').members.fetch(message.author.id).then(async () => {
await client.guilds.get('[ServerId]').members.fetch(message.author.id).then((memberid) => {
memberid.roles.add('[roleid]');
}).catch((err) => {
console.log("ERROR");
});
});
}
else
{
message.member.roles.add('[roleid]');
}