using Deal.Telegram.Dialogs; namespace Deal.Telegram.Dialogs; public sealed class RandomBackfillPacer : IBackfillPacer { async Task IBackfillPacer.WaitAsync( double minSeconds, double maxSeconds, CancellationToken cancellationToken) { if (maxSeconds < 0 || minSeconds < 0 || minSeconds > maxSeconds) { throw new ArgumentOutOfRangeException(nameof(maxSeconds), $"Некорректный диапазон паузы: [{minSeconds}, {maxSeconds}]."); } if (maxSeconds == 0) { return; } double seconds = minSeconds == maxSeconds ? minSeconds : minSeconds + Random.Shared.NextDouble() * (maxSeconds - minSeconds); await Task.Delay(TimeSpan.FromSeconds(seconds), cancellationToken).ConfigureAwait(false); } }