public override async Task <PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services) { if (await RiftBot.IsModeratorAsync(context.User) || RiftBot.IsAdmin(context.User)) { return(PreconditionResult.FromSuccess()); } return(PreconditionResult.FromError(RiftBot.CommandDenyMessage)); }
public async Task BanAsync(IUser target, string reason, IUser moderator) { (var passed, var sgTarget) = await ValidateAsync(target, reason, moderator); if (!passed) { return; } if (RiftBot.IsAdmin(sgTarget) || await RiftBot.IsModeratorAsync(sgTarget)) { await messageService.SendMessageAsync("mod-friendly-fire", Settings.ChannelId.Commands, new FormatData(moderator.Id)); return; } if (!IonicHelper.GetGuild(Settings.App.MainGuildId, out var guild)) { return; } await DB.ModerationLogs.AddAsync(sgTarget.Id, moderator.Id, "Ban", reason, DateTime.UtcNow, TimeSpan.Zero); (var oldToxicity, var newToxicity) = await GetNewToxicityAsync(sgTarget.Id, ToxicitySource.Ban); await DB.Toxicity.UpdatePercentAsync(sgTarget.Id, newToxicity.Percent); var data = new FormatData(target.Id) { Moderation = new ModerationData { ModeratorId = moderator.Id, TargetId = sgTarget.Id, Reason = reason, } }; await messageService.SendMessageAsync("mod-ban-success", Settings.ChannelId.Chat, data); await guild.AddBanAsync(sgTarget, 1, $"Banned by {moderator}: {reason}"); }
protected override void BeforeExecute(CommandInfo command) { if (moduleState == RiftModuleState.Disabled) { Task.Run(async() => { await base.ReplyAsync("В настоящий момент эта команда отключена администратором."); }); return; } if (moduleState == RiftModuleState.AdminOnly && !RiftBot.IsAdmin(Context.User)) { Task.Run(async() => { await base.ReplyAsync( "В настоящий момент эта команда доступна только для администраторов."); }); return; } }
public async Task MuteAsync(IUser target, string reason, string time, IUser moderator) { (var passed, var sgTarget) = await ValidateAsync(target, reason, moderator); if (!passed) { return; } if (RiftBot.IsAdmin(sgTarget) || await RiftBot.IsModeratorAsync(sgTarget)) { await messageService.SendMessageAsync("mod-friendly-fire", Settings.ChannelId.Commands, new FormatData(moderator.Id)); return; } if (!int.TryParse(time.Remove(time.Length - 1), out var timeInt)) { await messageService.SendMessageAsync("mod-wrong-time-format", Settings.ChannelId.Commands, new FormatData(moderator.Id)); return; } TimeSpan ts; var timeMod = time.Last(); switch (timeMod) { case 's': ts = TimeSpan.FromSeconds(timeInt); break; case 'm': ts = TimeSpan.FromMinutes(timeInt); break; case 'h': ts = TimeSpan.FromHours(timeInt); break; case 'd': ts = TimeSpan.FromDays(timeInt); break; default: await messageService.SendMessageAsync("mod-wrong-time-format", Settings.ChannelId.Commands, new FormatData(moderator.Id)); return; } var muted = await DB.Roles.GetAsync(40); await roleService.AddTempRoleAsync(sgTarget.Id, muted.RoleId, ts, $"Muted by {moderator}|{moderator.Id.ToString()} with reason: {reason}"); await DB.ModerationLogs.AddAsync(sgTarget.Id, moderator.Id, "Mute", reason, DateTime.UtcNow, ts); (var oldToxicity, var newToxicity) = await GetNewToxicityAsync(sgTarget.Id, ToxicitySource.Mute); await DB.Toxicity.UpdatePercentAsync(sgTarget.Id, newToxicity.Percent); if (newToxicity.Level > oldToxicity.Level) { await messageService.SendMessageAsync("mod-toxicity-increased", Settings.ChannelId.Chat, new FormatData(sgTarget.Id)); } var data = new FormatData(sgTarget.Id) { Moderation = new ModerationData { TargetId = sgTarget.Id, ModeratorId = moderator.Id, Reason = reason, Duration = ts } }; await messageService.SendMessageAsync("mod-mute-success", Settings.ChannelId.Chat, data); }
public override async Task <PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services) { var role = await DB.Roles.GetAsync(173); if (IonicHelper.HasRolesAny(Settings.App.MainGuildId, context.User.Id, role.RoleId) || RiftBot.IsAdmin(context.User)) { return(PreconditionResult.FromSuccess()); } return(PreconditionResult.FromError(RiftBot.CommandDenyMessage)); }