DiscordJS:向用户数组添加角色

问题描述 投票:1回答:1

[使用赠品剧本,我希望它为每个获胜者增加角色。我知道我极有可能必须将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)的输出“”

javascript discord.js
1个回答
3
投票

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

幸运的是,这很简单:

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

通过使用Guild.member(user)功能,您可以将User转换为GuildMember。请注意,如果在赠品过程中留下了一名获胜者,该函数可能会返回null-您可能需要为此添加过滤器或条件。

© www.soinside.com 2019 - 2024. All rights reserved.