Exemple #1
0
        public static DiscordColor BuildLureColor(this PokestopLureType lureType, DiscordServerConfig server)
        {
            string color;

            switch (lureType)
            {
            case PokestopLureType.Normal:
                color = server.DiscordEmbedColors.Pokestops.Lures.Normal;
                break;

            case PokestopLureType.Glacial:
                color = server.DiscordEmbedColors.Pokestops.Lures.Glacial;
                break;

            case PokestopLureType.Mossy:
                color = server.DiscordEmbedColors.Pokestops.Lures.Mossy;
                break;

            case PokestopLureType.Magnetic:
                color = server.DiscordEmbedColors.Pokestops.Lures.Magnetic;
                break;

            default:
                return(DiscordColor.White);
            }
            return(new DiscordColor(color));
        }
Exemple #2
0
        public static DiscordColor BuildPokemonPvPColor(this int rank, DiscordServerConfig server)
        {
            if (rank <= 0)
            {
                return(DiscordColor.White);
            }
            var color = server.DiscordEmbedColors.Pokemon.PvP.FirstOrDefault(x => rank >= x.Minimum && rank <= x.Maximum);

            return(new DiscordColor(color.Color));
        }
Exemple #3
0
        public static DiscordColor BuildPokemonIVColor(this string iv, DiscordServerConfig server)
        {
            if (!double.TryParse(iv.Substring(0, iv.Length - 1), out var result))
            {
                return(DiscordColor.White);
            }
            var color = server.DiscordEmbedColors.Pokemon.IV.FirstOrDefault(x => result >= x.Minimum && result <= x.Maximum);

            return(new DiscordColor(color.Color));
        }
Exemple #4
0
        private async Task PruneQuestChannels(DiscordClient client, DiscordServerConfig server)
        {
            try
            {
                var channelIds = server.QuestChannelIds;
                _logger.Debug($"Quest channel pruning started for {channelIds.Count:N0} channels...");
                for (var j = 0; j < channelIds.Count; j++)
                {
                    var result = await client.DeleteMessages(channelIds[j]);

                    _logger.Debug($"Deleted all {result.Item2:N0} quest messages from channel {result.Item1.Name}.");
                    Thread.Sleep(1000);
                }
                _logger.Debug($"Finished automatic quest messages cleanup...");
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
            }
        }
Exemple #5
0
        public static DiscordColor BuildRaidColor(this int level, DiscordServerConfig server)
        {
            if (level == 0)
            {
                return(DiscordColor.White);
            }
            var color = string.Empty;

            switch (level)
            {
            case 1:
                color = server.DiscordEmbedColors.Raids.Level1;
                break;

            case 2:
                color = server.DiscordEmbedColors.Raids.Level2;
                break;

            case 3:
                color = server.DiscordEmbedColors.Raids.Level3;
                break;

            case 4:
                color = server.DiscordEmbedColors.Raids.Level4;
                break;

            case 5:
                color = server.DiscordEmbedColors.Raids.Level5;
                break;

            case 6:
                color = server.DiscordEmbedColors.Raids.Level6;
                break;

            default:
                color = server.DiscordEmbedColors.Raids.Ex;
                break;
            }
            return(new DiscordColor(color));
        }
Exemple #6
0
        public static DiscordColor BuildWeatherColor(this WeatherType weather, DiscordServerConfig server)
        {
            var color = "#808080";

            switch (weather)
            {
            case WeatherType.Clear:
                color = server.DiscordEmbedColors.Weather.Clear;
                break;

            case WeatherType.Cloudy:
                color = server.DiscordEmbedColors.Weather.Cloudy;
                break;

            case WeatherType.Fog:
                color = server.DiscordEmbedColors.Weather.Fog;
                break;

            case WeatherType.PartlyCloudy:
                color = server.DiscordEmbedColors.Weather.PartlyCloudy;
                break;

            case WeatherType.Rain:
                color = server.DiscordEmbedColors.Weather.Rain;
                break;

            case WeatherType.Snow:
                color = server.DiscordEmbedColors.Weather.Snow;
                break;

            case WeatherType.Windy:
                color = server.DiscordEmbedColors.Weather.Windy;
                break;
            }
            return(new DiscordColor(color));
        }
