using BotPages.Core.Abstractions; using BotPages.Core.Logging; namespace BotPages.Core.Middleware; /// /// Middleware для логирования всех входящих апдейтов. /// public sealed class LoggingMiddleware : IPageMiddleware { private readonly ILogger _logger; /// public LoggingMiddleware(ILogger logger) => _logger = logger; /// public async Task InvokeAsync(PageContext ctx, Func next, CancellationToken ct) { // Логируем базовую информацию _logger.Log(LogLevel.Info, $"Update from {ctx.Update.Adapter.Id} | Chat: {ctx.Update.Chat.Id} | User: {ctx.Update.User.Id}"); // Логируем текст, кнопки, файлы if (ctx.Update.Text is not null) _logger.Log(LogLevel.Info, $"Text: {ctx.Update.Text}"); if (ctx.Update.Files.Count > 0) _logger.Log(LogLevel.Info, $"Files: {ctx.Update.Files.Count}"); // Передаём управление дальше по конвейеру await next(); } }