mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-03 16:24:27 -05:00 
			
		
		
		
	Part2 of the response system rework
This commit is contained in:
		@@ -48,5 +48,5 @@ public abstract class AnyContext
 | 
			
		||||
    /// instead of manually creating embedbuilder instances
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// <returns>A context-aware <see cref="IEmbedBuilder"/> instance </returns>
 | 
			
		||||
    public abstract IEmbedBuilder Embed();
 | 
			
		||||
    public abstract EmbedBuilder Embed();
 | 
			
		||||
}
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
namespace NadekoBot.Medusa;
 | 
			
		||||
 | 
			
		||||
public static class EmbedBuilderExtensions
 | 
			
		||||
{
 | 
			
		||||
    public static IEmbedBuilder WithOkColor(this IEmbedBuilder eb)
 | 
			
		||||
        => eb.WithColor(EmbedColor.Ok);
 | 
			
		||||
    
 | 
			
		||||
    public static IEmbedBuilder WithPendingColor(this IEmbedBuilder eb)
 | 
			
		||||
        => eb.WithColor(EmbedColor.Pending);
 | 
			
		||||
    
 | 
			
		||||
    public static IEmbedBuilder WithErrorColor(this IEmbedBuilder eb)
 | 
			
		||||
        => eb.WithColor(EmbedColor.Error);
 | 
			
		||||
}
 | 
			
		||||
@@ -1,65 +1,65 @@
 | 
			
		||||
using Discord;
 | 
			
		||||
 | 
			
		||||
namespace NadekoBot.Medusa;
 | 
			
		||||
 | 
			
		||||
public static class MedusaExtensions
 | 
			
		||||
{
 | 
			
		||||
    public static Task<IUserMessage> EmbedAsync(this IMessageChannel ch, IEmbedBuilder embed, string msg = "")
 | 
			
		||||
        => ch.SendMessageAsync(msg,
 | 
			
		||||
            embed: embed.Build(),
 | 
			
		||||
            options: new()
 | 
			
		||||
            {
 | 
			
		||||
                RetryMode = RetryMode.Retry502
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
    // unlocalized
 | 
			
		||||
    public static Task<IUserMessage> SendConfirmAsync(this IMessageChannel ch, AnyContext ctx, string msg)
 | 
			
		||||
        => ch.EmbedAsync(ctx.Embed().WithOkColor().WithDescription(msg));
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> SendPendingAsync(this IMessageChannel ch, AnyContext ctx, string msg)
 | 
			
		||||
        => ch.EmbedAsync(ctx.Embed().WithPendingColor().WithDescription(msg));
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> SendErrorAsync(this IMessageChannel ch, AnyContext ctx, string msg)
 | 
			
		||||
        => ch.EmbedAsync(ctx.Embed().WithErrorColor().WithDescription(msg));
 | 
			
		||||
 | 
			
		||||
    // unlocalized
 | 
			
		||||
    public static Task<IUserMessage> SendConfirmAsync(this AnyContext ctx, string msg)
 | 
			
		||||
        => ctx.Channel.SendConfirmAsync(ctx, msg);
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> SendPendingAsync(this AnyContext ctx, string msg)
 | 
			
		||||
        => ctx.Channel.SendPendingAsync(ctx, msg);
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> SendErrorAsync(this AnyContext ctx, string msg)
 | 
			
		||||
        => ctx.Channel.SendErrorAsync(ctx, 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<IUserMessage> ErrorLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
        => ctx.SendErrorAsync(ctx.GetText(key, args));
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> PendingLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
        => ctx.SendPendingAsync(ctx.GetText(key, args));
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> ConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
        => ctx.SendConfirmAsync(ctx.GetText(key, args));
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> ReplyErrorLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
        => ctx.SendErrorAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}");
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> ReplyPendingLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
        => ctx.SendPendingAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}");
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> ReplyConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
        => ctx.SendConfirmAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}");
 | 
			
		||||
}
 | 
			
		||||
// using Discord;
 | 
			
		||||
//
 | 
			
		||||
// namespace NadekoBot.Medusa;
 | 
			
		||||
//
 | 
			
		||||
// public static class MedusaExtensions
 | 
			
		||||
// {
 | 
			
		||||
//     public static Task<IUserMessage> EmbedAsync(this IMessageChannel ch, EmbedBuilder embed, string msg = "")
 | 
			
		||||