Exemple #7
0
        private DiscordColor GetPvPColor(List <PVPRank> greatLeague, List <PVPRank> ultraLeague, DiscordServerConfig server)
        {
            if (greatLeague != null)
            {
                greatLeague.Sort((x, y) => (x.Rank ?? 0).CompareTo(y.Rank ?? 0));
            }

            if (ultraLeague != null)
            {
                ultraLeague.Sort((x, y) => (x.Rank ?? 0).CompareTo(y.Rank ?? 0));
            }

            var greatRank = greatLeague.FirstOrDefault(x => x.Rank > 0 && x.Rank <= 25 && x.CP >= Strings.MinimumGreatLeagueCP && x.CP <= Strings.MaximumGreatLeagueCP);
            var ultraRank = ultraLeague.FirstOrDefault(x => x.Rank > 0 && x.Rank <= 25 && x.CP >= Strings.MinimumUltraLeagueCP && x.CP <= Strings.MaximumUltraLeagueCP);
            var color     = server.DiscordEmbedColors.Pokemon.PvP.FirstOrDefault(x => ((greatRank?.Rank ?? 0) >= x.Minimum && (greatRank?.Rank ?? 0) <= x.Maximum) || ((ultraRank?.Rank ?? 0) >= x.Minimum && (ultraRank?.Rank ?? 0) <= x.Maximum));

            if (color == null)
            {
                return(DiscordColor.White);
            }
            return(new DiscordColor(color.Color));
        }
Exemple #8
0
        private async Task PostShinyStats(DiscordClient client, ulong guildId, DiscordServerConfig server)
        {
            var statsChannel = await client.GetChannelAsync(server.ShinyStats.ChannelId);

            if (statsChannel == null)
            {
                _logger.Warn($"Unable to get channel id {server.ShinyStats.ChannelId} to post shiny stats.");
                return;
            }

            if (server.ShinyStats.ClearMessages)
            {
                _logger.Debug($"Deleting previous shiny stats messages in channel {server.ShinyStats.ChannelId}");
                await client.DeleteMessages(server.ShinyStats.ChannelId);
            }

            //var guildId = server.GuildId;
            _logger.Debug($"Posting shiny stats for guild {client.Guilds[guildId].Name} ({guildId}) in channel {server.ShinyStats.ChannelId}");
            // Subtract an hour to make sure it shows yesterday's date.
            await statsChannel.SendMessageAsync(Translator.Instance.Translate("SHINY_STATS_TITLE").FormatText(DateTime.Now.Subtract(TimeSpan.FromHours(1)).ToLongDateString()));

            Thread.Sleep(500);
            await statsChannel.SendMessageAsync(Translator.Instance.Translate("SHINY_STATS_NEWLINE"));

            var stats = await ShinyStats.GetShinyStats(_whConfig.Instance.Database.Scanner.ToString());

            if (stats == null)
            {
                _logger.Error($"Failed to get list of shiny stats for guild {guildId}, skipping...");
                return;
            }

            var sorted = stats.Keys.ToList();

            sorted.Sort();

            foreach (var pokemon in sorted)
            {
                if (pokemon == 0)
                {
                    continue;
                }

                if (!MasterFile.Instance.Pokedex.ContainsKey((int)pokemon))
                {
                    continue;
                }

                var pkmn      = MasterFile.Instance.Pokedex[(int)pokemon];
                var pkmnStats = stats[pokemon];
                var chance    = pkmnStats.Shiny == 0 || pkmnStats.Total == 0 ? 0 : Convert.ToInt32(pkmnStats.Total / pkmnStats.Shiny);
                if (chance == 0)
                {
                    await statsChannel.SendMessageAsync(Translator.Instance.Translate("SHINY_STATS_MESSAGE").FormatText(pkmn.Name, pokemon, pkmnStats.Shiny.ToString("N0"), pkmnStats.Total.ToString("N0")));
                }
                else
                {
                    await statsChannel.SendMessageAsync(Translator.Instance.Translate("SHINY_STATS_MESSAGE_WITH_RATIO").FormatText(pkmn.Name, pokemon, pkmnStats.Shiny.ToString("N0"), pkmnStats.Total.ToString("N0"), chance));
                }

                Thread.Sleep(500);
            }

            var total      = stats[0];
            var totalRatio = total.Shiny == 0 || total.Total == 0 ? 0 : Convert.ToInt32(total.Total / total.Shiny);

            if (totalRatio == 0)
            {
                await statsChannel.SendMessageAsync(Translator.Instance.Translate("SHINY_STATS_TOTAL_MESSAGE").FormatText(total.Shiny.ToString("N0"), total.Total.ToString("N0")));
            }
            else
            {
                await statsChannel.SendMessageAsync(Translator.Instance.Translate("SHINY_STATS_TOTAL_MESSAGE_WITH_RATIO").FormatText(total.Shiny.ToString("N0"), total.Total.ToString("N0"), totalRatio));
            }

            Thread.Sleep(10 * 1000);
        }