mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-05-05 13:36:30 +03:00
Add ChannelApiExtensions (#217)
This PR adds an extension method to make it easier to pass Result<Embed> to CreateMessageAsync --------- Co-authored-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
parent
9a23e1d533
commit
541e18fff0
10 changed files with 64 additions and 102 deletions
29
src/Extensions/ChannelApiExtensions.cs
Normal file
29
src/Extensions/ChannelApiExtensions.cs
Normal file
|
@ -0,0 +1,29 @@
|
|||
using OneOf;
|
||||
using Remora.Discord.API.Abstractions.Objects;
|
||||
using Remora.Discord.API.Abstractions.Rest;
|
||||
using Remora.Discord.API.Objects;
|
||||
using Remora.Rest.Core;
|
||||
using Remora.Results;
|
||||
|
||||
namespace Octobot.Extensions;
|
||||
|
||||
public static class ChannelApiExtensions
|
||||
{
|
||||
public static async Task<Result> CreateMessageWithEmbedResultAsync(this IDiscordRestChannelAPI channelApi,
|
||||
Snowflake channelId, Optional<string> message = default, Optional<string> nonce = default,
|
||||
Optional<bool> isTextToSpeech = default, Optional<Result<Embed>> embedResult = 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)
|
||||
{
|
||||
if (!embedResult.IsDefined() || !embedResult.Value.IsDefined(out var embed))
|
||||
{
|
||||
return Result.FromError(embedResult.Value);
|
||||
}
|
||||
|
||||
return (Result)await channelApi.CreateMessageAsync(channelId, message, nonce, isTextToSpeech, new[] { embed },
|
||||
allowedMentions, messageRefenence, components, stickerIds, attachments, flags, ct);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue