通过DM向特定行业的用户添加角色

时间:2020-04-11 21:26:18

标签: discord.js

当我尝试

message.member.roles.add('695699359634817094');

我收到以下错误:

TypeError: Cannot read property 'add' of undefined

是否有通过DM添加公会ID并将其角色更新到该特定服务器的特定方法?

我的函数通过调用命令在行会中起作用,但是,通过DM不能。

2 个答案:

答案 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]');
}