From 170d87fff0cd788f1f4f436fcb83aaa8bb79ebf4 Mon Sep 17 00:00:00 2001 From: Macintosh II Date: Wed, 27 Sep 2023 21:01:41 +0300 Subject: [PATCH] don't use unnecessary API call --- src/Services/Update/MemberUpdateService.cs | 26 +++++++++------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/Services/Update/MemberUpdateService.cs b/src/Services/Update/MemberUpdateService.cs index 712fe93..6a83fbd 100644 --- a/src/Services/Update/MemberUpdateService.cs +++ b/src/Services/Update/MemberUpdateService.cs @@ -80,9 +80,16 @@ public sealed partial class MemberUpdateService : BackgroundService var failedResults = new List(); var id = data.Id.ToSnowflake(); - var punishmentsResult = await CheckMemberPunishmentsAsync(guildId, id, data, ct); + var guildMemberResult = await _guildApi.GetGuildMemberAsync(guildId, id, ct); + + var punishmentsResult = await CheckMemberPunishmentsAsync(guildId, id, data, guildMemberResult, ct); failedResults.AddIfFailed(punishmentsResult); + if (!guildMemberResult.IsDefined(out var guildMember)) + { + return failedResults.AggregateErrors(); + } + if (defaultRole.Value is not 0 && !data.Roles.Contains(defaultRole.Value)) { var addResult = await _guildApi.AddGuildMemberRoleAsync( @@ -90,12 +97,6 @@ public sealed partial class MemberUpdateService : BackgroundService failedResults.AddIfFailed(addResult); } - var guildMemberResult = await _guildApi.GetGuildMemberAsync(guildId, id, ct); - if (!guildMemberResult.IsDefined(out var guildMember)) - { - return failedResults.AggregateErrors(); - } - if (!guildMember.User.IsDefined(out var user)) { failedResults.AddIfFailed(new ArgumentNullError(nameof(guildMember.User))); @@ -118,7 +119,8 @@ public sealed partial class MemberUpdateService : BackgroundService } private async Task CheckMemberPunishmentsAsync( - Snowflake guildId, Snowflake id, MemberData data, CancellationToken ct) + Snowflake guildId, Snowflake id, MemberData data, Result guildMemberResult, + CancellationToken ct) { if (DateTimeOffset.UtcNow > data.BannedUntil) { @@ -132,14 +134,8 @@ public sealed partial class MemberUpdateService : BackgroundService return unbanResult; } - if (DateTimeOffset.UtcNow > data.MutedUntil) + if (DateTimeOffset.UtcNow > data.MutedUntil && guildMemberResult.IsSuccess) { - var isOnServer = await _guildApi.GetGuildMemberAsync(guildId, id, ct); - if (!isOnServer.IsSuccess) - { - return Result.FromSuccess(); - } - var unmuteResult = await _guildApi.ModifyGuildMemberAsync( guildId, id, roles: data.Roles.ConvertAll(r => r.ToSnowflake()), reason: Messages.PunishmentExpired.EncodeHeader(), ct: ct);