public void Execute() { List <string> addressList; List <DelegatePayments> payments; using (var context = new MyContext()) { addressList = context.DelegateConfig.Where(x => x.TelegramId == _message.From.Id).Select(x => x.Account).ToList(); payments = context.DelegatePayments.Where(x => addressList.Contains(x.Account)).ToList(); } var head = TzScanConnector.GetHead(); var level = TzScanConnector.GetLevel(head.Hash); _approxFinish = TimeSpan.FromMinutes(level.CycleEndBlock() - level.BlockLevel + 20); var message = ""; var tzScanConnector = new TzScanConnector(Singleton.Instance.Bakers[0]); foreach (var account in addressList) { message = $"This information is straight from tzscan.io for [{account.Substring(0, 4)}…{account.Substring(account.Length - 4)}](https://tzscan.io/{account}?default=rewards) with your expected fee applied.\n"; foreach (var reward in tzScanConnector.GetDelegateRewards(account)) { var payment = payments.FirstOrDefault(x => x.Cycle == reward.Cycle && x.Account == account); if (payment != null) { message += $"▫️ *{payment.Reward}ꜩ* for cycle {reward.Cycle}. [{payment.Paid.Substring(0,4)}…{payment.Paid.Substring(payment.Paid.Length-4)}](https://tzscan.io/{payment.Paid})\n"; } else { var pendingReward = (reward.Balance / reward.StakingBalance) * (reward.Rewards + reward.ExtraRewards - reward.Losses); message += $"▫️ *{pendingReward.ToTez()}ꜩ* for cycle {reward.Cycle}. {GetText(reward)}\n"; } } Singleton.Instance.Bot.SendTextMessageAsync(_message.From.Id, message, ParseMode.Markdown, true); } }