feat: implemented registration stage of preparation on PrepareUserState
implemented auth, added auth tools AcceptNotPreparedAttribute.cs, IAuthorizedTelegramCommand.cs
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
using JOBot.TClient.Commands;
|
||||
using JOBot.TClient.Commands.Buttons;
|
||||
using JOBot.TClient.Infrastructure.Attributes.Authorization;
|
||||
using JOBot.TClient.Infrastructure.Extensions;
|
||||
using JOBot.TClient.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@@ -33,7 +35,8 @@ public sealed class BotBackgroundService(
|
||||
{
|
||||
//Commands
|
||||
["/start"] = scope.ServiceProvider.GetRequiredService<StartCommand>(),
|
||||
["/menu"] = scope.ServiceProvider.GetRequiredService<StartCommand>(),
|
||||
["/menu"] = scope.ServiceProvider.GetRequiredService<MenuCommand>(),
|
||||
["/info"] = scope.ServiceProvider.GetRequiredService<InfoCommand>(),
|
||||
|
||||
//Buttons
|
||||
[ButtonResource.EULAAgrement] = scope.ServiceProvider.GetRequiredService<EulaAgreementButtonCommand>(),
|
||||
@@ -52,8 +55,16 @@ public sealed class BotBackgroundService(
|
||||
if (commands.TryGetValue(text, out var command))
|
||||
{
|
||||
if (command is IAuthorizedTelegramCommand authorizedTelegramCommand)
|
||||
{
|
||||
var attribute = Attribute.GetCustomAttribute(command.GetType(), typeof(AcceptNotPreparedAttribute));
|
||||
if (!user.IsPrepared() && attribute is not AcceptNotPreparedAttribute)
|
||||
{
|
||||
await commands["/start"].ExecuteAsync(update, ct); //заставляем пользователя завершить регистрацию
|
||||
return;
|
||||
}
|
||||
await authorizedTelegramCommand.ExecuteAsync(update, user, ct);
|
||||
else await command.ExecuteAsync(update, ct); //А если вызвать /start когда зареган? То-то и оно, но всё равно надо подумать
|
||||
}
|
||||
else await command.ExecuteAsync(update, ct);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user