private async Task ExecuteCommandAsync(CoffeeContext context, SlackRequest request, SlackResponse response) { var splitted = request.Text.ToString().Trim().Split(' ', 2); var command = splitted[0]; var option = splitted.Length > 1 ? splitted[1] : ""; using var coffee = new CoffeeService(context); var user = await coffee.FindUserAsync(request.UserId); if (user == null) { var userName = await GetUserNameAsync(request.Workspace.Name, request.UserId); user = await coffee.CreateUserAsync(request.UserId, userName, false); await coffee.SaveAsync(); } else if (string.IsNullOrEmpty(user.Name)) { var userName = await GetUserNameAsync(request.Workspace.Name, request.UserId); user = await coffee.UpdateUserNameAsync(request.UserId, userName); await coffee.SaveAsync(); } try { await commands.HandleCommandAsync(coffee, user, command, option, response, _logger); await coffee.SaveAsync(); } catch (BadRequestException e) { response.Empty(); response.Ephemeral(e.ResponseMsg); } catch (Exception e) { _logger.LogError(e, $"Error occured during handling command: {command}"); } await response.SendAsync(_slackService); }
// [CoffeeCommand("대리적립", "", true)] public async Task FillOtherWallet(CoffeeService coffee, User requestUser, string text, SlackResponse response) { var splitted = text.Split(' '); if (splitted.Length != 2 || !int.TryParse(splitted[1], out var amount)) { throw new NotWellFormedException(); } var userId = SlackBot.Utils.StringToUserId(splitted[0]); var user = await coffee.FindUserAsync(userId); if (user == null) { user = await coffee.CreateUserAsync(userId, null, false); await coffee.SaveAsync(); } var u = await coffee.FillWalletAsync(userId, amount, DateTime.Now); response.Ephemeral($"현재 잔액은 {u.Deposit}원 입니다."); }