如何判断用户是否不包含角色

我正在 Discord BOT 中处理一些新命令,并且试图确定具有管理员角色的用户和具有创始人和管理员角色的用户之间的区别。


如果用户角色仅包含管理员而不包含创始人,则它们被归类为“CheckUserIsAdminOnly”。我使用下面的代码当前检查命令的用户是否是管理员,因此我现在尝试对此进行调整以说明用户是否具有“管理员”角色但不包含“创始人”角色。


我觉得我在这里错过了一些简单的东西,但我无法弄清楚我的错误


return (fullContextUser.Roles.Where(x => 

x.Name == "Admin" || 

x.Name == "Head Recruiter" && 

x.Name != "Founder").Count() > 0);

当用户具有名为“Admin”和“Founder”的角色时,此代码仍然返回 true


qq_花开花谢_0
浏览 78回答 2
2回答

慕森王

Roles是角色列表。您不能仅通过查看各个角色及其姓名来对列表做出声明。中的表达式Where将应用于列表中的每个单独角色。检查角色是否存在,然后合并该信息。bool hasAdminRole = fullContextUser.Roles.Any(x => x.Name == "Admin");bool hasFounderRole = fullContextUser.Roles.Any(x => x.Name == "Founder");bool isAdminButNotFounder = hasAdminRole && !hasFounderRole;

天涯尽头无女友

你缺少括号:return (fullContextUser.Roles.Where(x => (x.Name == "Admin" || x.Name == "Head Recruiter") && x.Name != "Founder").Count() > 0);
打开App,查看更多内容
随时随地看视频慕课网APP