如何在Discord.js中获取用户拥有的指定列表内的角色ID?
实现返回用户拥有的目标角色ID列表
当然可以实现,只需要把原来的some方法换成filter方法,就能筛选出用户实际拥有的、存在于目标角色ID集合中的角色ID。
修改后的代码:
const roleIds = new Set([ '1051468892050429579', '1051466682357410846', '1051466680342833567', '1051466670713395144', ]); // 从用户角色中筛选出在目标集合里的角色ID const userOwnedRoleIds = event.member.roles.cache .map(role => role.id) // 提取每个角色的ID .filter(id => roleIds.has(id)); // 过滤出存在于roleIds中的ID
说明:
filter方法会遍历用户的所有角色ID,将符合条件(存在于roleIds集合中)的元素收集成数组返回。- 如果用户没有任何目标角色,
userOwnedRoleIds会是一个空数组;如果拥有多个,数组里会包含所有匹配的角色ID。 - 用
Set存储目标角色ID的优势保留了:has方法的查询效率是O(1),比数组的includes更高效。
内容的提问来源于stack exchange,提问作者confusedpiglet
相关产品推荐
相关产品推荐

