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); } }
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); }