Итак, в моем боте 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
}
}
Если вы знаете лучший способ или более эффективный способ сделать это, пожалуйста, поделитесь, будет очень признателен.Спасибо.