محمد زرچی
محمد زرچی
خواندن ۳ دقیقه·۳ سال پیش

ساخت تلگرام غیررسمی با Telethon، قسمت ۲

در قسمت قبل یاد گرفتیم که چطور از تلگرام دسترسی بگیریم، حالا میخوایم از دسترسی که داریم استفاده کنیم و بتونیم به تلگرام با شماره خودمون لاگین بشیم و یک session فعال داخل حساب تلگراممون داشته باشیم.

بدلیل اینکه ما با لایبری Telethon پایتون کار می‌کنیم، اولین قدم نصب این لایبری روی سیستم است که برای انجامش هم میتونیم از طریق کد زیر داخل cmd به راحتی این لایبری رو نصب کنیم:

pip install Telethon

بعد از نصب کامل این لایبری، میریم سروقت کدنویسی اولین فایل بنام UserLogin.py، خب برای شروع ابتدا باید پکیج‌های لازم رو import کنیم:

import telethon from telethon.sync import TelegramClient

در این فایل telethon را جهت مدیریت خطا جهت اتصال به حساب و TelegramClient را جهت اتصال به حساب و استفاده از متدهای کلاس import کردیم، در مرحله بعد باید طبق مثال زیر یک نمونه از کلاس TelegramClient بسازیم:

client = TelegramClient('account', api_id, api_hash)

همانطور که مشاهده می‌کنی، پارامترهای ضروری که برای ساخت یک نمونه نیازه به ترتیب نام‌نشست که در اینجا account نامگذاری شده، api_id و api_hash هست که به جز نام‌نشست دوپارامتر دیگر واضح است که و مقادیر دریافت شده از تلگرام رو قرار بده.

اما نام‌نشست چیست؟ نامگذاری این پارامتر اختیاری است به عنوان مثال میتونی به‌جای account نام دیگه‌ای وارد کنی اما بریم سر این موضوع که این پارامتر دقیقا چه کاری رو انجام میده، در واقع با هر لاگین داخل حساب تلگرام یک فایل داخل دایرکتوری اجرای همین کد ایجاد میشه که با اجرای کدبالا این فایل account.session هستش و تنظیمات مربوط به حساب داخلش ذخیرست، سعی کنید به هیچ وجه این فایل رو در اختیار کسی قرار ندید چون پیامدهای بعدش قابل پیش‌بینی نیست.

بریم برای ادامه کار، خب الان باید به client متصل بشیم و شماره تلفن رو از کاربر بگیریم و درخواست کدتایید رو به سرور تلگرام بدیم تا برای اون شماره کدتایید ورود بفرسته.

client.connect() phone = input(&quotInsert Your Phone: &quot) client.send_code_request(phone, force_sms=False)

همانطور که ملاحظه میکنی به client متصل شدیم و شماره تلفن گرفتیم و درخواست کدرو به تلگرام ارسال کردیم تا اگر force_sms=True بود به کاربر کد را در قالب sms بفرسته و اگر force_sms=False بود کد رو به دیوایس‌های فعال تلگرامش بفرسته.

مرحله بعد باید کدی که تلگرام برای کاربر فرستاده رو بگیریم و وارد حسابش بشیم، اما یک نکته وجود داره اونم برای کاربرایی که ورود دو مرحله‌ای رو برای حسابشون فعال کردن که اگر مدیریت خطا انجام ندیم و رمز ورود دو مرحله‌ای رو ازش نگیریم، کد ما کرش میکنه و نمیتونیم به حسابش وارد بشیم، خب برای اینکه بتونیم با موفقیت وارد حسابش بشیم طبق کد زیر پیش میریم:

value = input(&quotInsert Login Code: &quot) try: client.sign_in(phone, code=value) except telethon.errors.SessionPasswordNeededError: password = input(&quotInsert Your 2-Step Code: &quot) client.sign_in(password=password) print(&quotSuccessfully Connect!&quot)

خب ما کد رو از کاربر گرفتیم و به تلگرام ارسال کردیم و در صورت داشتن ورود دومرحله‌ای، رمز رو از کاربر گرفتیم در نهایت اگر پیام Successfully Connect در خروجی چاپ شد یعنی تونستیم با موفقیت به اکانت متصل بشیم و طبق صحبت‌های بالا حالا ما فایل یک نشست‌فعال با نام account.session رو در دایرکتوری همین کد داریم، یک نکته جالب هم میتونید انجام بدید اینه که میتونی چندین حساب فعال داشته باشی فقط کافیه اسم نشست رو تغییر بدی همین، کدهای بالارو بصورت کامل میتونی اینجا ببینی:

import telethon from telethon.sync import TelegramClient client = TelegramClient('account', c.api_id, c.api_hash) client.connect() phone = input(&quotInsert Your Phone: &quot) client.send_code_request(phone, force_sms=False) value = input(&quotInsert Login Code: &quot) try: client.sign_in(phone, code=value) except telethon.errors.SessionPasswordNeededError: password = input(&quotInsert Your 2-Step Code: &quot) client.sign_in(password=password) print(&quotSuccessfully Connect!&quot)

خب اینم از متصل شدن به تلگرام، منتظر قسمت‌های بعدی باش، داستان جالب میشه :)


قسمت‌های قبل:

قسمت اول - دریافت دسترسی از تلگرام

تلگرامپایتونtelethontelegram api
/home/project/python/
شاید از این پست‌ها خوشتان بیاید