因此,在我的 Discord 机器人中,我正在创建一个完整的审核系统,其中具有适当权限的用户可以向其他用户发出警告,这些将被记录,一旦发出 3 个警告,用户就会被静音一段时间,这可能发生 5他们被长时间静音的次数,当用户达到 3 次以上警告时,第五次静音后,他们将被永久禁止。所以我几乎已经完成了对用户历史查看器等没有问题的整个事情,但我遇到的问题是比较角色。我找到了一个解决方案,我不确定从长远来看它是否能正常工作,但这是我能想到的唯一方法。我希望它不允许用户警告比自己级别高的人。这是我的代码:public class Warn : ModuleBase<SocketCommandContext> { [Command("Warn")] public async Task WarnMain([Remainder, Summary("Warn a user for a reason.")] IGuildUser user, string warnInfo) { var userRole = -1; var victimRole = -1; var counter = 0; foreach(var role in Context.Guild.Roles) { if (Context.Guild.GetUser(Context.User.Id).Roles.Contains(role) && userRole == -1) { userRole = counter; } if (Context.Guild.GetUser(user.Id).Roles.Contains(role) && victimRole == -1) { victimRole = counter; } } if (userRole < victimRole) // blah blah } }如果您知道这样做的更好方法或更有效的方法,请分享,将不胜感激。谢谢。
3 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
据我所知,我这样做的方式似乎是实际比较角色的唯一方法。花了最后 4 个小时寻找替代品,但没有遇到任何事情。
我的方法是简单地遍历每个角色并进行比较,我相信 API 已经将角色从高到低排序。然后,您可以使用计数器比较找到分配给用户的最高角色的数字。
比较权限并不总是有效,尤其是在我的情况下,因此我也无法使用该方法。这似乎最适合我。如果有人有更好的东西可以随时分享,我很想看看我如何改进它。
- 3 回答
- 0 关注
- 171 浏览
添加回答
举报
0/150
提交
取消