Fixed all warnings.

This commit is contained in:
Ruberoid 2025-07-18 19:45:54 +03:00
parent ea27d8d448
commit dd7bfb1f87
13 changed files with 94 additions and 24 deletions

View File

@ -11,9 +11,9 @@
<PackageVersion Include="Insight.Localizer" Version="1.1.0" />
</ItemGroup>
<ItemGroup Label="Nocr">
<PackageVersion Include="Nocr.TextMatcher.Api.Contracts" />
<PackageVersion Include="Nocr.TextMatcher.Async.Api.Contracts" />
<PackageVersion Include="Nocr.Users.Api.Contracts" />
<PackageVersion Include="Nocr.TextMatcher.Api.Contracts" Version="0.6.2" />
<PackageVersion Include="Nocr.TextMatcher.Async.Api.Contracts" Version="0.6.2" />
<PackageVersion Include="Nocr.Users.Api.Contracts" Version="0.6.2" />
</ItemGroup>
<ItemGroup Label="Rebus">
<PackageVersion Include="Rebus" Version="8.2.2" />

View File

@ -28,6 +28,12 @@ public abstract class StartHandlerBase
public async Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.Message?.From is null || update.CallbackQuery?.Message is null)
{
_logger.LogError("Не удалось выделить пользовательский колбэк.\n{@Update}", update);
return;
}
long telegramId;
switch (update.Type)
{

View File

@ -14,6 +14,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.ActivateSubsc
public class ActivateSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpdateHandler<ActivateSubscriptionMatcher>
{
private readonly ILogger<ActivateSubscriptionHandler> _logger;
public ActivateSubscriptionHandler(ILogger<ActivateSubscriptionHandler> logger,
ILocalizer localizer,
IMessageDispatcherQueue messageQueue,
@ -22,18 +23,25 @@ public class ActivateSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchin
ITextSubscriptionsController subscriptionsController)
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
{
_logger = logger;
}
public async Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.CallbackQuery is null)
{
_logger.LogError("Не удалось выделить пользовательский колбэк.\n{@Update}", update);
return;
}
var callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
var from = update.CallbackQuery.From.Id;
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
{
Logger.LogWarning(
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
callbackData, from, update.CallbackQuery.Message.Chat.Id);
_logger.LogWarning(
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}.",
callbackData, from, update.CallbackQuery?.Message?.Chat.Id);
SendErrorMessage(from);
return;
}
@ -44,11 +52,17 @@ public class ActivateSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchin
}
catch (Exception ex)
{
Logger.LogError(ex, "Не удалось деактивировать подписку");
_logger.LogError(ex, "Не удалось деактивировать подписку.");
SendErrorMessage(from);
throw;
}
if (update.CallbackQuery.Message is null)
{
_logger.LogError("Не удалось выделить идентификатор сообщения из пользовательского колбэка.\n{@CallbackQuery}", update.CallbackQuery);
return;
}
await EditSubscriptionMessage(from, update.CallbackQuery.Message.MessageId, subscriptionId,
CancellationToken.None);
}

View File

@ -27,6 +27,12 @@ public sealed class AddSubscriptionHandler : IMatchingUpdateHandler<AddSubscript
public async Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.CallbackQuery?.Message is null)
{
_logger.LogError("Не удалось выделить пользовательский колбэк.\n{@Update}", update);
return;
}
var chatId = update.CallbackQuery.Message.Chat.Id;
var messageId = update.CallbackQuery.Message.MessageId;

View File

