using Discord; namespace EllieBot.Marmalade; public static class MarmaladeExtensions { public static Task EmbedAsync(this IMessageChannel ch, EmbedBuilder embed, string msg = "") => ch.SendMessageAsync(msg, embed: embed.Build(), options: new() { RetryMode = RetryMode.Retry502 }); // unlocalized public static Task SendConfirmAsync(this AnyContext ctx, string msg) => ctx.Channel.EmbedAsync(new EmbedBuilder() .WithColor(0, 200, 0) .WithDescription(msg)); public static Task SendPendingAsync(this AnyContext ctx, string msg) => ctx.Channel.EmbedAsync(new EmbedBuilder() .WithColor(200, 200, 0) .WithDescription(msg)); public static Task SendErrorAsync(this AnyContext ctx, string msg) => ctx.Channel.EmbedAsync(new EmbedBuilder() .WithColor(200, 0, 0) .WithDescription(msg)); // localized public static Task ConfirmAsync(this AnyContext ctx) => ctx.Message.AddReactionAsync(new Emoji("✅")); public static Task ErrorAsync(this AnyContext ctx) => ctx.Message.AddReactionAsync(new Emoji("❌")); public static Task WarningAsync(this AnyContext ctx) => ctx.Message.AddReactionAsync(new Emoji("⚠️")); public static Task WaitAsync(this AnyContext ctx) => ctx.Message.AddReactionAsync(new Emoji("🤔")); public static Task ErrorLocalizedAsync(this AnyContext ctx, string key, params object[]? args) => ctx.SendErrorAsync(ctx.GetText(key, args)); public static Task PendingLocalizedAsync(this AnyContext ctx, string key, params object[]? args) => ctx.SendPendingAsync(ctx.GetText(key, args)); public static Task ConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args) => ctx.SendConfirmAsync(ctx.GetText(key, args)); public static Task ReplyErrorLocalizedAsync(this AnyContext ctx, string key, params object[]? args) => ctx.SendErrorAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}"); public static Task ReplyPendingLocalizedAsync(this AnyContext ctx, string key, params object[]? args) => ctx.SendPendingAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}"); public static Task ReplyConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args) => ctx.SendConfirmAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}"); }