DiscordJS:向用户数组添加角色

时间:2020-05-11 21:37:50

标签: javascript discord.js

玩赠品脚本,我想让它为每个获胜者增加角色。我知道我很可能必须将User转换为guildMember-但不确定在这种情况下如何做。

DiscordJS 12

manager.on("giveawayEnded", async (giveaway, winners) => {
    const role = await giveaway.message.guild.roles.create({ data: { name: "Giveaway" } });
    - console.log(role.id); // returns the correct role ID from the rank created above -
        winners.forEach((winner) => winner.roles.add(role.id));
});

返回

(node:12708) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'add' of undefined
- for- 
winners.forEach((winner) => winner.roles.add(role.id));

这是console.log(winnners)的输出

1 个答案:

答案 0 :(得分:3)

您已经推测,您需要将User转换为GuildMember。这是因为User没有.roles属性,因为它们代表的不是特定于任何服务器的Discord用户。

幸运的是,这很简单:

winners.forEach(winner => giveaway.message.guild.member(winner).roles.add(role.id))

通过使用Guild.member(user)函数,您可以将User转换为GuildMember。请注意,如果您的赠品中有一位获奖者可能会返回null-您可能需要为此添加过滤器或条件。