Fixed all warnings.
This commit is contained in:
parent
ea27d8d448
commit
dd7bfb1f87
@ -11,9 +11,9 @@
|
|||||||
<PackageVersion Include="Insight.Localizer" Version="1.1.0" />
|
<PackageVersion Include="Insight.Localizer" Version="1.1.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Nocr">
|
<ItemGroup Label="Nocr">
|
||||||
<PackageVersion Include="Nocr.TextMatcher.Api.Contracts" />
|
<PackageVersion Include="Nocr.TextMatcher.Api.Contracts" Version="0.6.2" />
|
||||||
<PackageVersion Include="Nocr.TextMatcher.Async.Api.Contracts" />
|
<PackageVersion Include="Nocr.TextMatcher.Async.Api.Contracts" Version="0.6.2" />
|
||||||
<PackageVersion Include="Nocr.Users.Api.Contracts" />
|
<PackageVersion Include="Nocr.Users.Api.Contracts" Version="0.6.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Rebus">
|
<ItemGroup Label="Rebus">
|
||||||
<PackageVersion Include="Rebus" Version="8.2.2" />
|
<PackageVersion Include="Rebus" Version="8.2.2" />
|
||||||
|
|||||||
@ -28,6 +28,12 @@ public abstract class StartHandlerBase
|
|||||||
|
|
||||||
public async Task Handle(Update update, CancellationToken cancellationToken = default)
|
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;
|
long telegramId;
|
||||||
switch (update.Type)
|
switch (update.Type)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -14,6 +14,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.ActivateSubsc
|
|||||||
|
|
||||||
public class ActivateSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpdateHandler<ActivateSubscriptionMatcher>
|
public class ActivateSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpdateHandler<ActivateSubscriptionMatcher>
|
||||||
{
|
{
|
||||||
|
private readonly ILogger<ActivateSubscriptionHandler> _logger;
|
||||||
public ActivateSubscriptionHandler(ILogger<ActivateSubscriptionHandler> logger,
|
public ActivateSubscriptionHandler(ILogger<ActivateSubscriptionHandler> logger,
|
||||||
ILocalizer localizer,
|
ILocalizer localizer,
|
||||||
IMessageDispatcherQueue messageQueue,
|
IMessageDispatcherQueue messageQueue,
|
||||||
@ -22,18 +23,25 @@ public class ActivateSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchin
|
|||||||
ITextSubscriptionsController subscriptionsController)
|
ITextSubscriptionsController subscriptionsController)
|
||||||
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(Update update, CancellationToken cancellationToken = default)
|
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 callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
|
||||||
var from = update.CallbackQuery.From.Id;
|
var from = update.CallbackQuery.From.Id;
|
||||||
|
|
||||||
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
|
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
|
||||||
{
|
{
|
||||||
Logger.LogWarning(
|
_logger.LogWarning(
|
||||||
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
|
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}.",
|
||||||
callbackData, from, update.CallbackQuery.Message.Chat.Id);
|
callbackData, from, update.CallbackQuery?.Message?.Chat.Id);
|
||||||
SendErrorMessage(from);
|
SendErrorMessage(from);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -44,11 +52,17 @@ public class ActivateSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchin
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.LogError(ex, "Не удалось деактивировать подписку");
|
_logger.LogError(ex, "Не удалось деактивировать подписку.");
|
||||||
SendErrorMessage(from);
|
SendErrorMessage(from);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (update.CallbackQuery.Message is null)
|
||||||
|
{
|
||||||
|
_logger.LogError("Не удалось выделить идентификатор сообщения из пользовательского колбэка.\n{@CallbackQuery}", update.CallbackQuery);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await EditSubscriptionMessage(from, update.CallbackQuery.Message.MessageId, subscriptionId,
|
await EditSubscriptionMessage(from, update.CallbackQuery.Message.MessageId, subscriptionId,
|
||||||
CancellationToken.None);
|
CancellationToken.None);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,12 @@ public sealed class AddSubscriptionHandler : IMatchingUpdateHandler<AddSubscript
|
|||||||
|
|
||||||
public async Task Handle(Update update, CancellationToken cancellationToken = default)
|
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 chatId = update.CallbackQuery.Message.Chat.Id;
|
||||||
var messageId = update.CallbackQuery.Message.MessageId;
|
var messageId = update.CallbackQuery.Message.MessageId;
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.DeactivateSub
|
|||||||
public class DeactivateSubscriptionHandler : ViewSubscriptionHandlerBase,
|
public class DeactivateSubscriptionHandler : ViewSubscriptionHandlerBase,
|
||||||
IMatchingUpdateHandler<DeactivateSubscriptionMatcher>
|
IMatchingUpdateHandler<DeactivateSubscriptionMatcher>
|
||||||
{
|
{
|
||||||
|
private readonly ILogger<DeactivateSubscriptionHandler> _logger;
|
||||||
public DeactivateSubscriptionHandler(ILogger<DeactivateSubscriptionHandler> logger,
|
public DeactivateSubscriptionHandler(ILogger<DeactivateSubscriptionHandler> logger,
|
||||||
ILocalizer localizer,
|
ILocalizer localizer,
|
||||||
IMessageDispatcherQueue messageQueue,
|
IMessageDispatcherQueue messageQueue,
|
||||||
@ -24,16 +24,23 @@ public class DeactivateSubscriptionHandler : ViewSubscriptionHandlerBase,
|
|||||||
ITextSubscriptionsController subscriptionsController)
|
ITextSubscriptionsController subscriptionsController)
|
||||||
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(Update update, CancellationToken cancellationToken = default)
|
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 callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
|
||||||
var from = update.CallbackQuery.From.Id;
|
var from = update.CallbackQuery.From.Id;
|
||||||
|
|
||||||
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
|
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
|
||||||
{
|
{
|
||||||
Logger.LogWarning(
|
_logger.LogWarning(
|
||||||
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
|
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
|
||||||
callbackData, from, update.CallbackQuery.Message.Chat.Id);
|
callbackData, from, update.CallbackQuery.Message.Chat.Id);
|
||||||
SendErrorMessage(from);
|
SendErrorMessage(from);
|
||||||
@ -46,7 +53,7 @@ public class DeactivateSubscriptionHandler : ViewSubscriptionHandlerBase,
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.LogError(ex, "Не удалось деактивировать подписку");
|
_logger.LogError(ex, "Не удалось деактивировать подписку");
|
||||||
SendErrorMessage(from);
|
SendErrorMessage(from);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.DeleteSubscri
|
|||||||
public class DeleteSubscriptionHandler : ViewSubscriptionHandlerBase,
|
public class DeleteSubscriptionHandler : ViewSubscriptionHandlerBase,
|
||||||
IMatchingUpdateHandler<DeleteSubscriptionMatcher>
|
IMatchingUpdateHandler<DeleteSubscriptionMatcher>
|
||||||
{
|
{
|
||||||
|
private readonly ILogger<DeleteSubscriptionHandler> _logger;
|
||||||
public DeleteSubscriptionHandler(ILogger<DeleteSubscriptionHandler> logger,
|
public DeleteSubscriptionHandler(ILogger<DeleteSubscriptionHandler> logger,
|
||||||
ILocalizer localizer,
|
ILocalizer localizer,
|
||||||
IMessageDispatcherQueue messageQueue,
|
IMessageDispatcherQueue messageQueue,
|
||||||
@ -26,16 +27,23 @@ public class DeleteSubscriptionHandler : ViewSubscriptionHandlerBase,
|
|||||||
ITextSubscriptionsController subscriptionsController)
|
ITextSubscriptionsController subscriptionsController)
|
||||||
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(Update update, CancellationToken cancellationToken = default)
|
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 callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
|
||||||
var from = update.CallbackQuery.From.Id;
|
var from = update.CallbackQuery.From.Id;
|
||||||
|
|
||||||
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
|
if (callbackData.Args.Count != 1 || !long.TryParse(callbackData.Args.First(), out var subscriptionId))
|
||||||
{
|
{
|
||||||
Logger.LogWarning(
|
_logger.LogWarning(
|
||||||
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
|
"Не удалось извлечь идентификатор подписки. CallbackData: {@CallbackData}, ChatId: {ChatId}, MessageId {MessageId}",
|
||||||
callbackData, from, update.CallbackQuery.Message.Chat.Id);
|
callbackData, from, update.CallbackQuery.Message.Chat.Id);
|
||||||
SendErrorMessage(from);
|
SendErrorMessage(from);
|
||||||
@ -48,7 +56,7 @@ public class DeleteSubscriptionHandler : ViewSubscriptionHandlerBase,
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.LogError(ex, "Не удалось удалить подписку");
|
_logger.LogError(ex, "Не удалось удалить подписку.");
|
||||||
SendErrorMessage(from);
|
SendErrorMessage(from);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,12 @@ public class FeedbackHandler : IMatchingUpdateHandler<FeedbackMatcher>
|
|||||||
|
|
||||||
public Task Handle(Update update, CancellationToken cancellationToken = default)
|
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
|
// TODO: Check, that other messages sent to chat, no to one, who clicks
|
||||||
var message = new TextMessage(update.CallbackQuery.Message.Chat.Id)
|
var message = new TextMessage(update.CallbackQuery.Message.Chat.Id)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -13,6 +13,7 @@ namespace Nocr.TelegramClient.AppServices.Handlers.CallbackQueries.ViewSubscript
|
|||||||
|
|
||||||
public class ViewSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpdateHandler<ViewSubscriptionMatcher>
|
public class ViewSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpdateHandler<ViewSubscriptionMatcher>
|
||||||
{
|
{
|
||||||
|
private readonly ILogger<ViewSubscriptionHandler> _logger;
|
||||||
public ViewSubscriptionHandler(ILogger<ViewSubscriptionHandler> logger,
|
public ViewSubscriptionHandler(ILogger<ViewSubscriptionHandler> logger,
|
||||||
ILocalizer localizer,
|
ILocalizer localizer,
|
||||||
IMessageDispatcherQueue messageQueue,
|
IMessageDispatcherQueue messageQueue,
|
||||||
@ -21,10 +22,17 @@ public class ViewSubscriptionHandler : ViewSubscriptionHandlerBase, IMatchingUpd
|
|||||||
ITextSubscriptionsController subscriptionsController) :
|
ITextSubscriptionsController subscriptionsController) :
|
||||||
base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(Update update, CancellationToken cancellationToken = default)
|
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 callbackData = NocrCallbackData.Parse(update.CallbackQuery.Data);
|
||||||
var from = update.CallbackQuery.From.Id;
|
var from = update.CallbackQuery.From.Id;
|
||||||
|
|
||||||
|
|||||||
@ -32,12 +32,18 @@ public sealed class FeedbackMessageHandler : IMatchingUpdateHandler<FeedbackMess
|
|||||||
|
|
||||||
public Task Handle(Update update, CancellationToken cancellationToken = default)
|
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 from = update.Message.From;
|
||||||
var feedbackText = update.Message.Text
|
var feedbackText = update.Message.Text
|
||||||
.Replace("/feedback", string.Empty)
|
.Replace("/feedback", string.Empty)
|
||||||
.Trim(' ');
|
.Trim(' ');
|
||||||
|
|
||||||
var message = new TextMessage(from.Id)
|
var message = new TextMessage(from?.Id)
|
||||||
{
|
{
|
||||||
Text = _localizer.Get(nameof(FeedbackMessageHandler), "Text"),
|
Text = _localizer.Get(nameof(FeedbackMessageHandler), "Text"),
|
||||||
ReplyMarkup = new InlineKeyboardMarkup(new InlineKeyboardButton(_localizer.Get("buttons", "back"))
|
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")
|
Text = _localizer.Get(nameof(FeedbackMessageHandler), "FeedbackText")
|
||||||
.FormatWith(new
|
.FormatWith(new
|
||||||
{
|
{
|
||||||
FromId = from.Id,
|
FromId = from?.Id,
|
||||||
FromUsername = string.IsNullOrWhiteSpace(from.Username) ? "anonymous" : $"@{from.Username}",
|
FromUsername = string.IsNullOrWhiteSpace(from?.Username) ? "anonymous" : $"@{from.Username}",
|
||||||
Text = feedbackText
|
Text = feedbackText
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|||||||
@ -16,14 +16,22 @@ namespace Nocr.TelegramClient.AppServices.Handlers.Messages.SubscribeExactMessag
|
|||||||
|
|
||||||
public abstract class SubscribeHandlerBase : ViewSubscriptionHandlerBase
|
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)
|
IUsersService usersService, ITextSubscriptionsController subscriptionsController)
|
||||||
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
: base(logger, localizer, messageQueue, bot, usersService, subscriptionsController)
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task Handle(Update update, Regex regex, TextSubscriptionRule rule, CancellationToken cancellationToken = default)
|
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 receiverId = update.Message.Chat.Id;
|
||||||
|
|
||||||
var match = regex.Match(update.Message.Text);
|
var match = regex.Match(update.Message.Text);
|
||||||
|
|||||||
@ -18,6 +18,7 @@ public sealed class UsersService : IUsersService
|
|||||||
{
|
{
|
||||||
var user = await _usersController.GetByIdentity(UserIdentityType.TelegramId, telegramId.ToString(),
|
var user = await _usersController.GetByIdentity(UserIdentityType.TelegramId, telegramId.ToString(),
|
||||||
cancellationToken);
|
cancellationToken);
|
||||||
|
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
await _usersController.Create(new CreateUserRequest
|
await _usersController.Create(new CreateUserRequest
|
||||||
@ -31,7 +32,7 @@ public sealed class UsersService : IUsersService
|
|||||||
cancellationToken);
|
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)
|
public Task<UserData?> GetByIdentity(long telegramId, CancellationToken cancellationToken = default)
|
||||||
|
|||||||
@ -2,11 +2,11 @@ namespace Nocr.TelegramClient.Core.Options;
|
|||||||
|
|
||||||
public sealed class RebusRabbitMqOptions
|
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; }
|
||||||
}
|
}
|
||||||
@ -2,5 +2,5 @@ namespace Nocr.TelegramClient.Core.Options;
|
|||||||
|
|
||||||
public class RestEaseOptions
|
public class RestEaseOptions
|
||||||
{
|
{
|
||||||
public string BasePath { get; set; }
|
public required string BasePath { get; set; }
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user