1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-05-05 13:36:30 +03:00

Do not wrap result errors when returning them (#73)

This PR removes the wrapping of in-house created result errors with
`Result.FromError` (I did not know this was possible until today, lol),
which reduces code verbosity and makes it easier to read, and replaces
`ArgumentNullError` with `ArgumentInvalidError` when retrieving IDs from
a command context, which, in my opinion, is more correct.

---------

Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
Octol1ttle 2023-07-28 21:58:55 +05:00 committed by GitHub
parent a6df26af67
commit f47ebe81c5
Signed by: GitHub
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 34 additions and 45 deletions

View file

@ -163,7 +163,7 @@ public partial class GuildUpdateService : BackgroundService {
await SendScheduledEventCreatedMessage(scheduledEvent, data.Settings, ct),
GuildScheduledEventStatus.Active or GuildScheduledEventStatus.Completed =>
await SendScheduledEventUpdatedMessage(scheduledEvent, data, ct),
_ => Result.FromError(new ArgumentOutOfRangeError(nameof(scheduledEvent.Status)))
_ => new ArgumentOutOfRangeError(nameof(scheduledEvent.Status))
};
if (!statusChangedResponseResult.IsSuccess)
@ -295,7 +295,7 @@ public partial class GuildUpdateService : BackgroundService {
private async Task<Result> SendScheduledEventCreatedMessage(
IGuildScheduledEvent scheduledEvent, JsonNode settings, CancellationToken ct = default) {
if (!scheduledEvent.Creator.IsDefined(out var creator))
return Result.FromError(new ArgumentNullError(nameof(scheduledEvent.Creator)));
return new ArgumentNullError(nameof(scheduledEvent.Creator));
Result<string> embedDescriptionResult;
var eventDescription = scheduledEvent.Description is { HasValue: true, Value: not null }
@ -306,7 +306,7 @@ public partial class GuildUpdateService : BackgroundService {
GetLocalEventCreatedEmbedDescription(scheduledEvent, eventDescription),
GuildScheduledEventEntityType.External => GetExternalScheduledEventCreatedEmbedDescription(
scheduledEvent, eventDescription),
_ => Result<string>.FromError(new ArgumentOutOfRangeError(nameof(scheduledEvent.EntityType)))
_ => new ArgumentOutOfRangeError(nameof(scheduledEvent.EntityType))
};
if (!embedDescriptionResult.IsDefined(out var embedDescription))
@ -343,11 +343,11 @@ public partial class GuildUpdateService : BackgroundService {
IGuildScheduledEvent scheduledEvent, string eventDescription) {
Result<string> embedDescription;
if (!scheduledEvent.EntityMetadata.AsOptional().IsDefined(out var metadata))
return Result<string>.FromError(new ArgumentNullError(nameof(scheduledEvent.EntityMetadata)));
return new ArgumentNullError(nameof(scheduledEvent.EntityMetadata));
if (!scheduledEvent.ScheduledEndTime.AsOptional().IsDefined(out var endTime))
return Result<string>.FromError(new ArgumentNullError(nameof(scheduledEvent.ScheduledEndTime)));
return new ArgumentNullError(nameof(scheduledEvent.ScheduledEndTime));
if (!metadata.Location.IsDefined(out var location))
return Result<string>.FromError(new ArgumentNullError(nameof(metadata.Location)));
return new ArgumentNullError(nameof(metadata.Location));
embedDescription = $"{eventDescription}\n\n{Markdown.BlockQuote(
string.Format(
@ -362,7 +362,7 @@ public partial class GuildUpdateService : BackgroundService {
private static Result<string> GetLocalEventCreatedEmbedDescription(
IGuildScheduledEvent scheduledEvent, string eventDescription) {
if (!scheduledEvent.ChannelID.AsOptional().IsDefined(out var channelId))
return Result<string>.FromError(new ArgumentNullError(nameof(scheduledEvent.ChannelID)));
return new ArgumentNullError(nameof(scheduledEvent.ChannelID));
return $"{eventDescription}\n\n{Markdown.BlockQuote(
string.Format(
@ -390,7 +390,7 @@ public partial class GuildUpdateService : BackgroundService {
GuildScheduledEventEntityType.StageInstance or GuildScheduledEventEntityType.Voice =>
GetLocalEventStartedEmbedDescription(scheduledEvent),
GuildScheduledEventEntityType.External => GetExternalEventStartedEmbedDescription(scheduledEvent),
_ => Result<string>.FromError(new ArgumentOutOfRangeError(nameof(scheduledEvent.EntityType)))
_ => new ArgumentOutOfRangeError(nameof(scheduledEvent.EntityType))
};
var contentResult = await _utility.GetEventNotificationMentions(
@ -414,7 +414,7 @@ public partial class GuildUpdateService : BackgroundService {
}
if (scheduledEvent.Status != GuildScheduledEventStatus.Completed)
return Result.FromError(new ArgumentOutOfRangeError(nameof(scheduledEvent.Status)));
return new ArgumentOutOfRangeError(nameof(scheduledEvent.Status));
data.ScheduledEvents.Remove(scheduledEvent.ID.Value);
var completedEmbed = new EmbedBuilder().WithTitle(string.Format(Messages.EventCompleted, scheduledEvent.Name))
@ -439,7 +439,7 @@ public partial class GuildUpdateService : BackgroundService {
private static Result<string> GetLocalEventStartedEmbedDescription(IGuildScheduledEvent scheduledEvent) {
Result<string> embedDescription;
if (!scheduledEvent.ChannelID.AsOptional().IsDefined(out var channelId))
return Result<string>.FromError(new ArgumentNullError(nameof(scheduledEvent.ChannelID)));
return new ArgumentNullError(nameof(scheduledEvent.ChannelID));
embedDescription = string.Format(
Messages.DescriptionLocalEventStarted,
@ -451,11 +451,11 @@ public partial class GuildUpdateService : BackgroundService {
private static Result<string> GetExternalEventStartedEmbedDescription(IGuildScheduledEvent scheduledEvent) {
Result<string> embedDescription;
if (!scheduledEvent.EntityMetadata.AsOptional().IsDefined(out var metadata))
return Result<string>.FromError(new ArgumentNullError(nameof(scheduledEvent.EntityMetadata)));
return new ArgumentNullError(nameof(scheduledEvent.EntityMetadata));
if (!scheduledEvent.ScheduledEndTime.AsOptional().IsDefined(out var endTime))
return Result<string>.FromError(new ArgumentNullError(nameof(scheduledEvent.ScheduledEndTime)));
return new ArgumentNullError(nameof(scheduledEvent.ScheduledEndTime));
if (!metadata.Location.IsDefined(out var location))
return Result<string>.FromError(new ArgumentNullError(nameof(metadata.Location)));
return new ArgumentNullError(nameof(metadata.Location));
embedDescription = string.Format(
Messages.DescriptionExternalEventStarted,

View file

@ -92,9 +92,9 @@ public class UtilityService : IHostedService {
string action, IGuild guild, IReadOnlyList<IRole> roles, IGuildMember targetMember, IGuildMember currentMember,
IGuildMember interacter) {
if (!targetMember.User.IsDefined(out var targetUser))
return Result<string?>.FromError(new ArgumentNullError(nameof(targetMember.User)));
return new ArgumentNullError(nameof(targetMember.User));
if (!interacter.User.IsDefined(out var interacterUser))
return Result<string?>.FromError(new ArgumentNullError(nameof(interacter.User)));
return new ArgumentNullError(nameof(interacter.User));
if (currentMember.User == targetMember.User)
return Result<string?>.FromSuccess($"UserCannot{action}Bot".Localized());