@ -15,7 +15,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.DeactivateSub
public class DeactivateSubscriptionHandler : ViewSubscriptionHandlerBase,
IMatchingUpdateHandler<DeactivateSubscriptionMatcher>
{
private readonly ILogger<DeactivateSubscriptionHandler> _logger;
public DeactivateSubscriptionHandler(ILogger<DeactivateSubscriptionHandler> logger,
ILocalizer localizer,
IMessageDispatcherQueue messageQueue,
@ -24,16 +24,23 @@ public class DeactivateSubscriptionHandler : ViewSubscriptionHandlerBase,
ITextSubscriptionsController subscriptionsController)
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
{
_logger = logger;
}
public async Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.CallbackQuery?.Message is null)
{
_logger.LogError("Не удалось выделить пользовательский колбэк.\n{@Update}", update);
return;
}
var callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
var from = update.CallbackQuery.From.Id;
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
{
Logger.LogWarning(
_logger.LogWarning(
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
callbackData, from, update.CallbackQuery.Message.Chat.Id);
SendErrorMessage(from);
@ -46,7 +53,7 @@ public class DeactivateSubscriptionHandler : ViewSubscriptionHandlerBase,
}
catch (Exception ex)
{
Logger.LogError(ex, "Не удалось деактивировать подписку");
_logger.LogError(ex, "Не удалось деактивировать подписку");
SendErrorMessage(from);
throw;
}

View File

@ -18,6 +18,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.DeleteSubscri
public class DeleteSubscriptionHandler : ViewSubscriptionHandlerBase,
IMatchingUpdateHandler<DeleteSubscriptionMatcher>
{
private readonly ILogger<DeleteSubscriptionHandler> _logger;
public DeleteSubscriptionHandler(ILogger<DeleteSubscriptionHandler> logger,
ILocalizer localizer,
IMessageDispatcherQueue messageQueue,
@ -26,16 +27,23 @@ public class DeleteSubscriptionHandler : ViewSubscriptionHandlerBase,
ITextSubscriptionsController subscriptionsController)
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
{
_logger = logger;
}
public async Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.CallbackQuery?.Message is null)
{
_logger.LogError("Не удалось выделить пользовательский колбэк.\n{@Update}", update);
return;
}
var callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
var from = update.CallbackQuery.From.Id;
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
{
Logger.LogWarning(
_logger.LogWarning(
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
callbackData, from, update.CallbackQuery.Message.Chat.Id);
SendErrorMessage(from);
@ -48,7 +56,7 @@ public class DeleteSubscriptionHandler : ViewSubscriptionHandlerBase,
}
catch (Exception ex)
{
Logger.LogError(ex, "Не удалось удалить подписку");
_logger.LogError(ex, "Не удалось удалить подписку.");
SendErrorMessage(from);
throw;
}

View File

@ -24,6 +24,12 @@ public class FeedbackHandler : IMatchingUpdateHandler<FeedbackMatcher>
public Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.CallbackQuery?.Message is null)
{
_logger.LogError("Не удалось выделить идентификатор сообщения из пользовательского колбэка.\n{@CallbackQuery}", update.CallbackQuery);
return Task.CompletedTask;
}
// TODO: Check, that other messages sent to chat, no to one, who clicks
var message = new TextMessage(update.CallbackQuery.Message.Chat.Id)
{

View File

@ -13,6 +13,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.ViewSubscript
public class ViewSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpdateHandler<ViewSubscriptionMatcher>
{
private readonly ILogger<ViewSubscriptionHandler> _logger;
public ViewSubscriptionHandler(ILogger<ViewSubscriptionHandler> logger,
ILocalizer localizer,
IMessageDispatcherQueue messageQueue,
@ -21,10 +22,17 @@ public class ViewSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpd
ITextSubscriptionsController subscriptionsController) :
base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
{
_logger = logger;
}
public async Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.CallbackQuery?.Message is null)
{
_logger.LogError("Не удалось выделить пользовательский колбэк.\n{@Update}", update);
return;
}
var callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
var from = update.CallbackQuery.From.Id;

View File

@ -32,12 +32,18 @@ public sealed class FeedbackMessageHandler : IMatchingUpdateHandler<FeedbackMess
public Task Handle(Update update, CancellationToken cancellationToken = default)
{
if (update.Message?.Text is null)
{
_logger.LogError("Не удалось выделить пользовательское сообщение.\n{@Update}", update);
return Task.CompletedTask;
}
var from = update.Message.From;
var feedbackText = update.Message.Text
.Replace("/feedback", string.Empty)
.Trim(' ');
var message = new TextMessage(from.Id)
var message = new TextMessage(from?.Id)
{
Text = _localizer.Get(nameof(FeedbackMessageHandler), "Text"),
ReplyMarkup = new InlineKeyboardMarkup(new InlineKeyboardButton(_localizer.Get("buttons", "back"))
@ -55,8 +61,8 @@ public sealed class FeedbackMessageHandler : IMatchingUpdateHandler<FeedbackMess
Text = _localizer.Get(nameof(FeedbackMessageHandler), "FeedbackText")
.FormatWith(new
{
FromId = from.Id,
FromUsername = string.IsNullOrWhiteSpace(from.Username) ? "anonymous" : $"@{from.Username}",
FromId = from?.Id,
FromUsername = string.IsNullOrWhiteSpace(from?.Username) ? "anonymous" : $"@{from.Username}",
Text = feedbackText
})
};

View File

@ -16,14 +16,22 @@ namespace Nocr.TelegramClient.AppServices.Handlers.Messages.SubscribeExactMessag
public abstract class SubscribeHandlerBase : ViewSubscriptionHandlerBase
{
protected SubscribeHandlerBase(ILogger logger, ILocalizer localizer, IMessageDispatcherQueue messageQueue, IBot bot,
private readonly ILogger<SubscribeHandlerBase> _logger;
protected SubscribeHandlerBase(ILogger<SubscribeHandlerBase> logger, ILocalizer localizer, IMessageDispatcherQueue messageQueue, IBot bot,
IUsersService usersService, ITextSubscriptionsController subscriptionsController)
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
{
_logger = logger;
}
protected async Task Handle(Update update, Regex regex, TextSubscriptionRule rule, CancellationToken cancellationToken = default)
{
if (update.Message?.Text is null || update.Message?.From is null)
{
_logger.LogError("Не удалось выделить пользовательское сообщение.\n{@Update}", update);
return;
}
var receiverId = update.Message.Chat.Id;
var match = regex.Match(update.Message.Text);

View File

@ -18,6 +18,7 @@ public sealed class UsersService : IUsersService
{
var user = await _usersController.GetByIdentity(UserIdentityType.TelegramId, telegramId.ToString(),
cancellationToken);
if (user == null)
{
await _usersController.Create(new CreateUserRequest
@ -31,7 +32,7 @@ public sealed class UsersService : IUsersService
cancellationToken);
}
return user;
return user ?? throw new InvalidOperationException($"Failed to create or retrieve user with telegramId {telegramId}");
}
public Task<UserData?> GetByIdentity(long telegramId, CancellationToken cancellationToken = default)

View File

@ -2,11 +2,11 @@ namespace Nocr.TelegramClient.Core.Options;
public sealed class RebusRabbitMqOptions
{
public string ConnectionString { get; set; }
public required string ConnectionString { get; set; }
public string InputQueueName { get; set; }
public required string InputQueueName { get; set; }
public string DirectExchangeName { get; set; }
public required string DirectExchangeName { get; set; }
public string TopicsExchangeName { get; set; }
public required string TopicsExchangeName { get; set; }
}

View File

@ -2,5 +2,5 @@ namespace Nocr.TelegramClient.Core.Options;
public class RestEaseOptions
{
public string BasePath { get; set; }
public required string BasePath { get; set; }
}