/// <summary> /// scope= get:balance /// cmd= 'get balance @p0'. /// @p0 parameter for desired currency (all for all balances) /// </summary> /// <returns></returns> public override async Task GetBalance() { int parameterCount = 1; var validateResp = ValidateParameters(null, parameterCount); if (validateResp.ResponseCode != ResponseCode.Success) { await PostMessage(GetSlackExecutionErrorMessage(validateResp.ResponseData)); return; } var currency = Currency.Unknown; var parameter = Parameters[0]; if (parameter.ToLower() != "all") { currency = Statics.GetCurrency(Parameters[0]); if (currency == Currency.Unknown) { var errorMesssage = GetSlackExecutionErrorMessage(2); //post depth=2 message => Given crypto currency either not found or not supported. errorMesssage.text = string.Format(errorMesssage.text, Parameters[0]); await PostMessage(errorMesssage); return; } } var balances = GetTeamCryptoCurrencyBalances(currency); if (!balances.Any()) { // you have no balance with this crypto currency. await PostMessage(GetSlackExecutionErrorMessage(3)); return; } //get crypto currencies by team.provider var cryptoCurrencies = GetCryptoCurrencies(); var successText = ExecutingCommand.Responses.First(p => p.Language == Team.Language && p.Depth == 0).SuccessText; var successMessage = SlackMessageGenerator.GetCryptoCurrencyBalanceMessage(balances, Team.MainCurrency, cryptoCurrencies, successText); await PostMessage(GetSlackExecutionSuccessMessage(successMessage)); }
/// <summary> /// scope= get:arbitrage /// cmd= 'get arbit @p0'. /// @p0 parameter for desired currency /// </summary> /// <returns></returns> public override async Task GetArbitrage() { int parameterCount = 1; var parameterSet = new List <CommandParameter> { new CommandParameter { Depth = 2, ParameterValue = Parameters[0].ToLower(), ParameterSet = new List <string> { "eth", "btc", "xrp", "ltc", "all" } } }; var validateResp = ValidateParameters(parameterSet, parameterCount); if (validateResp.ResponseCode != ResponseCode.Success) { var errorMessage = GetSlackExecutionErrorMessage(validateResp.ResponseData); if (validateResp.ResponseData == 2 && Parameters[0].ToLower() != "all") { //post depth=2 message => Given crypto currency either not found or not supported. errorMessage.text = string.Format(errorMessage.text, Parameters[0], "Eth, Btc, Ltc, Xrp"); } await PostMessage(errorMessage); return; } var currency = Statics.GetCurrency(Parameters[0]); //get crypto currencies by currency var cryptoCurrencies = GetCryptoCurrencies(currency); var successMessage = SlackMessageGenerator.GetArbitrageMessage(cryptoCurrencies, currency); await PostMessage(GetSlackExecutionSuccessMessage(successMessage)); }
/// <summary> /// scope= set:alarms /// cmd= 'set balance @p0 @p1 @p2'. /// @p0 parameter for desired currency /// @p1 parameter for desired website /// @p2 parameter for balance amount /// @p2 parameter for currency code /// </summary> /// <returns></returns> public override async Task SetAlarm() { int parameterCount = 4; string mainCurrencyText = string.Empty; string limitAmountText = string.Empty; if (Parameters.Length > 3) { limitAmountText = Parameters[2]; mainCurrencyText = Parameters[3]; } var parameterSet = new List <CommandParameter> { new CommandParameter { Depth = 5, ParameterValue = mainCurrencyText.ToLower(), ParameterSet = new List <string> { "tl", "usd", "$" } }, new CommandParameter { Depth = 3, ParameterValue = limitAmountText, IsNumber = true } }; var validateResp = ValidateParameters(parameterSet, parameterCount); if (validateResp.ResponseCode != ResponseCode.Success) { await PostMessage(GetSlackExecutionErrorMessage(validateResp.ResponseData)); return; } var provider = Statics.GetProvider(Parameters[1]); if (provider == Provider.Unknown && Parameters[1].ToLower() != "all") { //post depth=2 message => Given web site either not found or not supported. await PostMessage(GetSlackExecutionErrorMessage(4)); return; } var currency = Statics.GetCurrency(Parameters[0]); if (currency == Currency.Unknown) { var errorMesssage = GetSlackExecutionErrorMessage(2); //post depth=2 message => Given crypto currency either not found or not supported. errorMesssage.text = string.Format(errorMesssage.text, Parameters[0]); await PostMessage(errorMesssage); return; } decimal limitAmount = Parameters[2].ToMoneyMarketDecimalFormat(); var mainCurrency = Statics.GetMainCurrency(Parameters[3]); SavePriceTrackerNotification(currency, provider, limitAmount, mainCurrency); if (limitAmount == 0) { //Alarm has been unset. await PostMessage(GetSlackExecutionSuccessMessage(1)); return; } var successText = ExecutingCommand.Responses.First(p => p.Language == Team.Language && p.Depth == 0).SuccessText; var successMessage = SlackMessageGenerator.GetAlarmMessage(successText, currency, limitAmount, mainCurrency); await PostMessage(GetSlackExecutionSuccessMessage(successMessage)); }