//**********************************************************// //** 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); }
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); }