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();
}
}