public override async Task Execute(Update update, TelegramBotClient client) { var userId = GetUserId(update); var chatId = GetChatId(update); var messageId = GetMessageId(update); if (StateMachine.GetCurrentStep(userId) == 0) { var revenueButton = Bot.MakeInlineButton($"{new Emoji(0x1F4C8)} В доходи", "revenue"); var expenseButton = Bot.MakeInlineButton($"{new Emoji(0x1F4C9)} До витрат", "expense"); await client.SendTextMessageAsync(chatId, "Куди саме додати категорію?", replyMarkup : Bot.MakeInlineKeyboard(revenueButton, expenseButton)); StateMachine.NextStep(userId); return; } if (StateMachine.GetCurrentStep(userId) == 1) { if (update.CallbackQuery.Data == "revenue") { AddCategory(userId, "", CategoryType.Revenue); } if (update.CallbackQuery.Data == "expense") { AddCategory(userId, "", CategoryType.Expense); } await client.EditMessageTextAsync(chatId, messageId, "Введіть назву категорії"); StateMachine.NextStep(userId); return; } if (StateMachine.GetCurrentStep(userId) == 2) { var category = _userCategories.Single(r => r.UserId == userId); category.Name = update.Message.Text; if (_dbContext.ContainsCategory(userId, category.Name, category.CategoryType)) { await client.SendTextMessageAsync(chatId, "Упс... така категорія вже існує, спробуйте ввести щось інше"); return; } _dbContext.Categories.Add(category); await _dbContext.SaveChangesAsync(); var answer = $"{new Emoji(0x2705)} Категорію <u><b>{category.Name}</b></u> додано"; answer += category.CategoryType == CategoryType.Expense ? " до витрат" : " в доходи"; await client.SendTextMessageAsync(chatId, answer, ParseMode.Html); _userCategories.Remove(category); StateMachine.FinishCurrentCommand(userId); } }