public async Task PushAvaUbUpdate(int id) { if (Context.Message.Author.Id != 195567858133106697) { return; } await ReplyAsync("Starting push!"); await AvastarObject.UpdateUBs(id); await ReplyAsync("Done!"); }
public async Task PushAvaUbUpdate(int first, int last) { if (Context.Message.Author.Id != 195567858133106697) { return; } for (int i = first; i <= last; i++) { await ReplyAsync($"Starting push for #{i}!"); await AvastarObject.UpdateUBs(i); await ReplyAsync($"Done pushing #{i}!"); } }
public async Task GetTop10Score() { var waitEmbed = new EmbedBuilder().WithColor(Color.DarkMagenta).WithTitle("Fetching data <a:loading:726356725648719894>"); var msg = await ReplyAsync(embed : waitEmbed.Build()); var list = await AvastarObject.GetSeriesList(); list = list.OrderByDescending(a => a.Score).ToList(); var embed = new EmbedBuilder().WithColor(Color.DarkMagenta); embed.WithTitle($"Top 10 by Score"); var str = ""; for (int i = 0; i < 10; i++) { str += $"{i + 1}. [Avastar #{list[i].id}]({"https://avastars.io/avastar/"}{list[i].id}) - {list[i].Score}\n"; } embed.WithDescription(str); await msg.ModifyAsync(m => m.Embed = embed.Build()); }
public static async Task WatchChainForEvents() { // initiate web, contract and events bool first = false; Web3 web3 = new Web3(web3Url); var newPrimeEvent = web3.Eth.GetEvent <NewPrimeEvent>(avastarContractAddress); var transferEvent = web3.Eth.GetEvent <Transfer>(avastarContractAddress); bool isOn = true; // get last block param from db var checkCollec = DatabaseConnection.GetDb().GetCollection <Checkpoint>("Checkpoints"); var checkpoint = (await checkCollec.FindAsync(c => c.id == 1)).FirstOrDefault(); BlockParameter lastBlock = await GetLastBlockCheckpoint(web3); BlockParameter firstBlock = new BlockParameter(new HexBigInteger(new BigInteger(checkpoint.lastBlockChecked))); while (isOn) { checkpoint = (await checkCollec.FindAsync(c => c.id == 1)).FirstOrDefault(); firstBlock = new BlockParameter(new HexBigInteger(new BigInteger(checkpoint.lastBlockChecked))); lastBlock = await GetLastBlockCheckpoint(web3); try { if (lastBlock.BlockNumber.Value - firstBlock.BlockNumber.Value > 20000) { lastBlock = new BlockParameter(new HexBigInteger(firstBlock.BlockNumber.Value + 20000)); } // event filters var newPrimeFilter = newPrimeEvent.CreateFilterInput(firstBlock, lastBlock); var transferFilter = transferEvent.CreateFilterInput(firstBlock, lastBlock); // event logs from block range var newPrimeLogs = await newPrimeEvent.GetAllChanges(newPrimeFilter); var transferLogs = await transferEvent.GetAllChanges(transferFilter); foreach (var prime in newPrimeLogs) { if ((int)prime.Event.id > lastMinted) { if (await AvastarObject.GetAvaCount() == (int)prime.Event.id) { await AvastarObject.CreateAva((int)prime.Event.id); lastMinted = (int)prime.Event.id; await PostToBirthChannel((int)prime.Event.id); } } } foreach (var transfer in transferLogs) { await AvastarObject.UpdateOwner((int)transfer.Event.TokenId, transfer.Event.To); } checkpoint.lastBlockChecked = Convert.ToInt32(lastBlock.BlockNumber.Value.ToString()); await checkCollec.FindOneAndReplaceAsync(c => c.id == 1, checkpoint); } catch (Exception e) { Logger.Log(e.Message); } await Task.Delay(120000); } }