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<Result> CreateMessageResultAsync(this IDiscordRestChannelAPI channelApi, + Snowflake channelId, Optional<string> message = default, Optional<string> nonce = default, + Optional<bool> isTextToSpeech = default, Optional<IReadOnlyList<IEmbed>> embeds = default, + Optional<IAllowedMentions> allowedMentions = default, Optional<IMessageReference> messageRefenence = default, + Optional<IReadOnlyList<IMessageComponent>> components = default, + Optional<IReadOnlyList<Snowflake>> stickerIds = default, + Optional<IReadOnlyList<OneOf<FileData, IPartialAttachment>>> attachments = default, + Optional<MessageFlags> 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<IGuildCreate> 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<IGuildCreate> 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<IGuildMemberAdd> 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<IMessageDelete> 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<IMessageUpdate> 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);