استخراج اعضای گروه تلگرام با استفاده از طریق پایتون
تلگرام یکی از بهترین برنامه های ارتباطی در سراسر جهان است. افراد معمولاً برای مدیریت انجمن ها و تبلیغات خود از تلگرام استفاده می کنند.
شرکت های نوپا یا پروژه های در حال اجرا از تلگرام برای جلب توجه مخاطبان به محصولات و خدمات خود استفاده می کنند. اعضای تلگرام با جامعه درگیر می شوند! این همان چیزی است که همه ما می خواهیم. اعضای متعهد به رشد جامعه کمک خواهند کرد.
در این آموزش ، شما یاد خواهید گرفت که چگونه از اعضای گروه تلگرام خروجی بگیرید.
چرا اعضای گروه های تلگرامی استخرج میکنیم؟
فرصت خوبی برای جلب توجه در گروه های مرتبط تلگرامی است. ممکن است بخواهید اعضای سایر گروه های مرتبط را خروجی و به اعضای گروه خود اضافه کنید. همچنین ، می توانید برای آنها پیام ارسال کنید و شروع تبلیغات کنید
در ابتد یک برنامه تلگرام ایجاد کنید و API خود را دریافت کنید!
به سایت my.telegram.org بروید و وارد شوید.
توجه داشته باشد حتما آی پی خود را تغییر دهد و از سرور خارج از کشور استفاده کنید
روی API development tools کلیک کنید و قسمتهای مورد نیاز را پر کنید.
می توانید هر نامی را برای برنامه خود انتخاب کنید. پس از ارسال ، api_id و api_hash دریافت خواهید کرد. آنها را در جایی ذخیره کنید. شما برای ورود به Telegram API از این مقدار ها استفاده خواهید کرد.
نصب Telethon در پایتون
Telethon یک کتابخانه عالی MTProto API Telegram است که توسط LunamiWebs نوشته شده است ، می توانید صفحه Github آنرا بررسی کنید. با استفاده از pip می توانید telethon را نصب کنید:
python pip install telethon
توجه: اگر از Linux یا Mac استفاده می کنید ، برای جلوگیری از مشکلات دسترسی لازم است قبل از pip از sudo استفاده کنید.
یک Client Object ایجاد کرده و وارد شوید!
آخرین نسخه telethon دارای دو ماژول sync و async است. ماژول async از asyncio استفاده می کند که خارج از محدوده این مقاله است. اگرچه با استفاده از هر دو ماژول می توانید عملکرد یکسانی را بدست آورید اما به دلیل سادگی ما از ماژول sync در این آموزش استفاده خواهیم کرد.
بنابراین به عنوان اولین گام ، ماژول sync را باید از کتابخانه Telethon وارد کنید.
from telethon.sync import TelegramClient
from telethon.sync import TelegramClient api_id = 123456 api_hash = 'YOUR_API_HASH' phone = '+111111111111' client = TelegramClient(phone, api_id, api_hash)
مرحله بعدی اتصال به تلگرام و بررسی اینکه آیا دسنرسی مربوطه را دارید ؟ در غیر این صورت درخواست کد OTP ارسال کرده و از کاربر می خواهید کدی را که دریافت کرده است در حساب تلگرام خود وارد کند.
در این مرحله باید کدی که از طرف تلگرام به اکانت شما ارسال شده است را در terminal یا cmd وار کنید.
client.connect() if not client.is_user_authorized(): client.send_code_request(phone) client.sign_in(phone, input('Enter the code: '))
پس از ورود به سیستم ، یک پرونده .session ایجاد می شود. این یک فایل پایگاه داده است که session ورودی شما را به صورت لاگ ذخیره می کند.
مشاهده لیست گروه های موجود در اکانت تلگرام شما
انتخاب گروه مورد نظر برای دریافت خروجی از اعضای گروه
from telethon.tl.functions.messages import GetDialogsRequest from telethon.tl.types import InputPeerEmpty chats = [] last_date = None chunk_size = 200 groups=[] result = client(GetDialogsRequest( offset_date=last_date, offset_id=0, offset_peer=InputPeerEmpty(), limit=chunk_size, hash = 0 )) chats.extend(result.chats)
توجه: از offset_date و offset_peer برای فیلتر کردن چت ها استفاده می شود. ما مقادیر خالی را به این پارامترها ارسال می کنیم بنابراین API همه گروه ها را برمی گرداند. offset_id و حد برای صفحه بندی استفاده می شود. در اینجا تعداد 200 تا از آخرین گفتگوی کاربر را دریافت می کنیم.
در این آموزش تصور می کنیم که فقط به گروه های بزرگ علاقه داریم. بنابراین بررسی کنید که آیا گروه سوپر گروه هست یا خیر و آن را به لیست خود اضافه کنید.
for chat in chats: try: if chat.megagroup== True: groups.append(chat) except: continue
در این مرحله باید گروه مورد نظر را انتخاب کنید
پس از لیست کردن گروه ها ، باید یک شماره وارد کنید و گروه مورد نظر خود را انتخاب کند. و شروع به دریافت خروجی میکند
print('Choose a group to scrape members from:') i=0 for g in groups: print(str(i) + '- ' + g.title) i+=1
g_index = input("Enter a Number: ") target_group=groups[int(g_index)]
ذخیره اعضای گروه تلگرام استخراج شده را در یک فایل CSV ذخیره کنی
اکنون از ماژول csv Python برای ذخیره داده های خروجی گرفته شده در یک فایل CSV استفاده میکنیم ابتدا یک فایل csv را در حالت نوشتن با رمزگذاری UTF-8 باز کنید
print('Saving In file...') with open("members.csv","w",encoding='UTF-8') as f: writer = csv.writer(f,delimiter=",",lineterminator="\n") writer.writerow(['username','user id', 'access hash','name','group', 'group id']) for user in all_participants: if user.username: username= user.username else: username= "" if user.first_name: first_name= user.first_name else: first_name= "" if user.last_name: last_name= user.last_name else: last_name= "" name= (first_name + ' ' + last_name).strip() writer.writerow([username,user.id,user.access_hash,name,target_group.title, target_group.id]) print('Members scraped successfully.')
توجه 1: هر کاربر نام کاربری ندارد. اگر کاربر نام کاربری نداشته باشد ، API هیچکدام را بر نمی گرداند. برای جلوگیری از نوشتن None و به جای نوشتن یک سطر خالی ، بررسی کنید آیا کاربر نام کاربری دارد یا خیر. در غیر این صورت ، یک رشته خالی به عنوان نام کاربری ایجاد کنید.
توجه 2: مشابه نام کاربری ، ممکن است برخی از کاربران نام یا نام خانوادگی نداشته باشند ، بنابراین ما برای نام نیز همین کار را می کنیم.
برای برخی از گروه های بزرگ ممکن است چند دقیقه طول بکشد تا اعضا را بدست آورید. اما سرانجام باید این پیام را که Members scraped successfully مشاهده کنید. که نشان می دهد همه چیز کاملاً کار کرده است.
بنابراین ما نام کاربری ، نام ، شناسه کاربر ، هش کاربر و جزئیات گروه را برای هر کاربر در پرونده CSV ذخیره کردیم. شما می توانید از شناسه کاربری و هش کاربر برای افزودن اعضای تلگرام استخراج شده به گروه خود استفاده کنید یا با استفاده از Telethon برای اعضای گروه تلگرام پیام ارسال کنید. اطلاعات بیشتر در این مورد در آموزشهای بعدی است.
در اینجا کد اجرایی کامل این آموزش آورده شده است:
from telethon.sync import TelegramClient from telethon.tl.functions.messages import GetDialogsRequest from telethon.tl.types import InputPeerEmpty import csv api_id = 123456 api_hash = 'YOUR_API_HASH' phone = '+111111111111' client = TelegramClient(phone, api_id, api_hash) client.connect() if not client.is_user_authorized(): client.send_code_request(phone) client.sign_in(phone, input('Enter the code: ')) chats = [] last_date = None chunk_size = 200 groups=[] result = client(GetDialogsRequest( offset_date=last_date, offset_id=0, offset_peer=InputPeerEmpty(), limit=chunk_size, hash = 0 )) chats.extend(result.chats) for chat in chats: try: if chat.megagroup== True: groups.append(chat) except: continue print('Choose a group to scrape members from:') i=0 for g in groups: print(str(i) + '- ' + g.title) i+=1 g_index = input("Enter a Number: ") target_group=groups[int(g_index)] print('Fetching Members...') all_participants = [] all_participants = client.get_participants(target_group, aggressive=True) print('Saving In file...') with open("members.csv","w",encoding='UTF-8') as f: writer = csv.writer(f,delimiter=",",lineterminator="\n") writer.writerow(['username','user id', 'access hash','name','group', 'group id']) for user in all_participants: if user.username: username= user.username else: username= "" if user.first_name: first_name= user.first_name else: first_name= "" if user.last_name: last_name= user.last_name else: last_name= "" name= (first_name + ' ' + last_name).strip() writer.writerow([username,user.id,user.access_hash,name,target_group.title, target_group.id]) print('Members scraped successfully.')