我正在 Discord BOT 中处理一些新命令,并且试图确定具有管理员角色的用户和具有创始人和管理员角色的用户之间的区别。如果用户角色仅包含管理员而不包含创始人,则它们被归类为“CheckUserIsAdminOnly”。我使用下面的代码当前检查命令的用户是否是管理员,因此我现在尝试对此进行调整以说明用户是否具有“管理员”角色但不包含“创始人”角色。我觉得我在这里错过了一些简单的东西,但我无法弄清楚我的错误return (fullContextUser.Roles.Where(x => x.Name == "Admin" || x.Name == "Head Recruiter" && x.Name != "Founder").Count() > 0);当用户具有名为“Admin”和“Founder”的角色时,此代码仍然返回 true
2 回答
慕森王
TA贡献1777条经验 获得超3个赞
Roles是角色列表。您不能仅通过查看各个角色及其姓名来对列表做出声明。
中的表达式Where将应用于列表中的每个单独角色。
检查角色是否存在,然后合并该信息。
bool hasAdminRole = fullContextUser.Roles.Any(x => x.Name == "Admin");
bool hasFounderRole = fullContextUser.Roles.Any(x => x.Name == "Founder");
bool isAdminButNotFounder = hasAdminRole && !hasFounderRole;
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
你缺少括号:
return (fullContextUser.Roles.Where(x =>
(x.Name == "Admin" ||
x.Name == "Head Recruiter") &&
x.Name != "Founder").Count() > 0);
- 2 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消