Last active
August 10, 2019 13:33
-
-
Save amiryousefi/5689d1675bb31cac611a77c905e329b9 to your computer and use it in GitHub Desktop.
A gist to explain how to get Telegram channels members
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import configparser | |
import json | |
from telethon import TelegramClient | |
from telethon.errors import SessionPasswordNeededError | |
from telethon.tl.functions.channels import GetParticipantsRequest | |
from telethon.tl.types import ChannelParticipantsSearch | |
from telethon.tl.types import ( | |
PeerChannel | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Create the client and connect | |
client = TelegramClient(username, api_id, api_hash) | |
client.start() | |
print("Client Created") | |
# Ensure you're authorized | |
if not client.is_user_authorized(): | |
client.send_code_request(phone) | |
try: | |
client.sign_in(phone, input('Enter the code: ')) | |
except SessionPasswordNeededError: | |
client.sign_in(password=input('Password: ')) | |
me = client.get_me() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
user_input_channel = input("enter entity(telegram URL or entity id):") | |
if user_input_channel.isdigit(): | |
entity = PeerChannel(int(user_input_channel)) | |
else: | |
entity = user_input_channel | |
my_channel = client.get_entity(entity) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
offset = 0 | |
limit = 100 | |
all_participants = [] | |
while True: | |
participants = client(GetParticipantsRequest( | |
my_channel, ChannelParticipantsSearch(''), offset, limit, | |
hash=0 | |
)) | |
if not participants.users: | |
break | |
all_participants.extend(participants.users) | |
offset += len(participants.users) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Reading Configs | |
config = configparser.ConfigParser() | |
config.read("config.ini") | |
# Setting configuration values | |
api_id = config['Telegram']['api_id'] | |
api_hash = config['Telegram']['api_hash'] | |
api_hash = str(api_hash) | |
phone = config['Telegram']['phone'] | |
username = config['Telegram']['username'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
all_user_details = [] | |
for participant in all_participants: | |
all_user_details.append( | |
{"id": participant.id, "first_name": participant.first_name, "last_name": participant.last_name, | |
"user": participant.username, "phone": participant.phone, "is_bot": participant.bot}) | |
with open('user_data.json', 'w') as outfile: | |
json.dump(all_user_details, outfile) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment