玩赠品脚本,我想让它为每个获胜者增加角色。我知道我很可能必须将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)的输出
答案 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-您可能需要为此添加过滤器或条件。