public async Task MessageReceivedAsync(SocketMessage rawMessage) { // Ignore system messages, or messages from other bots if (!(rawMessage is SocketUserMessage message)) { return; } if (message.Source != MessageSource.User) { return; } if (message.MentionedRoles.Count > 0) { await returnPing(message); } // This value holds the offset where the prefix ends var argPos = 0; // Perform prefix check. You may want to replace this with // (!message.HasCharPrefix('!', ref argPos)) // for a more traditional command format like !help. if (message.Content.Contains("roshpit.ca/market/auction/")) { AuctionNewClass new_auc; string helpstring; ItemClass helpitem = new ItemClass(); helpstring = Regex.Matches(message.Content, @"(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?")[0].Value; new_auc = RoshpitStats.GetOngoingAuction2(helpstring); helpitem = RoshpitStats.Search(new_auc.item_name_en, true); if (helpitem == null) { UpdateTablesClass a = new UpdateTablesClass(); helpitem = a.LoadItem($"https://www.roshpit.ca/items/{new_auc.roshpititem_variant}"); using (AuctionContext acontext = new AuctionContext()) { int mid = 0; foreach (KeyValuePair <string, ItemClass> item in RoshpitStats.ItemList) { if (mid < item.Value.id) { mid = item.Value.id; } } helpitem.id = mid + 1; acontext.Items.Add(helpitem); acontext.SaveChanges(); } RoshpitStats.ItemList.Add(helpitem.Name.ToLower(), helpitem); } if (helpitem == null) { return; } EmbedBuilder builder = new EmbedBuilder(); builder.WithAuthor(new EmbedAuthorBuilder { IconUrl = message.Author.GetAvatarUrl(), Name = message.Author.Username }); builder.WithTitle("Auction for **" + helpitem.Name + "**"); builder.WithThumbnailUrl(helpitem.Image); builder.WithUrl(helpstring); //Rarity Color if (helpitem.Rarity == "Immortal") { builder.WithColor(228, 174, 51); } else if (helpitem.Rarity == "Arcana") { builder.WithColor(173, 229, 92); } else { System.Drawing.Color col; col = System.Drawing.ColorTranslator.FromHtml(helpitem.Rarity); builder.WithColor(col.R, col.G, col.B); builder.AddField(helpitem.Special_Ability, "Lv. " + helpitem.Required_level, true); } if (new_auc.level_req.HasValue) { helpstring = $"Lv. {new_auc.level_req}\t"; } else { helpstring = ""; } //Base Armor if ((new_auc.base_armor.HasValue) && (new_auc.base_magic_armor.HasValue) && (new_auc.base_armor > 0) && (new_auc.base_magic_armor > 0)) { helpstring = helpstring + $"{emoArmor} {new_auc.base_armor}\t{emoMagicArmor} {new_auc.base_magic_armor}\r\n"; } else if (new_auc.base_armor.HasValue && new_auc.base_armor > 0) { helpstring = helpstring + $"{emoArmor} {new_auc.base_armor}\r\n"; } else if (new_auc.base_magic_armor.HasValue && new_auc.base_magic_armor > 0) { helpstring = helpstring + $"{emoMagicArmor} {new_auc.base_magic_armor}\r\n"; } //Sockets if (new_auc.socket1 == "none" || new_auc.socket1 == null) { ; } else if (new_auc.socket1 == "open") { helpstring = helpstring + $"{PingedEmotes.Find(c => c.ToString().Contains(new_auc.socket1))}"; } else { helpstring = helpstring + $"{PingedEmotes.Find(c => c.ToString().Contains($"{new_auc.socket1}{new_auc.socket1value}"))}"; } if (new_auc.socket2 == "none" || new_auc.socket2 == null) { ; } else if (new_auc.socket2 == "open") { helpstring = helpstring + $"{PingedEmotes.Find(c => c.ToString().Contains(new_auc.socket2))}"; } else { helpstring = helpstring + $"{PingedEmotes.Find(c => c.ToString().Contains($"{new_auc.socket2}{new_auc.socket2value}"))}"; } //Properties //Property1 if (new_auc.property1name != null) { if (new_auc.property1name.Contains("immortal*weapon")) { string hero; hero = new_auc.roshpititem_variant.Split("_")[2]; if (hero == "axe") { hero = "redgeneral"; } helpstring = helpstring + $"★ {RoshpitEmotes.Find(c => c.ToString().Contains(hero))} **Weapon**\r\n"; } else if (new_auc.property1name.Contains("arcana")) { string hero; hero = new_auc.roshpititem_variant.Split("_")[2]; if (hero == "axe") { hero = "redgeneral"; } helpstring = helpstring + $"★ {RoshpitEmotes.Find(c => c.ToString().Contains(hero))} **Arcana**\r\n"; } else if (new_auc.property1name.Contains("immortal")) { helpstring = helpstring + $"★**{new_auc.property1name.Substring(21).Replace("_", " ")}**\r\n"; } else { helpstring = helpstring + $"**{new_auc.property1name.Replace("_", " ")}** \t{new_auc.property1}\r\n"; } } //Property2 3 4 if (new_auc.property2name != null) { helpstring = helpstring + $"**{new_auc.property2name.Replace("_", " ")}**\t{new_auc.property2}\r\n"; } if (new_auc.property3name != null) { helpstring = helpstring + $"**{new_auc.property3name.Replace("_", " ")}**\t{new_auc.property3}\r\n"; } if (new_auc.property4name != null) { helpstring = helpstring + $"**{new_auc.property4name.Replace("_", " ")}**\t{new_auc.property4}\r\n"; } if (new_auc.property1name != null) { builder.AddField("Properties:", helpstring, true); } //Bids helpstring = ""; string emote = ""; if (new_auc.resource_type == "Mithril Shards") { emote = emoShard; } if (new_auc.resource_type == "Arcane Crystals") { emote = emoCrystal; } if (new_auc.resource_type == "Prismatic Gemstones") { emote = emoGem; } if (new_auc.minimum_bid > 0) { helpstring = helpstring + $"\r\nStarting Bid:\t\t{emote}{new_auc.minimum_bid.ToString("#,##0")}"; } if (new_auc.current_bid > 0) { helpstring = helpstring + $"\r\nHighest Bid:\t\t{emote}{new_auc.current_bid.ToString("#,##0")}"; } if (new_auc.buyout > 0) { helpstring = helpstring + $"\r\nBuyout:\t\t{emote}{new_auc.buyout.ToString("#,##0")}"; } helpstring = helpstring + "\r\n\\_\\_\\_\\_\\_\\_\\_\\_"; //Time double hours; hours = (new_auc.expiry_time - DateTime.Today).TotalHours - 12; helpstring = helpstring + $"\r\nExpiry:\t\t{hours.ToString("#,##0")} Hours\r\n"; builder.AddField("Auction Details", helpstring, true); builder.Description = Regex.Replace(message.Content, @"(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?", ""); // await message.Channel.SendMessageAsync("", embed : builder.Build()); Discord.Rest.RestUserMessage mes; mes = (Discord.Rest.RestUserMessage)(await message.Channel.GetMessageAsync(message.Id)); await mes.DeleteAsync(); } if ((!message.HasMentionPrefix(_discord.CurrentUser, ref argPos)) && (!message.HasCharPrefix(conf.prefix, ref argPos))) { return; } if ((message.Channel.Id == 391268932696145920) || (message.Channel.Id == 391268981446803466) || (message.Channel.Id == 331554376181219350) || (message.Channel.Id == 299731610683572224)) { await message.Channel.SendMessageAsync("<:MonkaS:663460636490989597> 👉 <#431938235267284992>"); return; } var context = new SocketCommandContext(_discord, message); // Perform the execution of the command. In this method, // the command service will perform precondition and parsing check // then execute the command if one is matched. await _commands.ExecuteAsync(context, argPos, _services); // Note that normally a result will be returned by this format, but here // we will handle the result in CommandExecutedAsync, }
public async Task <bool> Update() { UpdateIsRunning = true; Dictionary <int, AuctionNewClass> NewAuctionlist = new Dictionary <int, AuctionNewClass>(); StreamWriter writer = new StreamWriter(LOG_FILE); try { int counter = 1000; int multiplier = 0; string a; WebClient wc = new WebClient() { Encoding = System.Text.Encoding.UTF8 }; int start; using (AuctionContext dbAucContext = new AuctionContext()) { try { start = dbAucContext.Auctions.First(c => c.status == 0 & c.id > 1730000).id; } catch { // start = dbAucContext.Auctions.Last(Function(c) c.id > 1730000).id start = 1730000; } writer.WriteLine(start); while (counter == 1000) { counter = 0; System.Threading.Thread.Sleep(2000); writer.WriteLine(multiplier); try { a = wc.DownloadString($"http://www.roshpit.ca/champions/API/get_auctions?id={start + (1000 * multiplier)}"); } catch (Exception ex) { counter = 1000; writer.WriteLine(ex.Message); continue; } try { foreach (AuctionNewClass auc in JsonConvert.DeserializeObject <AuctionNewClass[]>(a)) { try { if (NewAuctionlist.ContainsKey(auc.id) == false) { NewAuctionlist.Add(auc.id, auc); } } catch (Exception ex) { writer.WriteLine(ex.Message); } counter += 1; } multiplier += 1; } catch (Exception ex) { writer.WriteLine(ex.Message); counter = 0; } } dbAucContext.Auctions.RemoveRange(((IEnumerable <AuctionNewClass>)dbAucContext.Auctions).Where(c => c.id >= start)); dbAucContext.SaveChanges(); writer.WriteLine("removed"); } List <int> remid = new List <int>(); using (AuctionContext dbAucContext = new AuctionContext()) { dbAucContext.AddRange(NewAuctionlist.Values); writer.WriteLine("saved " + NewAuctionlist.Count); dbAucContext.SaveChanges(); } writer.WriteLine(DateTime.Now); writer.Close(); writer.Dispose(); LastModified = DateTime.Now; GC.Collect(); } catch (Exception ex) { UpdatesEnabled = false; writer.WriteLine(ex.Message); writer.Close(); writer.Dispose(); } writer.Close(); writer.Dispose(); UpdateIsRunning = false; return(true); }