From d74d97f9f48b5cd229ae8eb3e6de3a014c03d1a8 Mon Sep 17 00:00:00 2001 From: Macintosh II Date: Wed, 4 Oct 2023 16:17:58 +0300 Subject: [PATCH] Resolve conversations Signed-off-by: Macintosh II --- src/Commands/MuteCommandGroup.cs | 50 +++++++++++++++++--------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/Commands/MuteCommandGroup.cs b/src/Commands/MuteCommandGroup.cs index ec53338..7f6b233 100644 --- a/src/Commands/MuteCommandGroup.cs +++ b/src/Commands/MuteCommandGroup.cs @@ -127,27 +127,11 @@ public class MuteCommandGroup : CommandGroup var until = DateTimeOffset.UtcNow.Add(duration); // >:) - var memberData = data.GetOrCreateMemberData(target.ID); - var muteRole = GuildSettings.MuteRole.Get(data.Settings); - - if (!muteRole.Empty()) + var muteMethodResult = await SelectMuteMethodAsync( + target, reason, duration, guildId, data, user, currentUser, until, ct); + if (!muteMethodResult.IsSuccess) { - var muteRoleAsync = - await RoleMuteUserAsync(target, reason, guildId, data, memberData, user, until, muteRole, CancellationToken); - if (!muteRoleAsync.IsSuccess) - { - return Result.FromError(muteRoleAsync.Error); - } - } - - if (muteRole.Empty()) - { - var timeoutResult = - await TimeoutUserAsync(target, reason, duration, guildId, user, currentUser, until, CancellationToken); - if (!timeoutResult.IsSuccess) - { - return Result.FromError(timeoutResult.Error); - } + return Result.FromError(muteMethodResult.Error); } var title = string.Format(Messages.UserMuted, target.GetTag()); @@ -169,12 +153,30 @@ public class MuteCommandGroup : CommandGroup return await _feedback.SendContextualEmbedResultAsync(embed, ct); } + private async Task SelectMuteMethodAsync( + IUser target, string reason, TimeSpan duration, Snowflake guildId, GuildData data, + IUser user, IUser currentUser, DateTimeOffset until, CancellationToken ct) + { + var muteRole = GuildSettings.MuteRole.Get(data.Settings); + + if (muteRole.Empty()) + { + var timeoutResult = + await TimeoutUserAsync(target, reason, duration, guildId, user, currentUser, until, ct); + return timeoutResult; + } + + var muteRoleResult = + await RoleMuteUserAsync(target, reason, guildId, data, user, until, muteRole, ct); + return muteRoleResult; + } + private async Task RoleMuteUserAsync( - IUser target, string reason, Snowflake guildId, GuildData data, MemberData memberData, - IUser user, DateTimeOffset until, Snowflake muteRole, CancellationToken ct = default) + IUser target, string reason, Snowflake guildId, GuildData data, + IUser user, DateTimeOffset until, Snowflake muteRole, CancellationToken ct) { var assignRoles = new List { muteRole }; - + var memberData = data.GetOrCreateMemberData(target.ID); if (!GuildSettings.RemoveRolesOnMute.Get(data.Settings)) { assignRoles.AddRange(memberData.Roles.ConvertAll(r => r.ToSnowflake())); @@ -193,7 +195,7 @@ public class MuteCommandGroup : CommandGroup private async Task TimeoutUserAsync( IUser target, string reason, TimeSpan duration, Snowflake guildId, - IUser user, IUser currentUser, DateTimeOffset until, CancellationToken ct = default) + IUser user, IUser currentUser, DateTimeOffset until, CancellationToken ct) { if (duration.TotalDays >= 28) {