我正在处理Discord BOT中的一些新命令,并试图确定具有管理员角色的用户与具有创始人和管理员角色的用户之间的区别。
如果用户角色仅包含Admin而不包含Founder,则它们被归类为“ CheckUserIsAdminOnly”。我现在使用下面的代码检查该命令的用户是否是Admin,因此我现在尝试改编该命令以说明该用户是否具有“ Admin”角色但不包含“ Founder”角色。>
我觉得这里缺少一些简单的东西,但是我无法弄清楚我的错误
return (fullContextUser.Roles.Where(x =>
x.Name == "Admin" ||
x.Name == "Head Recruiter" &&
x.Name != "Founder").Count() > 0);
当用户具有名为“ Admin”和“ Founder”的角色时,此代码仍返回true。
答案 0 :(得分:6)
Roles
是角色列表。您不能仅通过查看单个角色及其名称来对列表做出声明。
Where
中的表达式将应用于列表中的每个角色。
检查角色是否存在,然后合并该信息。
bool hasAdminRole = fullContextUser.Roles.Any(x => x.Name == "Admin");
bool hasFounderRole = fullContextUser.Roles.Any(x => x.Name == "Founder");
bool isAdminButNotFounder = hasAdminRole && !hasFounderRole;
答案 1 :(得分:-1)
您缺少肢体:
return (fullContextUser.Roles.Where(x =>
(x.Name == "Admin" ||
x.Name == "Head Recruiter") &&
x.Name != "Founder").Count() > 0);