/// <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. ###")); }
private async Task Client_MessageRecieved(SocketMessage messageParam) { if (!(messageParam is SocketUserMessage message)) { return; } var context = new SocketCommandContext(Client, message); var getCard = new MTGCardOutput(); if (context.Message == null || context.Message.Content == "") { return; } if (context.User.IsBot) { return; } if (context.User.Id == 129804455964049408 && context.Guild.Id == 596104949503361050) { await ReactWithEmoteAsync(context.Message, "<:WeebsOut:627783662708064256>"); } if (message != null && (message.Content.Contains("[") && message.Content.Contains("]"))) { try { Regex rx = new Regex(@"\[\[(.*?)\]\]", RegexOptions.Compiled | RegexOptions.IgnoreCase); MatchCollection matches = rx.Matches(message.Content); foreach (var item in matches) { var dataOutput = new UserMessageController(item.ToString()); await context.Channel.SendMessageAsync("", false, dataOutput.MessageOutput.Build()); } } catch (Exception msg) { Console.WriteLine(ConsoleWriteOverride.AddTimeStamp(msg.Message)); await context.Channel.SendMessageAsync("", false, getCard.DetermineFailure(3).Build()); } } var argPos = 0; if (!(message.HasStringPrefix("mtg!", ref argPos) || message.HasMentionPrefix(Client.CurrentUser, ref argPos))) { return; } var result = await Commands.ExecuteAsync(context, argPos, null); if (!result.IsSuccess) { Console.WriteLine(ConsoleWriteOverride.AddTimeStamp($"Something went wrong with executing command. Text: {context.Message.Content} | Error: {result.ErrorReason}")); } }
private async Task MtgMainAsync() { Console.WriteLine(ConsoleWriteOverride.AddTimeStamp("Loading Filters.")); LegalityDictionary.LoadLegalityDict(); //var aTimer = new Timer(1800000); //thirty minutes in milliseconds //aTimer.BeginInit(); //aTimer.Elapsed += OnTimedEvent; //aTimer.EndInit(); //aTimer.Start(); var logRepository = LogManager.GetRepository(typeof(Program).Assembly); XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); await MainAsync(Token); await Commands.AddModulesAsync(typeof(Program).Assembly, null); Client.MessageReceived += Client_MessageRecieved; Client.Ready += Client_Ready; //Thread.Sleep(10000); //10 seconds, sleeps a different thread from the bot so that it can finish loading before we begin. //new MTGMoversShakersOutput().DetermineDelivery(Client); await Task.Delay(-1); }