public async Task Ban(CommandContext ctx, DiscordMember member, string duration = "1d", [RemainingText] string reason = "Не указана") { if (!Bot.IsModerator(ctx.Member)) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} У вас нет доступа к этой команде!"); return; } var durationTimeSpan = Utility.TimeSpanParse(duration); if (durationTimeSpan.TotalSeconds < 1) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Не удалось определить время!"); return; } var banDate = DateTime.Now; var unbanDate = DateTime.Now.Add(durationTimeSpan); var banId = RandomString.NextString(6); var ban = BanSQL.Create(banId, member.Id, ctx.Member.Id, reason, banDate, unbanDate); var guildMember = await ctx.Guild.GetMemberAsync(member.Id); try { await guildMember.SendMessageAsync( $"Вы были заблокированы на сервере **{ctx.Guild.Name}** на **{Utility.FormatTimespan(durationTimeSpan)}** до **{unbanDate} **. " + $"Модератор: **{ctx.Member.Username}#{ctx.Member.Discriminator}**. **Причина:** {reason}."); } catch (NotFoundException) { } catch (UnauthorizedException) { //user can block the bot } await guildMember.BanAsync(delete_message_days : 1); await ctx.Guild.GetChannel(Bot.BotSettings.ModlogChannel).SendMessageAsync( "**Бан**\n\n" + $"**Модератор:** {ctx.Member}\n" + $"**Пользователь:** {await ctx.Client.GetUserAsync(member.Id)}\n" + $"**Дата:** {DateTime.Now}\n" + $"**Разблокировка:** {unbanDate} | {Utility.FormatTimespan(durationTimeSpan)}\n" + $"**ID бана:** {banId}\n" + $"**Причина:** {reason}\n"); await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Успешно выдан бан **{member.Username}#{member.Discriminator}**! " + $"Снятие через: {Utility.FormatTimespan(durationTimeSpan)}!"); }
public async Task BanDiscordUser(CommandContext ctx, DiscordUser user, string duration = "1d", [RemainingText] string reason = "Не указана") { if (!Bot.IsModerator(ctx.Member)) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} У вас нет доступа к этой команде!"); return; } var durationTimeSpan = Utility.TimeSpanParse(duration); if (durationTimeSpan.TotalSeconds < 1) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Не удалось определить время!"); return; } var banDate = DateTime.Now; var unbanDate = DateTime.Now.Add(durationTimeSpan); var banId = RandomString.NextString(6); var ban = BanSQL.Create(banId, user.Id, ctx.Member.Id, reason, banDate, unbanDate); await ctx.Guild.GetChannel(Bot.BotSettings.ModlogChannel).SendMessageAsync( "**Бан**\n\n" + $"**Модератор:** {ctx.Member}\n" + $"**Пользователь:** {user.Username}\n" + $"**Дата:** {DateTime.Now}\n" + $"**Разблокировка:** {unbanDate} | {Utility.FormatTimespan(durationTimeSpan)}\n" + $"**ID бана:** {banId}\n" + $"**Причина:** {reason}\n"); await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Успешно выдан бан **{user.Username}#{user.Discriminator}**! " + $"Снятие через: {Utility.FormatTimespan(durationTimeSpan)}!"); }