using BotPages.Core.Abstractions; using BotPages.Core.Logging; namespace BotPages.Core.Middleware; /// /// Middleware для глобальной ловли ошибок. /// public sealed class ErrorHandlingMiddleware : IPageMiddleware { private readonly ILogger _logger; /// public ErrorHandlingMiddleware(ILogger logger) { _logger = logger; } /// public async Task InvokeAsync(PageContext ctx, Func next, CancellationToken ct) { try { await next(); } catch (Exception ex) { _logger.Log(LogLevel.Critical, "Unhandled exception in middleware pipeline.", ex); // Отправляем универсальный запрос с текстом об ошибке await ctx.SendAsync(new SendRequest { ChatId = ctx.Update.Chat.Id, Text = "Произошла ошибка при обработке запроса. Попробуйте ещё раз." }, ct); } } }