【发布时间】:2018-11-12 09:39:37
【问题描述】:
因此,在我的 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
}
}
如果您知道更好的方法或更有效的方法,请分享,将不胜感激。谢谢。
【问题讨论】:
-
顺便说一句,您可以通过
user.RoleIds.Count获取用户拥有的角色数量。虽然这包括@everyone角色。您可以在此处查看IGuildUser.RoleIds属性:discord.foxbot.me/docs/api/…
标签: c# warnings bots discord discord.net