Esempio n. 1
0
        private async void UpdateLastRunTime(CurrencyGame gameType, ulong userId, ulong guildId)
        {
            this.LastRunTimeForType(gameType).UpdateOrAdd(guildId, DateTime.Now);

            // Update game count if restricted
            LeaderboardSettings settings = await LeaderboardSettingsService.GetSettings <LeaderboardSettings>(guildId);

            if (settings.CurrencyGamesAllowedPerDay > 0 && settings.CurrencyGamesAllowedPerDay < 2880)
            {
                if (!this.userDailyGameCount.TryGetValue(userId, out uint gameCount))
                {
                    gameCount = 0;
                }

                this.userDailyGameCount.UpdateOrAdd(userId, ++gameCount);
            }
        }
Esempio n. 2
0
        private async Task <bool> ValidateDailyCurrencyGameAllowance(CommandMessage message)
        {
            // Get settings and user
            LeaderboardSettings settings = await LeaderboardSettingsService.GetSettings <LeaderboardSettings>(message.Guild.Id);

            // No games allowed
            if (settings.CurrencyGamesAllowedPerDay == 0)
            {
                IUserMessage response = await message.Channel.SendMessageAsync("Currency games have been disabled by Server Admin.");

                await Task.Delay(2000);

                await message.Channel.DeleteMessageAsync(message.Id);

                await response.DeleteAsync();

                return(false);
            }

            // Get count of games played for user
            if (!this.userDailyGameCount.TryGetValue(message.Author.Id, out uint gameCount))
            {
                gameCount = 0;
            }

            if (settings.CurrencyGamesAllowedPerDay <= 0 || gameCount >= settings.CurrencyGamesAllowedPerDay)
            {
                // User has reached max games allowed today
                IUserMessage response = await message.Channel.SendMessageAsync("You cannot play any more games today, _kupo!_");

                await Task.Delay(2000);

                await message.Channel.DeleteMessageAsync(message.Id);

                await response.DeleteAsync();

                return(false);
            }

            return(true);
        }