#nullable disable using NadekoBot.Modules.Gambling.Services; namespace NadekoBot.Modules.Gambling.Common; public abstract class GamblingModule : NadekoModule { protected GamblingConfig _config => _lazyConfig.Value; protected string CurrencySign => _config.Currency.Sign; protected string CurrencyName => _config.Currency.Name; private readonly Lazy _lazyConfig; protected GamblingModule(GamblingConfigService gambService) => _lazyConfig = new(() => gambService.Data); private async Task InternalCheckBet(long amount) { if (amount < 1) return false; if (amount < _config.MinBet) { await ReplyErrorLocalizedAsync(strs.min_bet_limit(Format.Bold(_config.MinBet.ToString()) + CurrencySign)); return false; } if (_config.MaxBet > 0 && amount > _config.MaxBet) { await ReplyErrorLocalizedAsync(strs.max_bet_limit(Format.Bold(_config.MaxBet.ToString()) + CurrencySign)); 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) { } }