Ejemplo n.º 1
0
        /// <summary>
        /// Function that uses <paramref name="Client"/> to help aid in sending messages to a channel.
        /// We use
        /// </summary>
        /// <param name="Client"></param>
        public async void DetermineDelivery(DiscordSocketClient Client)
        {
            Console.WriteLine(ConsoleWriteOverride.AddTimeStamp("### Delivery Check Successfully Started. ###"));
            var serverInformation = MoversShakersJSONController.ReadRegisteredDiscordGuilds();

            foreach (var guild in serverInformation.ListOfRegisteredDiscordGuilds)
            {
                var currentGuildInformation = MoversShakersJSONController.ReadMoversShakersConfig(guild);

                foreach (var format in currentGuildInformation.ListOfFormats)
                {
                    Enum.TryParse(format, out MTGFormatsEnum parsedEnumValue);
                    UpdateScrapeTime(parsedEnumValue);
                    var lastScrapeTime           = GetCurrentScrapeTime(parsedEnumValue);
                    var currentLastDeliveredTime = GetLastDeliveredTime(parsedEnumValue, guild);
                    if (lastScrapeTime != currentLastDeliveredTime)
                    {
                        Console.WriteLine(ConsoleWriteOverride.AddTimeStamp($"{lastScrapeTime.ToString("hh:mm:ss")} not equal to {currentLastDeliveredTime.ToString("hh:mm:ss")}. Delivering {format.ToString()} to {guild}"));
                        currentGuildInformation = UpdateLastDeliveredTime(currentGuildInformation, parsedEnumValue, lastScrapeTime);
                        MoversShakersJSONController.UpdateServerInfo(currentGuildInformation);
                        await DeliverMoversOutputAsync(Client, format, guild);
                    }
                }
            }
            Console.WriteLine(ConsoleWriteOverride.AddTimeStamp("### Delivery Check Successfully Completed. ###"));
        }
Ejemplo n.º 2
0
        private DateTime GetLastDeliveredTime(MTGFormatsEnum format, ulong guildId)
        {
            switch (format)
            {
            case MTGFormatsEnum.standard:
                return(MoversShakersJSONController.ReadMoversShakersConfig(guildId).LastDeliveredTime_Standard);

            case MTGFormatsEnum.modern:
                return(MoversShakersJSONController.ReadMoversShakersConfig(guildId).LastDeliveredTime_Modern);

            case MTGFormatsEnum.pioneer:
                return(MoversShakersJSONController.ReadMoversShakersConfig(guildId).LastDeliveredTime_Pioneer);

            case MTGFormatsEnum.pauper:
                return(MoversShakersJSONController.ReadMoversShakersConfig(guildId).LastDeliveredTime_Pauper);

            case MTGFormatsEnum.legacy:
                return(MoversShakersJSONController.ReadMoversShakersConfig(guildId).LastDeliveredTime_Legacy);

            case MTGFormatsEnum.vintage:
                return(MoversShakersJSONController.ReadMoversShakersConfig(guildId).LastDeliveredTime_Vintage);

            default:
                return(DateTime.MinValue);
            }
        }
Ejemplo n.º 3
0
        public async Task AddFormatForScrape(string formatName)
        {
            var userInput       = formatName.ToLower();
            var discordServerId = Context.Guild.Id;

            if (Enum.IsDefined(typeof(MTGFormatsEnum), userInput))
            {
                var serverInformation = MoversShakersJSONController.ReadMoversShakersConfig(discordServerId);

                if (serverInformation == null)
                {
                    // Send message to user to have them set a channel.
                    await Context.Channel.SendMessageAsync("", false, new MTGMoversShakersOutput().NoConfiguredServerErrorOutput().Build());
                }
                else if (!serverInformation.ListOfFormats.Contains(userInput))
                {
                    // User didn't already have the format set.
                    MoversShakersJSONController.AddChannelFormat(serverInformation, userInput);
                    await Context.Channel.SendMessageAsync("", false, new MTGMoversShakersOutput().AddFormatSuccess(formatName).Build());
                }
                else
                {
                    // User already added format.
                    await Context.Channel.SendMessageAsync("", false, new MTGMoversShakersOutput().FormatAlreadyExistsErrorMessage(formatName).Build());
                }
            }
            else
            {
                // Let user know to check their input, not a valid format.
                await Context.Channel.SendMessageAsync("", false, new MTGMoversShakersOutput().IncorrectOrUnspportedFormatError().Build());
            }
        }
Ejemplo n.º 4
0
        public async Task DeliverMoversOutputAsync(DiscordSocketClient Client, string format, ulong guild)
        {
            var guildConfig = MoversShakersJSONController.ReadMoversShakersConfig(guild);
            var scrapedData = MoversShakersJSONController.GetMoverCardScrapedData($"{format}.json");

            if (!(Client.GetGuild(guildConfig.serverID).GetChannel(guildConfig.channelID) is IMessageChannel channel))
            {
                var defaultChannel = Client.GetGuild(guildConfig.serverID).DefaultChannel;
                channel = Client.GetGuild(guildConfig.serverID).GetChannel(defaultChannel.Id) as IMessageChannel;
                await defaultChannel.SendMessageAsync("", false, NoConfiguredServerErrorOutputDeliverCards().Build());
            }

            if (scrapedData.DailyIncreaseList.Count > 0)
            {
                await channel.SendMessageAsync("", false, GetDailyIncreaseMoversOutput(scrapedData).Build());

                Thread.Sleep(3000);
            }
            if (scrapedData.DailyDecreaseList.Count > 0)
            {
                await channel.SendMessageAsync("", false, GetDailyDecreaseMoversOutput(scrapedData).Build());

                Thread.Sleep(3000);
            }
            //if (scrapedData.WeeklyIncreaseList.Count > 0)
            //{
            //    await channel.SendMessageAsync("", false, GetWeeklyIncreaseMoversOutput(scrapedData).Build());
            //    Thread.Sleep(3000);
            //}
            //if (scrapedData.WeeklyDecreaseList.Count > 0)
            //{
            //    await channel.SendMessageAsync("", false, GetWeeklyDecreaseMoversOutput(scrapedData).Build());
            //}
        }
Ejemplo n.º 5
0
        public async Task SetChannelConfiguration(ISocketMessageChannel channel)
        {
            var discordServerId          = Context.Guild.Id;
            var discordServerInformation = MoversShakersJSONController.ReadMoversShakersConfig(discordServerId);

            if (discordServerInformation == null)
            {
                MoversShakersJSONController.UpdateServerInfo(new Models.DiscordServerChannelModel
                {
                    serverID  = discordServerId,
                    channelID = channel.Id,
                });
                // Send message - New document created.
                await Context.Channel.SendMessageAsync("", false, new MTGMoversShakersOutput().SetChannelSuccess(channel).Build());
            }
            else if (!discordServerInformation.channelID.Equals(channel.Id))
            {
                // Channel wasn't set.
                discordServerInformation.channelID = channel.Id;
                MoversShakersJSONController.UpdateServerInfo(discordServerInformation);
                await Context.Channel.SendMessageAsync("", false, new MTGMoversShakersOutput().SetChannelSuccess(channel).Build());
            }
            else
            {
                // Channel was already set.
                await Context.Channel.SendMessageAsync("", false, new MTGMoversShakersOutput().ChannelAlreadyConfiguredErrorMessage(channel.Name).Build());
            }
        }