From 1629623dcfea62f827bb52dac0e47a42885a06cd Mon Sep 17 00:00:00 2001 From: mctaylors Date: Sun, 17 Dec 2023 18:02:02 +0300 Subject: [PATCH] Add ChannelApiExtensions --- src/Extensions/ChannelApiExtensions.cs | 23 +++++++++++++++++++ src/Responders/GuildLoadedResponder.cs | 4 ++-- src/Responders/GuildMemberJoinedResponder.cs | 2 +- src/Responders/MessageDeletedResponder.cs | 2 +- src/Responders/MessageEditedResponder.cs | 2 +- .../Update/ScheduledEventUpdateService.cs | 10 ++++---- 6 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 src/Extensions/ChannelApiExtensions.cs diff --git a/src/Extensions/ChannelApiExtensions.cs b/src/Extensions/ChannelApiExtensions.cs new file mode 100644 index 0000000..e4948ba --- /dev/null +++ b/src/Extensions/ChannelApiExtensions.cs @@ -0,0 +1,23 @@ +using OneOf; +using Remora.Discord.API.Abstractions.Objects; +using Remora.Discord.API.Abstractions.Rest; +using Remora.Rest.Core; +using Remora.Results; + +namespace Octobot.Extensions; + +public static class ChannelApiExtensions +{ + public static async Task CreateMessageResultAsync(this IDiscordRestChannelAPI channelApi, + Snowflake channelId, Optional message = default, Optional nonce = default, + Optional isTextToSpeech = default, Optional> embeds = default, + Optional allowedMentions = default, Optional messageRefenence = default, + Optional> components = default, + Optional> stickerIds = default, + Optional>> attachments = default, + Optional flags = default, CancellationToken ct = default) + { + return (Result)await channelApi.CreateMessageAsync(channelId, message, nonce, isTextToSpeech, embeds, + allowedMentions, messageRefenence, components, stickerIds, attachments, flags, ct); + } +} diff --git a/src/Responders/GuildLoadedResponder.cs b/src/Responders/GuildLoadedResponder.cs index 5d5d68a..65d0296 100644 --- a/src/Responders/GuildLoadedResponder.cs +++ b/src/Responders/GuildLoadedResponder.cs @@ -97,7 +97,7 @@ public class GuildLoadedResponder : IResponder return Result.FromError(embed); } - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( GuildSettings.PrivateFeedbackChannel.Get(cfg), embeds: new[] { built }, ct: ct); } @@ -121,7 +121,7 @@ public class GuildLoadedResponder : IResponder return Result.FromError(channelResult); } - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( channel, embeds: new[] { errorBuilt }, ct: ct); } } diff --git a/src/Responders/GuildMemberJoinedResponder.cs b/src/Responders/GuildMemberJoinedResponder.cs index 09075bf..b0d157d 100644 --- a/src/Responders/GuildMemberJoinedResponder.cs +++ b/src/Responders/GuildMemberJoinedResponder.cs @@ -77,7 +77,7 @@ public class GuildMemberJoinedResponder : IResponder return Result.FromError(embed); } - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( GuildSettings.PublicFeedbackChannel.Get(cfg), embeds: new[] { built }, allowedMentions: Octobot.NoMentions, ct: ct); } diff --git a/src/Responders/MessageDeletedResponder.cs b/src/Responders/MessageDeletedResponder.cs index 5e4870b..9ce2456 100644 --- a/src/Responders/MessageDeletedResponder.cs +++ b/src/Responders/MessageDeletedResponder.cs @@ -103,7 +103,7 @@ public class MessageDeletedResponder : IResponder return Result.FromError(embed); } - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( GuildSettings.PrivateFeedbackChannel.Get(cfg), embeds: new[] { built }, allowedMentions: Octobot.NoMentions, ct: ct); } diff --git a/src/Responders/MessageEditedResponder.cs b/src/Responders/MessageEditedResponder.cs index 3b0a6aa..828865c 100644 --- a/src/Responders/MessageEditedResponder.cs +++ b/src/Responders/MessageEditedResponder.cs @@ -112,7 +112,7 @@ public class MessageEditedResponder : IResponder return Result.FromError(embed); } - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( GuildSettings.PrivateFeedbackChannel.Get(cfg), embeds: new[] { built }, allowedMentions: Octobot.NoMentions, ct: ct); } diff --git a/src/Services/Update/ScheduledEventUpdateService.cs b/src/Services/Update/ScheduledEventUpdateService.cs index 9ec9fcf..8978abe 100644 --- a/src/Services/Update/ScheduledEventUpdateService.cs +++ b/src/Services/Update/ScheduledEventUpdateService.cs @@ -231,7 +231,7 @@ public sealed class ScheduledEventUpdateService : BackgroundService URL: $"https://discord.com/events/{scheduledEvent.GuildID}/{scheduledEvent.ID}" ); - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( GuildSettings.EventNotificationChannel.Get(settings), roleMention, embeds: new[] { built }, components: new[] { new ActionRowComponent(new[] { button }) }, ct: ct); } @@ -322,7 +322,7 @@ public sealed class ScheduledEventUpdateService : BackgroundService return Result.FromError(startedEmbed); } - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( GuildSettings.EventNotificationChannel.Get(data.Settings), content, embeds: new[] { startedBuilt }, ct: ct); } @@ -353,7 +353,7 @@ public sealed class ScheduledEventUpdateService : BackgroundService return Result.FromError(completedEmbed); } - var createResult = (Result)await _channelApi.CreateMessageAsync( + var createResult = await _channelApi.CreateMessageResultAsync( GuildSettings.EventNotificationChannel.Get(data.Settings), embeds: new[] { completedBuilt }, ct: ct); if (createResult.IsSuccess) @@ -385,7 +385,7 @@ public sealed class ScheduledEventUpdateService : BackgroundService return Result.FromError(embed); } - var createResult = (Result)await _channelApi.CreateMessageAsync( + var createResult = await _channelApi.CreateMessageResultAsync( GuildSettings.EventNotificationChannel.Get(data.Settings), embeds: new[] { built }, ct: ct); if (createResult.IsSuccess) { @@ -450,7 +450,7 @@ public sealed class ScheduledEventUpdateService : BackgroundService return Result.FromError(earlyResult); } - return (Result)await _channelApi.CreateMessageAsync( + return await _channelApi.CreateMessageResultAsync( GuildSettings.EventNotificationChannel.Get(data.Settings), content, embeds: new[] { earlyBuilt }, ct: ct);