Added .timely .timelyset and .timelyreset (basically daily flowers, with customizable period)
This commit is contained in:
		@@ -16,7 +16,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
    {
 | 
			
		||||
        private readonly IBotConfigProvider _bc;
 | 
			
		||||
        private readonly DbService _db;
 | 
			
		||||
        private readonly CurrencyService _currency;
 | 
			
		||||
        private readonly CurrencyService _cs;
 | 
			
		||||
        private readonly IDataCache _cache;
 | 
			
		||||
 | 
			
		||||
        private string CurrencyName => _bc.BotConfig.CurrencyName;
 | 
			
		||||
@@ -28,7 +28,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
        {
 | 
			
		||||
            _bc = bc;
 | 
			
		||||
            _db = db;
 | 
			
		||||
            _currency = currency;
 | 
			
		||||
            _cs = currency;
 | 
			
		||||
            _cache = cache;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -45,7 +45,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
        {
 | 
			
		||||
            var val = _bc.BotConfig.TimelyCurrency;
 | 
			
		||||
            var period = _bc.BotConfig.TimelyCurrencyPeriod;
 | 
			
		||||
            if (val <= 0)
 | 
			
		||||
            if (val <= 0 || period <= 0)
 | 
			
		||||
            {
 | 
			
		||||
                await ReplyErrorLocalized("timely_none").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
@@ -54,29 +54,41 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
            TimeSpan? rem;
 | 
			
		||||
            if ((rem = _cache.AddTimelyClaim(Context.User.Id, period)) != null)
 | 
			
		||||
            {
 | 
			
		||||
                await ReplyErrorLocalized("timely_already_claimed", rem?.ToString(@"HH\:mm\:ss")).ConfigureAwait(false);
 | 
			
		||||
                await ReplyErrorLocalized("timely_already_claimed", rem?.ToString(@"hh\:mm\:ss")).ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            await _cs.AddAsync(Context.User.Id, "Timely claim", val).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
            await ReplyConfirmLocalized("timely", val + _bc.BotConfig.CurrencySign, period).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
			
		||||
        [OwnerOnly]
 | 
			
		||||
        public async Task TimelyReset()
 | 
			
		||||
        {
 | 
			
		||||
            _cache.RemoveAllTimelyClaims();
 | 
			
		||||
            await ReplyConfirmLocalized("timely_reset").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
			
		||||
        [OwnerOnly]
 | 
			
		||||
        public async Task TimelySet(int num, int period = 24)
 | 
			
		||||
        {
 | 
			
		||||
            if (num < 0 || period < 1)
 | 
			
		||||
            if (num < 0 || period < 0)
 | 
			
		||||
                return;
 | 
			
		||||
            using (var uow = _db.UnitOfWork)
 | 
			
		||||
            {
 | 
			
		||||
                uow.BotConfig.GetOrCreate(set => set)
 | 
			
		||||
                    .TimelyCurrency = num;
 | 
			
		||||
                var bc = uow.BotConfig.GetOrCreate(set => set);
 | 
			
		||||
                bc.TimelyCurrency = num;
 | 
			
		||||
                bc.TimelyCurrencyPeriod = period;
 | 
			
		||||
                uow.Complete();
 | 
			
		||||
            }
 | 
			
		||||
            _bc.Reload();
 | 
			
		||||
            if(num == 0)
 | 
			
		||||
                await ReplyConfirmLocalized("timely_set_none").ConfigureAwait(false);
 | 
			
		||||
            else
 | 
			
		||||
                await ReplyConfirmLocalized("timely_set", num, period).ConfigureAwait(false);
 | 
			
		||||
                await ReplyConfirmLocalized("timely_set", Format.Bold(num + _bc.BotConfig.CurrencySign), Format.Bold(period.ToString())).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
			
		||||
@@ -118,13 +130,13 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
        {
 | 
			
		||||
            if (amount <= 0 || Context.User.Id == receiver.Id)
 | 
			
		||||
                return;
 | 
			
		||||
            var success = await _currency.RemoveAsync((IGuildUser)Context.User, $"Gift to {receiver.Username} ({receiver.Id}).", amount, false).ConfigureAwait(false);
 | 
			
		||||
            var success = await _cs.RemoveAsync((IGuildUser)Context.User, $"Gift to {receiver.Username} ({receiver.Id}).", amount, false).ConfigureAwait(false);
 | 
			
		||||
            if (!success)
 | 
			
		||||
            {
 | 
			
		||||
                await ReplyErrorLocalized("not_enough", CurrencyPluralName).ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            await _currency.AddAsync(receiver, $"Gift from {Context.User.Username} ({Context.User.Id}).", amount, true).ConfigureAwait(false);
 | 
			
		||||
            await _cs.AddAsync(receiver, $"Gift from {Context.User.Username} ({Context.User.Id}).", amount, true).ConfigureAwait(false);
 | 
			
		||||
            await ReplyConfirmLocalized("gifted", amount + CurrencySign, Format.Bold(receiver.ToString()))
 | 
			
		||||
                .ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
@@ -144,7 +156,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
            if (amount <= 0)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            await _currency.AddAsync(usrId, $"Awarded by bot owner. ({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false);
 | 
			
		||||
            await _cs.AddAsync(usrId, $"Awarded by bot owner. ({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false);
 | 
			
		||||
            await ReplyConfirmLocalized("awarded", amount + CurrencySign, $"<@{usrId}>").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -157,7 +169,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
            var users = (await Context.Guild.GetUsersAsync())
 | 
			
		||||
                               .Where(u => u.GetRoles().Contains(role))
 | 
			
		||||
                               .ToList();
 | 
			
		||||
            await Task.WhenAll(users.Select(u => _currency.AddAsync(u.Id,
 | 
			
		||||
            await Task.WhenAll(users.Select(u => _cs.AddAsync(u.Id,
 | 
			
		||||
                                                      $"Awarded by bot owner to **{role.Name}** role. ({Context.User.Username}/{Context.User.Id})",
 | 
			
		||||
                                                      amount)))
 | 
			
		||||
                         .ConfigureAwait(false);
 | 
			
		||||
@@ -176,7 +188,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
            if (amount <= 0)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            if (await _currency.RemoveAsync(user, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount, true).ConfigureAwait(false))
 | 
			
		||||
            if (await _cs.RemoveAsync(user, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount, true).ConfigureAwait(false))
 | 
			
		||||
                await ReplyConfirmLocalized("take", amount+CurrencySign, Format.Bold(user.ToString())).ConfigureAwait(false);
 | 
			
		||||
            else
 | 
			
		||||
                await ReplyErrorLocalized("take_fail", amount + CurrencySign, Format.Bold(user.ToString()), CurrencyPluralName).ConfigureAwait(false);
 | 
			
		||||
@@ -190,7 +202,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
            if (amount <= 0)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            if (await _currency.RemoveAsync(usrId, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false))
 | 
			
		||||
            if (await _cs.RemoveAsync(usrId, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false))
 | 
			
		||||
                await ReplyConfirmLocalized("take", amount + CurrencySign, $"<@{usrId}>").ConfigureAwait(false);
 | 
			
		||||
            else
 | 
			
		||||
                await ReplyErrorLocalized("take_fail", amount + CurrencySign, Format.Code(usrId.ToString()), CurrencyPluralName).ConfigureAwait(false);
 | 
			
		||||
@@ -257,7 +269,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
            if (amount < 1)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            if (!await _currency.RemoveAsync(Context.User, "Betroll Gamble", amount, false).ConfigureAwait(false))
 | 
			
		||||
            if (!await _cs.RemoveAsync(Context.User, "Betroll Gamble", amount, false).ConfigureAwait(false))
 | 
			
		||||
            {
 | 
			
		||||
                await ReplyErrorLocalized("not_enough", CurrencyPluralName).ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
@@ -274,19 +286,19 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                if (rnd < 91)
 | 
			
		||||
                {
 | 
			
		||||
                    str += GetText("br_win", (amount * _bc.BotConfig.Betroll67Multiplier) + CurrencySign, 66);
 | 
			
		||||
                    await _currency.AddAsync(Context.User, "Betroll Gamble",
 | 
			
		||||
                    await _cs.AddAsync(Context.User, "Betroll Gamble",
 | 
			
		||||
                        (int) (amount * _bc.BotConfig.Betroll67Multiplier), false).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                else if (rnd < 100)
 | 
			
		||||
                {
 | 
			
		||||
                    str += GetText("br_win", (amount * _bc.BotConfig.Betroll91Multiplier) + CurrencySign, 90);
 | 
			
		||||
                    await _currency.AddAsync(Context.User, "Betroll Gamble",
 | 
			
		||||
                    await _cs.AddAsync(Context.User, "Betroll Gamble",
 | 
			
		||||
                        (int) (amount * _bc.BotConfig.Betroll91Multiplier), false).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    str += GetText("br_win", (amount * _bc.BotConfig.Betroll100Multiplier) + CurrencySign, 100) + " 👑";
 | 
			
		||||
                    await _currency.AddAsync(Context.User, "Betroll Gamble",
 | 
			
		||||
                    await _cs.AddAsync(Context.User, "Betroll Gamble",
 | 
			
		||||
                        (int) (amount * _bc.BotConfig.Betroll100Multiplier), false).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user