discord.js如何赋予可调级别的角色

时间:2020-05-16 17:51:49

标签: javascript node.js discord.js

大家好,我正在制作一个公共bot,我的bot正在开发关卡系统。我只能根据即时通讯使用的级别if(level = 5){ //addRole }赋予服务器特殊的角色。所以我把它做成像

的对象
rewards[message.guild.id] = [
{level: 1, reward: "rol1ID"},
{level: 2, reward: "rol2ID"}
]

我的目标是让服务器所有者可以调整它们(我设法将其设置为一个对象),但是我不知道当成员达到该级别时如何赋予该级别的角色并删除上一个级别的角色。指定级别。你们能帮我吗?

1 个答案:

答案 0 :(得分:0)

编写此答案的前提是您使用的是最新的discord.js(在撰写本文时为v12)。如果您使用的是v11,请用roles.add()roles.remove()

替换addRole()removeRole()

您将必须找到一种触发升级事件的方法,这样做时,您可以为角色执行以下操作:

prevLvl = rewards[message.guild.id].find(reward => reward.level === USER_CURRENT_LEVEL - 1)
newLvl = rewards[message.guild.id].find(reward => reward.level === USER_CURRENT_LEVEL)

prevRoleID = prevLvl.find(data => data.reward)
newRoleID = newLvl.find(data => data.reward)

message.member.roles.remove(prevRoleID) // This will only work if levelling up is triggered by the user sending something in chat, otherwise, you need to get the `GuildMember` object of the user.
message.member.roles.add(newRoleID)