Регистрация пользователя в телеграм боте. Какой подход лучше выбрать?

Рейтинг: 1Ответов: 0Опубликовано: 21.07.2023

Мой вопрос скорее не про "как сделать", а про "как сделать правильно". Я создаю телеграм бота и мне нужно зарегистрировать пользователя. Регистрация проходит по следующему принципу: пользователь нажимает кнопку /start -> в базу заносится новый пользователь, некоторые поля пустые. Дальше пользователь несколько раз вводит информацию о себе и пустые поля постепенно заполняются (знаю, что лучше собрать всю информацию и только потом отправлять её в бд, но не совсем понимаю, как это сделать).

Текущая реализация примерно такая: есть класс CommandExecutor - некое подобие стейт-машины, так же есть класс StartCommand, в котором пока что реализован только первый этап регистрации.

Итак, вопрос: как быть дальше? Как мне отслеживать, в каком состоянии заполнения профиля сейчас находится пользователь? Сделать очередную стейт-машину в StartCommand? Но тогда получится стейт-машина внутри другой стейт-машины... Звучит не очень. Другой вариант - сделать несколько классов, каждый из которых будет отвечать за свой этап регистрации, и вызывать их исполняющие методы из CommandExecutor. Но это тоже как будто не совсем верно, ведь процесс регистрации распадается на много отдельных сущностей. Скорее всего, есть какой-то другой, более простой, способ, о котором я не знаю. Прошу мне на него указать.

условная реализация CommandExecuor:

private ICommand? currentCommand;

public async Task Execute(Update update)
    {
        currentCommand = new StartCommand()

        if (currentCommand != null)
        {
            await currentCommand.Execute(update);
        }
            
    }

P.S. Я только закончил 11 класс, знаний у меня нет, а опыта - тем более) Поэтому, если посоветуете статью/книгу по asp.net, веб-разработке, паттернах, буду безмерно благодарен.

Ответы

Ответов пока нет.