public (bool success, string reason) HandleEmission(string user, string text, string responseUrl) { if (IsAdmin(user)) { var parts = text.Split(' '); if (parts.Length > 1) { var userId = CommandsPartsParse.FindUserId(parts); if (userId.HasValue) { var currency = CommandsPartsParse.FindCurrency(parts, _app.Value.DefaultCurrency); var(_, amount) = CommandsPartsParse.FindDecimal(parts, 0); if (amount > 0) { LedgerActor.Address.Tell(new EmitMessage(userId.Value.id, currency, amount, user, responseUrl)); return(true, "Запрос на эмиссию монет прошёл успешно, обрабатываем"); } return(false, "Не смогли найти сумму выпускаемых средст в запросе"); } return(false, "Не смогли найти пользователя, на которого вводятся средства"); } return(false, TossExample()); } return(false, "Эмиссия средств доступна только администратору. Обидно, да!"); }
public async Task <(bool result, string response)> Process(SlackTextCommand cmd) { var parts = cmd.Text.Split(' '); var(_, amount) = CommandsPartsParse.FindSignedDecimal(parts, 0); var currency = _app.Value.LimitToDefaultCurrency ? _app.Value.DefaultCurrency : CommandsPartsParse.FindCurrency(parts, _app.Value.DefaultCurrency); if (amount != 0) { var code = await _add.AddPromoAsync(cmd.UserId, amount, currency); return(true, $"Новый промокод на {amount}{currency}: {code.Code}"); } return(false, "Необходимо указать положительное или отрицательное количество монет для промокода"); }
public async Task <(bool result, string response)> Process(SlackTextCommand cmd) { var tote = await _getCurrentTote.GetAsync(cmd.UserId); if (tote != null && (tote.State == ToteState.Created || tote.State == ToteState.Started)) { return(false, "Сначала нужно завершить текущий тотализатор. Нам просто слишком лениво обрабатывать много тотализаторов одновременно, сорян"); } var rest = cmd.Text.Substring(3).Trim(); var parts = rest.Split(" "); if (parts.Length > 1) { var currency = _app.Value.LimitToDefaultCurrency ? _app.Value.DefaultCurrency : CommandsPartsParse.FindCurrency(parts, _app.Value.DefaultCurrency); if (!_app.Value.LimitToDefaultCurrency && string.IsNullOrEmpty(currency)) { return(false, "Не понял в какой валюте запускать тотализатор. Пример запуска: `/tote new :currency: Кого уволят первым?`, где :currency: - любой тип монеток, существующий у пользователей на руках, например :coin:."); } rest = rest.Substring(rest.IndexOf(currency, StringComparison.OrdinalIgnoreCase) + currency.Length) .Trim(); if (string.IsNullOrEmpty(rest)) { return(false, "Для старта тотализатора обязательно укажи его название. Например: `/tote new :currency: Кто победит в поедании печенек на скорость?`, где :currency: - любой тип монеток, существующий у пользователей на руках."); } var newTote = await _createNewTote.CreateNewAsync(cmd.UserId, currency, rest); var response = LongMessagesToUser.ToteDetails(newTote); await _slackResponse.ResponseWithBlocks(cmd.ResponseUrl, response, false); return(true, string.Empty); } return(false, "Для старта тотализатора обязательно укажи вид монет и его название. Например: `/tote new :currency: Кто победит в поедании печенек на скорость?`, где :currency: - любой тип монеток, существующий у пользователей на руках."); }