namespace Lagrange.OneBot.Utility.Fallbacks; public class FallbackAsync { private readonly List>> _executors = []; internal static FallbackAsync Create() { return new(); } public FallbackAsync Add(Func> executor) { _executors.Add(executor); return this; } public async Task ExecuteAsync(Func> @default, CancellationToken token = default) { foreach (var executor in _executors) { var result = await executor(token); if (result != null) return result; } return await @default(token); } }