Files
BotPages/BotPages.Core/Pipeline/ThrottleMiddleware.cs

25 lines
809 B
C#

namespace BotPages.Core
{
/// <summary>
/// Middleware троттлинга для ограничений нагрузки.
/// </summary>
public sealed class ThrottleMiddleware : IUpdateMiddleware
{
private readonly TimeSpan _delay;
/// <summary>
/// Создаёт middleware троттлинга.
/// </summary>
public ThrottleMiddleware(TimeSpan delay) => _delay = delay;
/// <summary>
/// Добавляет искусственную задержку перед продолжением обработки.
/// </summary>
public async Task InvokeAsync(UpdateContext ctx, Func<Task> next, CancellationToken ct)
{
await Task.Delay(_delay, ct);
await next();
}
}
}