Exemplo n.º 1
0
        public async Task <UserSearchResult> GetUsersOld(TelegramClient client)
        {
            UserSearchResult searchResult = new UserSearchResult()
            {
                TlUsers = new List <TLUser>(), Users = new List <UserModel>()
            };

            try
            {
                dynamic dialogs;
                try
                {
                    dialogs = (TLDialogs)await client.GetUserDialogsAsync();
                }
                catch (Exception ex)
                {
                    dialogs = (TLDialogsSlice)await client.GetUserDialogsAsync();

                    Logger.Error(ex);
                }

                foreach (TLAbsChat element in dialogs.Chats)
                {
                    if (element is TLChat)
                    {
                        TLChat chat    = element as TLChat;
                        var    request = new TLRequestGetFullChat()
                        {
                            ChatId = chat.Id
                        };

                        TeleSharp.TL.Messages.TLChatFull chatFull = await client.SendRequestAsync <TeleSharp.TL.Messages.TLChatFull>(request);

                        foreach (var absUser in chatFull.Users)
                        {
                            TLUser user = absUser as TLUser;

                            if (!user.Bot && !user.Deleted && !user.Self)
                            {
                                searchResult.TlUsers.Add(user);

                                var customeUser = _userService.CreateCustomUserModel(user);
                                searchResult.Users.Add(customeUser);
                            }
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(searchResult);
        }
Exemplo n.º 2
0
        public async Task <TLVector <TLAbsUser> > GetMembers(int chatId)
        {
            await client.ConnectAsync();

            TLRequestGetFullChat req = new TLRequestGetFullChat
            {
                chat_id = chatId
            };

            TLChatFull result = await client.SendRequestAsync <TLChatFull>(req);

            return(result.users);
        }
        public async Task <List <TLUser> > GetUsers(TelegramClient client)
        {
            var usersList = new List <TLUser>();

            try
            {
                var dialogs = (TLDialogs)await client.GetUserDialogsAsync();

                //var dialogs2 = (TLDialogsSlice)await client.GetUserDialogsAsync();

                foreach (TLAbsChat element in dialogs.Chats)
                {
                    if (element is TLChat) //chats with permissions
                    {
                        TLChat chat    = element as TLChat;
                        var    request = new TLRequestGetFullChat()
                        {
                            ChatId = chat.Id
                        };

                        TeleSharp.TL.Messages.TLChatFull chatFull = await client.SendRequestAsync <TeleSharp.TL.Messages.TLChatFull>(request);

                        foreach (var absUser in chatFull.Users)
                        {
                            TLUser user = absUser as TLUser;

                            if (!user.Bot)
                            {
                                usersList.Add(user);
                            }
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(usersList);
        }
Exemplo n.º 4
0
        private async Task MainAsync(string[] args)
        {
            TelegramClient client = null;

            try
            {
                // -- if necessary, IP can be changed so the client can connect to the test network.
                Session session = null;
                //    new Session(new FileSessionStore(), "session")
                //{
                //    ServerAddress = "149.154.175.10",
                //    Port = 443
                //};
                //Console.WriteLine($"{session.ServerAddress}:{session.Port} {phone}");
                client = new TelegramClient(APIId, APIHash);
                // subscribe an event to receive live messages
                //client.Updates += Client_Updates;
                await client.ConnectAsync();

                Console.WriteLine($"Authorised: {client.IsUserAuthorized()}");
                TLUser user = null;
                // -- If the user has already authenticated, this step will prevent account from being blocked as it
                // -- reuses the data from last authorisation.
                if (client.IsUserAuthorized())
                {
                    //user = client.Session.TLUser;
                }
                else
                {
                    var registered = await client.IsPhoneRegisteredAsync(phone);

                    var hash = await client.SendCodeRequestAsync(phone);

                    Console.Write("Code: ");
                    var code = Console.ReadLine();
                    if (!registered)
                    {
                        Console.WriteLine($"Sign up {phone}");
                        user = await client.SignUpAsync(phone, hash, code, "First", "Last");
                    }
                    Console.WriteLine($"Sign in {phone}");
                    user = await client.MakeAuthAsync(phone, hash, code);
                }

                var contacts = await client.GetContactsAsync();

                Console.WriteLine("Contacts:");
                foreach (var contact in contacts.Users.OfType <TLUser>())
                {
                    var contactUser = contact as TLUser;
                    Console.WriteLine($"\t{contact.Id} {contact.Phone} {contact.FirstName} {contact.LastName}");
                }


                var dialogs = (TLDialogs)await client.GetUserDialogsAsync();

                Console.WriteLine("Channels: ");
                foreach (var channelObj in dialogs.Chats.OfType <TLChannel>())
                {
                    var channel = channelObj as TLChannel;
                    Console.WriteLine($"\tChat: {channel.Title}");
                }

                Console.WriteLine("Groups:");
                TLChat chat = null;
                foreach (var chatObj in dialogs.Chats.OfType <TLChat>())
                {
                    chat = chatObj as TLChat;
                    Console.WriteLine($"Chat name: {chat.Title}");
                    var request = new TLRequestGetFullChat()
                    {
                        ChatId = chat.Id
                    };
                    var fullChat = await client.SendRequestAsync <TeleSharp.TL.Messages.TLChatFull>(request);

                    var participants = (fullChat.FullChat as TeleSharp.TL.TLChatFull).Participants as TLChatParticipants;
                    foreach (var p in participants.Participants)
                    {
                        if (p is TLChatParticipant)
                        {
                            var participant = p as TLChatParticipant;
                            Console.WriteLine($"\t{participant.UserId}");
                        }
                        else if (p is TLChatParticipantAdmin)
                        {
                            var participant = p as TLChatParticipantAdmin;
                            Console.WriteLine($"\t{participant.UserId}**");
                        }
                        else if (p is TLChatParticipantCreator)
                        {
                            var participant = p as TLChatParticipantCreator;
                            Console.WriteLine($"\t{participant.UserId}**");
                        }
                    }

                    var peer = new TLInputPeerChat()
                    {
                        ChatId = chat.Id
                    };
                    var m = await client.GetHistoryAsync(peer, 0, 0, 0);

                    Console.WriteLine(m);
                    if (m is TLMessages)
                    {
                        var messages = m as TLMessages;


                        foreach (var message in messages.Messages)
                        {
                            if (message is TLMessage)
                            {
                                var m1 = message as TLMessage;
                                Console.WriteLine($"\t\t{m1.Id} {m1.Message}");
                            }
                            else if (message is TLMessageService)
                            {
                                var m1 = message as TLMessageService;
                                Console.WriteLine($"\t\t{m1.Id} {m1.Action}");
                            }
                        }
                    }
                    else if (m is TLMessagesSlice)
                    {
                        bool done  = false;
                        int  total = 0;
                        while (!done)
                        {
                            var messages = m as TLMessagesSlice;

                            foreach (var m1 in messages.Messages)
                            {
                                if (m1 is TLMessage)
                                {
                                    var message = m1 as TLMessage;
                                    Console.WriteLine($"\t\t{message.Id} {message.Message}");
                                    ++total;
                                }
                                else if (m1 is TLMessageService)
                                {
                                    var message = m1 as TLMessageService;
                                    Console.WriteLine($"\t\t{message.Id} {message.Action}");
                                    ++total;
                                    done = message.Action is TLMessageActionChatCreate;
                                }
                            }
                            m = await client.GetHistoryAsync(peer, total, 0, 0);
                        }
                    }
                }

                //// -- Wait in a loop to handle incoming updates. No need to poll.
                //for (; ; )
                //{
                //    await client.WaitEventAsync();
                //}
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }