diff --git a/modules/RichSiteSummary/Service/MessageSender.cs b/modules/RichSiteSummary/Service/MessageSender.cs index 70294eb..5f1548f 100644 --- a/modules/RichSiteSummary/Service/MessageSender.cs +++ b/modules/RichSiteSummary/Service/MessageSender.cs @@ -2,7 +2,6 @@ using System.Collections.Concurrent; using System.Text; using System.Threading.Tasks; -using BotFramework; using BotFramework.Abstractions; using Kruzya.TelegramBot.Core.Service; using Microsoft.Extensions.Logging; @@ -16,41 +15,40 @@ namespace Kruzya.TelegramBot.RichSiteSummary.Service { protected override TimeSpan TimerPeriod => TimeSpan.FromSeconds(1); - protected readonly ConcurrentQueue _queue; - protected readonly ConcurrentQueue _unsubscribeQueue; + protected readonly ConcurrentQueue Queue; + protected readonly ConcurrentQueue UnsubscribeQueue; public MessageSender(ILogger logger, IBotInstance bot, ConcurrentQueue userMessageQueue, ConcurrentQueue userUnsubscribeQueue) : base(logger, bot) { - _unsubscribeQueue = userUnsubscribeQueue; - _queue = userMessageQueue; + UnsubscribeQueue = userUnsubscribeQueue; + Queue = userMessageQueue; } protected override async Task OnRun() { - if (_queue.Count == 0) + if (Queue.IsEmpty || !Queue.TryDequeue(out var message)) { return; } - UserMessage message; - if (!_queue.TryDequeue(out message)) - { - return; - } - - _logger.LogDebug($"Message for {message.ChatId.Identifier} dequeued."); + _logger.LogDebug("Message for {ChatId} dequeued.", message.ChatId.Identifier); try { if (string.IsNullOrWhiteSpace(message.ImageUrl)) + { await _bot.BotClient.SendTextMessageAsync(message.ChatId, message.Text, message.ParseMode, null, message.DisableWebPagePreview); + } + else + { await _bot.BotClient.SendPhotoAsync(message.ChatId, message.ImageUrl, message.Text, message.ParseMode, null, message.DisableWebPagePreview); + } } catch (ApiRequestException e) { - _logger.LogDebug($"Message for {message.ChatId.Identifier} is failed: {e.Message}."); + _logger.LogDebug("Message for {ChatId} is failed: {error}.", message.ChatId.Identifier, e.Message); if (!e.Message.Contains("bot was blocked by user")) { ReEnqueue(message, e, message.ChatId); // looks like a network issue @@ -59,14 +57,14 @@ namespace Kruzya.TelegramBot.RichSiteSummary.Service // User added bot to blacklist. // Unsubscribe him. - _unsubscribeQueue.Enqueue(new UserUnsubscribe() + UnsubscribeQueue.Enqueue(new UserUnsubscribe { ChatId = message.ChatId }); } catch (Exception e) { - _logger.LogDebug($"Message for {message.ChatId.Identifier} is failed: {e.Message}."); + _logger.LogDebug("Message for {ChatId} is failed: {error}.", message.ChatId.Identifier, e.Message); ReEnqueue(message, e); } } @@ -85,7 +83,7 @@ namespace Kruzya.TelegramBot.RichSiteSummary.Service _logger.LogError(eMessage.ToString()); } - _queue.Enqueue(message); + Queue.Enqueue(message); } } } \ No newline at end of file