//         => ch.SendMessageAsync(msg,
 | 
			
		||||
//             embed: embed.Build(),
 | 
			
		||||
//             options: new()
 | 
			
		||||
//             {
 | 
			
		||||
//                 RetryMode = RetryMode.Retry502
 | 
			
		||||
//             });
 | 
			
		||||
//
 | 
			
		||||
//     // unlocalized
 | 
			
		||||
//     public static Task<IUserMessage> SendConfirmAsync(this IMessageChannel ch, AnyContext ctx, string msg)
 | 
			
		||||
//         => ch.EmbedAsync(ctx.Embed().WithOkColor().WithDescription(msg));
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> SendPendingAsync(this IMessageChannel ch, AnyContext ctx, string msg)
 | 
			
		||||
//         => ch.EmbedAsync(ctx.Embed().WithPendingColor().WithDescription(msg));
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> SendErrorAsync(this IMessageChannel ch, AnyContext ctx, string msg)
 | 
			
		||||
//         => ch.EmbedAsync(ctx.Embed().WithErrorColor().WithDescription(msg));
 | 
			
		||||
//
 | 
			
		||||
//     // unlocalized
 | 
			
		||||
//     public static Task<IUserMessage> SendConfirmAsync(this AnyContext ctx, string msg)
 | 
			
		||||
//         => ctx.Channel.SendConfirmAsync(ctx, msg);
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> SendPendingAsync(this AnyContext ctx, string msg)
 | 
			
		||||
//         => ctx.Channel.SendPendingAsync(ctx, msg);
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> SendErrorAsync(this AnyContext ctx, string msg)
 | 
			
		||||
//         => ctx.Channel.SendErrorAsync(ctx, 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<IUserMessage> ErrorLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
//         => ctx.SendErrorAsync(ctx.GetText(key, args));
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> PendingLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
//         => ctx.SendPendingAsync(ctx.GetText(key, args));
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> ConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
//         => ctx.SendConfirmAsync(ctx.GetText(key, args));
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> ReplyErrorLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
//         => ctx.SendErrorAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}");
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> ReplyPendingLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
//         => ctx.SendPendingAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}");
 | 
			
		||||
//
 | 
			
		||||
//     public static Task<IUserMessage> ReplyConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
 | 
			
		||||
//         => ctx.SendConfirmAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}");
 | 
			
		||||
// }
 | 
			
		||||
@@ -4,15 +4,15 @@ namespace NadekoBot;
 | 
			
		||||
 | 
			
		||||
public interface IEmbedBuilder
 | 
			
		||||
{
 | 
			
		||||
    IEmbedBuilder WithDescription(string? desc);
 | 
			
		||||
    IEmbedBuilder WithTitle(string? title);
 | 
			
		||||
    IEmbedBuilder AddField(string title, object value, bool isInline = false);
 | 
			
		||||
    IEmbedBuilder WithFooter(string text, string? iconUrl = null);
 | 
			
		||||
    IEmbedBuilder WithAuthor(string name, string? iconUrl = null, string? url = null);
 | 
			
		||||
    IEmbedBuilder WithColor(EmbedColor color);
 | 
			
		||||
    IEmbedBuilder WithDiscordColor(Color color);
 | 
			
		||||
    EmbedBuilder WithDescription(string? desc);
 | 
			
		||||
    EmbedBuilder WithTitle(string? title);
 | 
			
		||||
    EmbedBuilder AddField(string title, object value, bool isInline = false);
 | 
			
		||||
    EmbedBuilder WithFooter(string text, string? iconUrl = null);
 | 
			
		||||
    EmbedBuilder WithAuthor(string name, string? iconUrl = null, string? url = null);
 | 
			
		||||
    EmbedBuilder WithColor(EmbedColor color);
 | 
			
		||||
    EmbedBuilder WithDiscordColor(Color color);
 | 
			
		||||
    Embed Build();
 | 
			
		||||
    IEmbedBuilder WithUrl(string url);
 | 
			
		||||
    IEmbedBuilder WithImageUrl(string url);
 | 
			
		||||
    IEmbedBuilder WithThumbnailUrl(string url);
 | 
			
		||||
    EmbedBuilder WithUrl(string url);
 | 
			
		||||
    EmbedBuilder WithImageUrl(string url);
 | 
			
		||||
    EmbedBuilder WithThumbnailUrl(string url);
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user