diff --git a/Commands/BanCommand.cs b/Commands/BanCommand.cs index 84c212f..068a25c 100644 --- a/Commands/BanCommand.cs +++ b/Commands/BanCommand.cs @@ -132,7 +132,7 @@ public class BanCommand : CommandGroup { [RequireDiscordPermission(DiscordPermission.BanMembers)] [RequireBotDiscordPermissions(DiscordPermission.BanMembers)] [Description("разбанит пидора")] - public async Task UnBanUserAsync([Description("Юзер, кого банить")] IUser target, string reason) { + public async Task UnBanUserAsync([Description("Юзер, кого разбанить")] IUser target, string reason) { if (!_context.TryGetGuildID(out var guildId)) return Result.FromError(new ArgumentNullError(nameof(guildId))); if (!_context.TryGetUserID(out var userId)) @@ -147,7 +147,15 @@ public class BanCommand : CommandGroup { var cfg = await _dataService.GetConfiguration(guildId.Value, CancellationToken); Messages.Culture = cfg.Culture; - //TODO: Проверка на существующий бан. + var existingBanResult = await _guildApi.GetGuildBanAsync(guildId.Value, target.ID, CancellationToken); + if (!existingBanResult.IsDefined()) { + return (Result)await _feedbackService.SendContextualEmbedAsync( + new Embed( + Title: Messages.UserNotBanned, + Colour: ColorsList.Red + ), + ct: CancellationToken); + } Result responseEmbed; @@ -156,24 +164,23 @@ public class BanCommand : CommandGroup { if (!userResult.IsDefined(out var user)) return Result.FromError(userResult); - var banResult = await _guildApi.CreateGuildBanAsync( + var unbanResult = await _guildApi.RemoveGuildBanAsync( guildId.Value, target.ID, reason: $"({user.GetTag()}) {WebUtility.UrlEncode(reason)}", ct: CancellationToken); - if (!banResult.IsSuccess) - return Result.FromError(banResult.Error); + if (!unbanResult.IsSuccess) + return Result.FromError(unbanResult.Error); responseEmbed = new EmbedBuilder().WithSmallTitle( - string.Format(Messages.UserBanned, target.GetTag()), target) + string.Format(Messages.UserUnbanned, target.GetTag()), target) .WithColour(ColorsList.Green).Build(); if ((cfg.PublicFeedbackChannel is not 0 && cfg.PublicFeedbackChannel != channelId.Value) || (cfg.PrivateFeedbackChannel is not 0 && cfg.PrivateFeedbackChannel != channelId.Value)) { var logEmbed = new EmbedBuilder().WithSmallTitle( - string.Format(Messages.UserBanned, target.GetTag()), target) - .WithDescription(string.Format(Messages.DescriptionUserBanned, reason)) + string.Format(Messages.UserUnbanned, target.GetTag()), target) .WithActionFooter(user) .WithCurrentTimestamp() - .WithColour(ColorsList.Red) + .WithColour(ColorsList.Green) .Build(); if (!logEmbed.IsDefined(out var logBuilt)) diff --git a/Messages.Designer.cs b/Messages.Designer.cs index 994a0b2..b3ef2bb 100644 --- a/Messages.Designer.cs +++ b/Messages.Designer.cs @@ -818,5 +818,11 @@ namespace Boyfriend { return ResourceManager.GetString("UserAlreadyBanned", resourceCulture); } } + + internal static string UserUnbanned { + get { + return ResourceManager.GetString("UserUnbanned", resourceCulture); + } + } } } diff --git a/Messages.resx b/Messages.resx index fc6c755..cce2611 100644 --- a/Messages.resx +++ b/Messages.resx @@ -492,4 +492,7 @@ This user is already banned! + + {0} was unbanned + diff --git a/Messages.ru.resx b/Messages.ru.resx index 3ed4b49..879233d 100644 --- a/Messages.ru.resx +++ b/Messages.ru.resx @@ -492,4 +492,7 @@ Этот пользователь уже забанен! + + {0} был(-а) забанен(-а) + diff --git a/Messages.tt-ru.resx b/Messages.tt-ru.resx index 973bcca..77f724c 100644 --- a/Messages.tt-ru.resx +++ b/Messages.tt-ru.resx @@ -492,4 +492,7 @@ этот шизоид уже лежит в бане + + {0} раззабанен +