示例#1
0
        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);
        }