public bool VerifyNumbers(LeadCollection allLeadCollection, List <LeadRequest> firstTimeRequestedLeads) { if (!IsConnected || !IsAuthorized) { throw new InvalidOperationException("Service isn't running. Start service before executing some commands"); return(false); } if (firstTimeRequestedLeads.Count == 0) { return(true); } try { var contacts = firstTimeRequestedLeads.Select(lead => new LeadToContactAdapter(lead.Id.ToString(), lead.Phone)) .ToList(); var task = TelegramClient.ImportContactsAsync(contacts); task.Wait(); var imported = task.Result.Users; var toDeleteUsers = new List <TLAbsInputUser>(); var importedUsers = imported.Select(user => user as TLUser) .Where(user => user != null && !string.IsNullOrWhiteSpace(user.Username)).ToDictionary(user => user.Phone); foreach (var lead in allLeadCollection.Leads) { if (importedUsers.TryGetValue(lead.Key, out TLUser importedUser)) { toDeleteUsers.Add(new TLInputUser() { AccessHash = importedUser.AccessHash ?? 0, UserId = importedUser.Id }); lead.Value.IsTelegram = true; lead.Value.TelegramUser = importedUser.Username; } } if (toDeleteUsers.Count > 0) { TelegramClient.DeleteContactsAsync(toDeleteUsers).Wait(); } return(true); } catch (Exception e) { Console.WriteLine(e); return(false); } return(true); }