Exemplo n.º 1
0
        //**********************************************************//
        //**                 Below is Members routines            **//
        //**********************************************************//

        // Return members list from specified group Name
        private static TLVector <TLAbsUser> GetGroupMembers(string gname, string ufile = null)
        {
            long hash = 0;
            int  gid  = GetGroupIdByName(gname, out hash);

            TeleSharp.TL.Messages.TLChatFull ch = GetGroupFullById(gid, hash);

            if (0 == hash && MembersLogAndSave(ch.Users, ufile, gname))
            {
                return(ch.Users);
            }

            int offset = 0;
            TLChannelParticipants ps    = null;
            TLVector <TLAbsUser>  users = new TLVector <TLAbsUser>();

            do
            {
                ps = client.GetChannelParticipants(gid, hash, offset, 5000).GetAwaiter().GetResult();
                foreach (TLUser u in ps.Users)
                {
                    users.Add(u);
                }
                offset += ps.Users.Count;
            } while (users.Count < ps.Count && 0 != ps.Users.Count);

            MembersLogAndSave(users, ufile, gname);
            return(users);
        }
Exemplo n.º 2
0
        public async Task <UserSearchResult> GetUsers(TelegramClient client, List <string> chatsNames)
        {
            UserSearchResult searchResult = new UserSearchResult()
            {
                TlUsers = new List <TLUser>(), Users = new List <UserModel>()
            };

            try
            {
                List <TLChannel> channels = await GetChats(client, chatsNames);

                foreach (var channel in channels)
                {
                    var request = new TLRequestGetParticipants {
                        Channel = new TLInputChannel {
                            AccessHash = (long)channel.AccessHash,
                            ChannelId  = channel.Id
                        },
                        Filter = new TLChannelParticipantsRecent()
                    };

                    TLChannelParticipants found = await client.SendRequestAsync <TLChannelParticipants>(request);

                    foreach (var absUser in found.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);
        }