diff --git a/Directory.Packages.props b/Directory.Packages.props index 8aea8da..10178a3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -9,7 +9,7 @@ - + diff --git a/src/Nocr.TelegramListener.AppServices/UpdateListeners/UpdateListenerBackgroundService.cs b/src/Nocr.TelegramListener.AppServices/UpdateListeners/UpdateListenerBackgroundService.cs index 0b78622..267a89c 100644 --- a/src/Nocr.TelegramListener.AppServices/UpdateListeners/UpdateListenerBackgroundService.cs +++ b/src/Nocr.TelegramListener.AppServices/UpdateListeners/UpdateListenerBackgroundService.cs @@ -17,6 +17,8 @@ public sealed class UpdateListenerBackgroundService : BackgroundService private readonly ITelegramClientContainer _telegramClientContainer; private readonly TelegramRegistry _telegramRegistry; + private DateTimeOffset _activityStartTime = DateTimeOffset.UtcNow; + public UpdateListenerBackgroundService( ILogger logger, IServiceProvider serviceProvider, @@ -37,6 +39,14 @@ public sealed class UpdateListenerBackgroundService : BackgroundService Client? client = null; while (!stoppingToken.IsCancellationRequested) { + if (DateTimeOffset.UtcNow - TimeSpan.FromHours(2) < _activityStartTime) + { + _logger.LogInformation("Timeout exceed."); + _activityStartTime = DateTimeOffset.UtcNow; + + client = null; + } + if (client == null) { _telegramRegistry.Clear(); @@ -44,7 +54,7 @@ public sealed class UpdateListenerBackgroundService : BackgroundService _telegramClientContainer.Initialize(); client = _telegramClientContainer.Client; - client.OnUpdate += HandleUpdates; + client.OnUpdates += HandleUpdates; var my = await client.LoginUserIfNeeded(); _telegramRegistry.SetMy(my); @@ -52,11 +62,10 @@ public sealed class UpdateListenerBackgroundService : BackgroundService _telegramRegistry.My.username ?? _telegramRegistry.My.first_name + " " + _telegramRegistry.My.last_name, _telegramRegistry.My.id); - - await _telegramRegistry.Update(client); } - - await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken); + + await _telegramRegistry.Update(client); + await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken); } }