using System; using Discord; using NadekoBot.Core.Services; using NadekoBot.Modules; using System.Threading.Tasks; using NadekoBot.Modules.Gambling.Services; namespace NadekoBot.Modules.Gambling.Common { public abstract class GamblingModule : NadekoModule { private readonly Lazy _lazyConfig; protected GamblingConfig _config => _lazyConfig.Value; protected string CurrencySign => _config.Currency.Sign; protected string CurrencyName => _config.Currency.Name; protected GamblingModule(GamblingConfigService gambService) { _lazyConfig = new Lazy(() => gambService.Data); } private async Task InternalCheckBet(long amount) { if (amount < 1) { return false; } if (amount < _config.MinBet) { await ReplyErrorLocalizedAsync("min_bet_limit", Format.Bold(_config.MinBet.ToString()) + CurrencySign).ConfigureAwait(false); return false; } if (_config.MaxBet > 0 && amount > _config.MaxBet) { await ReplyErrorLocalizedAsync("max_bet_limit", Format.Bold(_config.MaxBet.ToString()) + CurrencySign).ConfigureAwait(false); return false; } return true; } protected Task CheckBetMandatory(long amount) { if (amount < 1) { return Task.FromResult(false); } return InternalCheckBet(amount); } protected Task CheckBetOptional(long amount) { if (amount == 0) { return Task.FromResult(true); } return InternalCheckBet(amount); } } public abstract class GamblingSubmodule : GamblingModule { protected GamblingSubmodule(GamblingConfigService gamblingConfService) : base(gamblingConfService) { } } }