diff --git a/Commands/BanCommandGroup.cs b/Commands/BanCommandGroup.cs index a7494dd..1ddeab7 100644 --- a/Commands/BanCommandGroup.cs +++ b/Commands/BanCommandGroup.cs @@ -65,15 +65,13 @@ public class BanCommandGroup : CommandGroup { [RequireBotDiscordPermissions(DiscordPermission.BanMembers)] [Description("банит пидора")] public async Task BanUserAsync( - [Description("юзер кого банить")] IUser target, [Description("причина зачем банить")] string reason, - TimeSpan? duration = null) { - // Data checks - if (!_context.TryGetGuildID(out var guildId)) - return Result.FromError(new ArgumentNullError(nameof(guildId))); - if (!_context.TryGetUserID(out var userId)) - return Result.FromError(new ArgumentNullError(nameof(userId))); - if (!_context.TryGetChannelID(out var channelId)) - return Result.FromError(new ArgumentNullError(nameof(channelId))); + [Description("юзер кого банить")] IUser target, + [Description("причина зачем банить")] string reason, + [Description("продолжительность бана")] + TimeSpan? duration = null) { + if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId)) + return Result.FromError( + new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context")); // The current user's avatar is used when sending error messages var currentUserResult = await _userApi.GetCurrentUserAsync(CancellationToken); @@ -180,7 +178,10 @@ public class BanCommandGroup : CommandGroup { [RequireDiscordPermission(DiscordPermission.BanMembers)] [RequireBotDiscordPermissions(DiscordPermission.BanMembers)] [Description("разбанит пидора")] - public async Task UnbanUserAsync([Description("Юзер, кого разбанить")] IUser target, string reason) { + public async Task UnbanUserAsync( + [Description("юзер кого разбанить")] IUser target, + [Description("причина зачем разбанить")] + string reason) { // Data checks if (!_context.TryGetGuildID(out var guildId)) return Result.FromError(new ArgumentNullError(nameof(guildId))); diff --git a/Commands/KickCommandGroup.cs b/Commands/KickCommandGroup.cs index bcb1e64..01e0fa9 100644 --- a/Commands/KickCommandGroup.cs +++ b/Commands/KickCommandGroup.cs @@ -8,7 +8,6 @@ using Remora.Discord.API.Abstractions.Rest; using Remora.Discord.API.Objects; using Remora.Discord.Commands.Conditions; using Remora.Discord.Commands.Contexts; -using Remora.Discord.Commands.Extensions; using Remora.Discord.Commands.Feedback.Services; using Remora.Discord.Extensions.Embeds; using Remora.Results; @@ -58,14 +57,11 @@ public class KickCommandGroup : CommandGroup { [RequireBotDiscordPermissions(DiscordPermission.KickMembers)] [Description("кикает твоего друга <3")] public async Task KickUserAsync( - [Description("друг которого кикать")] IUser target, [Description("причина зачем кикать")] string reason) { - // Data checks - if (!_context.TryGetGuildID(out var guildId)) - return Result.FromError(new ArgumentNullError(nameof(guildId))); - if (!_context.TryGetUserID(out var userId)) - return Result.FromError(new ArgumentNullError(nameof(userId))); - if (!_context.TryGetChannelID(out var channelId)) - return Result.FromError(new ArgumentNullError(nameof(channelId))); + [Description("друг которого кикать")] IUser target, + [Description("причина зачем кикать")] string reason) { + if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId)) + return Result.FromError( + new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context")); // The current user's avatar is used when sending error messages var currentUserResult = await _userApi.GetCurrentUserAsync(CancellationToken); diff --git a/Commands/MuteCommandGroup.cs b/Commands/MuteCommandGroup.cs index bb02bce..24c4682 100644 --- a/Commands/MuteCommandGroup.cs +++ b/Commands/MuteCommandGroup.cs @@ -69,6 +69,7 @@ public class MuteCommandGroup : CommandGroup { IUser target, [Description("причина зачем мутить друга (пиши заебал)")] string reason, + [Description("продолжительность мута")] TimeSpan duration) { // Data checks if (!_context.TryGetGuildID(out var guildId)) @@ -181,14 +182,14 @@ public class MuteCommandGroup : CommandGroup { [RequireDiscordPermission(DiscordPermission.ModerateMembers)] [RequireBotDiscordPermissions(DiscordPermission.ModerateMembers)] [Description("ФУНКЦИЯ ФОРС РАЗМУТ КАВАЯ КОЛЕСИКИ!!!!1111111111")] - public async Task UnmuteUserAsync([Description("юзер кого раззамучивать")] IUser target, string reason) { - // Data checks - if (!_context.TryGetGuildID(out var guildId)) - return Result.FromError(new ArgumentNullError(nameof(guildId))); - if (!_context.TryGetUserID(out var userId)) - return Result.FromError(new ArgumentNullError(nameof(userId))); - if (!_context.TryGetChannelID(out var channelId)) - return Result.FromError(new ArgumentNullError(nameof(channelId))); + public async Task UnmuteUserAsync( + [Description("юзер кого раззамучивать")] + IUser target, + [Description("причина зачем раззамучивать")] + string reason) { + if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId)) + return Result.FromError( + new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context")); // The current user's avatar is used when sending error messages var currentUserResult = await _userApi.GetCurrentUserAsync(CancellationToken); diff --git a/Extensions.cs b/Extensions.cs index 16cf8fe..2dd95f6 100644 --- a/Extensions.cs +++ b/Extensions.cs @@ -1,9 +1,12 @@ +using System.Diagnostics.CodeAnalysis; using System.Net; using System.Text; using DiffPlex.DiffBuilder.Model; using Remora.Discord.API; using Remora.Discord.API.Abstractions.Objects; using Remora.Discord.API.Objects; +using Remora.Discord.Commands.Contexts; +using Remora.Discord.Commands.Extensions; using Remora.Discord.Extensions.Embeds; using Remora.Discord.Extensions.Formatting; using Remora.Rest.Core; @@ -141,4 +144,15 @@ public static class Extensions { var list = source.ToList(); return list.Any() ? list.Max(selector) : default; } + + public static bool TryGetContextIDs( + this ICommandContext context, [NotNullWhen(true)] out Snowflake? guildId, + [NotNullWhen(true)] out Snowflake? channelId, [NotNullWhen(true)] out Snowflake? userId) { + guildId = null; + channelId = null; + userId = null; + return context.TryGetGuildID(out guildId) + && context.TryGetChannelID(out channelId) + && context.TryGetUserID(out userId); + } }