[rss] MessageSender service cleanup

This commit is contained in:
West14
2022-04-21 14:33:01 +03:00
parent 00bfa59d11
commit 04a660181d
@@ -2,7 +2,6 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using BotFramework;
using BotFramework.Abstractions; using BotFramework.Abstractions;
using Kruzya.TelegramBot.Core.Service; using Kruzya.TelegramBot.Core.Service;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@@ -16,41 +15,40 @@ namespace Kruzya.TelegramBot.RichSiteSummary.Service
{ {
protected override TimeSpan TimerPeriod => TimeSpan.FromSeconds(1); protected override TimeSpan TimerPeriod => TimeSpan.FromSeconds(1);
protected readonly ConcurrentQueue<UserMessage> _queue; protected readonly ConcurrentQueue<UserMessage> Queue;
protected readonly ConcurrentQueue<UserUnsubscribe> _unsubscribeQueue; protected readonly ConcurrentQueue<UserUnsubscribe> UnsubscribeQueue;
public MessageSender(ILogger<MessageSender> logger, IBotInstance bot, ConcurrentQueue<UserMessage> userMessageQueue, ConcurrentQueue<UserUnsubscribe> userUnsubscribeQueue) : base(logger, bot) public MessageSender(ILogger<MessageSender> logger, IBotInstance bot, ConcurrentQueue<UserMessage> userMessageQueue, ConcurrentQueue<UserUnsubscribe> userUnsubscribeQueue) : base(logger, bot)
{ {
_unsubscribeQueue = userUnsubscribeQueue; UnsubscribeQueue = userUnsubscribeQueue;
_queue = userMessageQueue; Queue = userMessageQueue;
} }
protected override async Task OnRun() protected override async Task OnRun()
{ {
if (_queue.Count == 0) if (Queue.IsEmpty || !Queue.TryDequeue(out var message))
{ {
return; return;
} }
UserMessage message; _logger.LogDebug("Message for {ChatId} dequeued.", message.ChatId.Identifier);
if (!_queue.TryDequeue(out message))
{
return;
}
_logger.LogDebug($"Message for {message.ChatId.Identifier} dequeued.");
try try
{ {
if (string.IsNullOrWhiteSpace(message.ImageUrl)) if (string.IsNullOrWhiteSpace(message.ImageUrl))
{
await _bot.BotClient.SendTextMessageAsync(message.ChatId, message.Text, message.ParseMode, null, await _bot.BotClient.SendTextMessageAsync(message.ChatId, message.Text, message.ParseMode, null,
message.DisableWebPagePreview); message.DisableWebPagePreview);
}
else else
{
await _bot.BotClient.SendPhotoAsync(message.ChatId, message.ImageUrl, message.Text, await _bot.BotClient.SendPhotoAsync(message.ChatId, message.ImageUrl, message.Text,
message.ParseMode, null, message.DisableWebPagePreview); message.ParseMode, null, message.DisableWebPagePreview);
}
} }
catch (ApiRequestException e) 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")) if (!e.Message.Contains("bot was blocked by user"))
{ {
ReEnqueue(message, e, message.ChatId); // looks like a network issue ReEnqueue(message, e, message.ChatId); // looks like a network issue
@@ -59,14 +57,14 @@ namespace Kruzya.TelegramBot.RichSiteSummary.Service
// User added bot to blacklist. // User added bot to blacklist.
// Unsubscribe him. // Unsubscribe him.
_unsubscribeQueue.Enqueue(new UserUnsubscribe() UnsubscribeQueue.Enqueue(new UserUnsubscribe
{ {
ChatId = message.ChatId ChatId = message.ChatId
}); });
} }
catch (Exception e) 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); ReEnqueue(message, e);
} }
} }
@@ -85,7 +83,7 @@ namespace Kruzya.TelegramBot.RichSiteSummary.Service
_logger.LogError(eMessage.ToString()); _logger.LogError(eMessage.ToString());
} }
_queue.Enqueue(message); Queue.Enqueue(message);
} }
} }
} }