currency levelup rewards wip
This commit is contained in:
		@@ -241,6 +241,50 @@ namespace NadekoBot.Modules.Xp.Services
 | 
			
		||||
            }, token);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SetCurrencyReward(ulong guildId, int level, int amount)
 | 
			
		||||
        {
 | 
			
		||||
            using (var uow = _db.UnitOfWork)
 | 
			
		||||
            {
 | 
			
		||||
                var settings = uow.GuildConfigs.XpSettingsFor(guildId);
 | 
			
		||||
 | 
			
		||||
                if (amount <= 0)
 | 
			
		||||
                {
 | 
			
		||||
                    var toRemove = settings.CurrencyRewards.FirstOrDefault(x => x.Level == level);
 | 
			
		||||
                    if (toRemove != null)
 | 
			
		||||
                    {
 | 
			
		||||
                        uow._context.Remove(toRemove);
 | 
			
		||||
                        settings.CurrencyRewards.Remove(toRemove);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                    var rew = settings.CurrencyRewards.FirstOrDefault(x => x.Level == level);
 | 
			
		||||
 | 
			
		||||
                    if (rew != null)
 | 
			
		||||
                        rew.Amount = amount;
 | 
			
		||||
                    else
 | 
			
		||||
                        settings.CurrencyRewards.Add(new XpCurrencyReward()
 | 
			
		||||
                        {
 | 
			
		||||
                            Level = level,
 | 
			
		||||
                            Amount = amount,
 | 
			
		||||
                        });
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                uow.Complete();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public IEnumerable<XpCurrencyReward> GetCurrencyRewards(ulong id)
 | 
			
		||||
        {
 | 
			
		||||
            using (var uow = _db.UnitOfWork)
 | 
			
		||||
            {
 | 
			
		||||
                return uow.GuildConfigs.XpSettingsFor(id)
 | 
			
		||||
                    .CurrencyRewards
 | 
			
		||||
                    .ToArray();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public IEnumerable<XpRoleReward> GetRoleRewards(ulong id)
 | 
			
		||||
        {
 | 
			
		||||
            using (var uow = _db.UnitOfWork)
 | 
			
		||||
 
 | 
			
		||||
@@ -23,34 +23,10 @@ namespace NadekoBot.Modules.Xp
 | 
			
		||||
            _client = client;
 | 
			
		||||
            _db = db;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //[NadekoCommand, Usage, Description, Aliases]
 | 
			
		||||
        //[RequireContext(ContextType.Guild)]
 | 
			
		||||
        //[OwnerOnly]
 | 
			
		||||
        //public async Task Populate()
 | 
			
		||||
        //{
 | 
			
		||||
        //    var rng = new NadekoRandom();
 | 
			
		||||
        //    using (var uow = _db.UnitOfWork)
 | 
			
		||||
        //    {
 | 
			
		||||
        //        for (var i = 0ul; i < 1000000; i++)
 | 
			
		||||
        //        {
 | 
			
		||||
        //            uow.DiscordUsers.Add(new DiscordUser()
 | 
			
		||||
        //            {
 | 
			
		||||
        //                AvatarId = i.ToString(),
 | 
			
		||||
        //                Discriminator = "1234",
 | 
			
		||||
        //                UserId = i,
 | 
			
		||||
        //                Username = i.ToString(),
 | 
			
		||||
        //                Club = null,
 | 
			
		||||
        //            });
 | 
			
		||||
        //            var xp = uow.Xp.GetOrCreateUser(Context.Guild.Id, i);
 | 
			
		||||
        //            xp.Xp = rng.Next(100, 100000);
 | 
			
		||||
        //        }
 | 
			
		||||
        //        uow.Complete();
 | 
			
		||||
        //    }
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
			
		||||
        [RequireContext(ContextType.Guild)]
 | 
			
		||||
        //todo add ratelimit attribute
 | 
			
		||||
        //[Ratelimit(30)]
 | 
			
		||||
        public async Task Experience([Remainder]IUser user = null)
 | 
			
		||||
        {
 | 
			
		||||
@@ -82,7 +58,7 @@ namespace NadekoBot.Modules.Xp
 | 
			
		||||
                .Take(9);
 | 
			
		||||
 | 
			
		||||
            var embed = new EmbedBuilder()
 | 
			
		||||
                .WithTitle(GetText("role_rewards"))
 | 
			
		||||
                .WithTitle(GetText("level_up_rewards"))
 | 
			
		||||
                .WithOkColor();
 | 
			
		||||
 | 
			
		||||
            if (!roles.Any())
 | 
			
		||||
@@ -116,6 +92,21 @@ namespace NadekoBot.Modules.Xp
 | 
			
		||||
                await ReplyConfirmLocalized("role_reward_added", level, Format.Bold(role.ToString())).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
			
		||||
        [RequireContext(ContextType.Guild)]
 | 
			
		||||
        public async Task XpCurrencyReward(int level, int amount=0)
 | 
			
		||||
        {
 | 
			
		||||
            if (level < 1 || amount < 0)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            _service.SetCurrencyReward(Context.Guild.Id, level, amount);
 | 
			
		||||
 | 
			
		||||
            if (amount == 0)
 | 
			
		||||
                await ReplyConfirmLocalized("cur_reward_cleared", level).ConfigureAwait(false);
 | 
			
		||||
            else
 | 
			
		||||
                await ReplyConfirmLocalized("cur_reward_added", level, Format.Bold(amount.ToString())).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public enum NotifyPlace
 | 
			
		||||
        {
 | 
			
		||||
            Server = 0,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user