Beispiel #1
0
        public async Task Sign()
        {
            var dBLayer = new DBLayer();
            var user    = Context.User;
            int userID  = dBLayer.GetUserIDByDiscordHandle(user.Username);

            var userData = dBLayer.GetDiscordUserData(userID);

            if (userData.is_banned)
            {
                await ReplyAsync(null, false, this.PrepareBanEmbed(user.Username));

                return;
            }

            if (userData.last_claim_datetime_utc.HasValue)
            {
                TimeSpan?dateDiff = DateTime.UtcNow - userData.last_claim_datetime_utc;
                if (dateDiff.Value.TotalHours < AppSettingsService._claimFrequencyInHours)
                {
                    await ReplyAsync(null, false, this.PrepareDeclineClaimEmbed(user.Username, AppSettingsService._claimFrequencyInHours * 60 - dateDiff.Value.TotalMinutes));

                    return;
                }
            }

            var claim  = CacheService.playersWeightedData.GetRandom();
            var result = dBLayer.AddClaimToUser(userID, claim.Item1.PlayerID);

            var claimEmbed = PrepareSignEmbed(claim.Item1, claim.Item2, user);

            await ReplyAsync(null, false, claimEmbed);
        }