نوشتن ربات و پیاده سازی آن روی اکانت شخصی تلگرام در پایتون :: Mr Python | مستر پایتون

نوشتن ربات و پیاده سازی آن روی اکانت شخصی تلگرام در پایتون

  • ۴۵۱۴

 نوشتن ربات و پیاده سازی آن روی اکانت شخصی تلگرام در پایتون

درود به همه !

 

در این پست آموزشی قراره کار خیلی جالبی بکنیم .  امروز میایم با زبان پایتون ، اسکریپتی مینویسیم که باعث میشه اکانت شخصی تلگراممون به طور خودکار یه سری کار ها رو انجام بده . مثلا رباتی بنویسیم که بیاد به یه لیست username که بهش میدیم سلام کنه .یا مثلا یه لیست آی دی تلگرام بهش بدیم و خودش خودکار تمام پروفایل هاشونو دانلود کنه و روی سیستممون ذخیره کنه و کلی کارهای دیگه ...  در واقع ما با اینکار اکانت تلگراممون رو تبدیل به یک رباتی میکنیم که مثل یک کاربر عادی تلگرام توانایی انجام هر کاری (پیام دادن ، خواندن پیام ، دیدن پروفایل دیگران و...) را دارد .

برای اسکریپت امروز ما نیاز داریم یه سری کارها انجام بدیم :

 

۱ - ساخت اپلیکیشن تلگرام و گرفتن api_id  و api_hash : برای اینکار ابتدا به لینک زیر وارد میشیم (باید با VPN بریم . تلگرام فیلتره):

https://my.telegram.org/

 پس از ورود به لینک بالا ازمون شماره تلفنمونو میپرسه . شماره همون اکانتی که میخوایم ربات روش پیاده سازی کنیم رو بهش میدیم . شماره ای که میدیم باید با کد کشور شروع بشه یعنی به فرم زیر باشه :

+98XXXXXXXXXX

بعد از اینکه شماره رو دادیم یه کد ارسال میشه به اکانت تلگراممون روی همون شماره . اون کد رو وارد کنید و برید مرحله ی بعدی .

در مرحله ی بعد مانند تصویر زیر ، یه صفحه ای میاد که سه تا گزینه داره . گزینه ی اول یعنی "API Development Tools" رو انتخاب میکنیم :

پس از انتخاب گزینه یه فرم اطلاعات به ما نشون داده میشه که با اطلاعات دلخواه پر میکنیم . گزینه ی platform رو بهتر هستش روی Desktop بزنید :

پس از نوشتن اطلاعات مورد نظر خودتون  دکمه ی Create Application در پایین صفحه رو بزنید .

پس از تکمیل مراحل بالا اطلاعات اپلیکیشن مانند تصویر زیر به شما نشون داده میشه . ما به دو مورد آن ها نیاز داریم پس یه جا یادداشتش کنید . api_id  و api_hash رو یه جا بنویسید بعدا داخل اسکریپت نیاز داریم .

۲ - نصب کتابخونه ی telethon :

پس از طی کردن مرحله ی اول یعنی ساخت اپلیکیشن تلگرام نیاز داریم تا کتابخونه ی مورد نیاز یعنی telethon رو نصب کنیم . برای نصب این کتابخونه از ابزار pip استفاده میکنیم :

نصب telethon در لینوکس :

MrPython@debian:~$ sudo pip3 install telethon

نصب telethon در ویندوز :

C:\> pip install telethon

پس از نصب کتابخونه میریم سراغ سورس کد .

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

سورس کد دوم کارش اینه که یه لیست آی دی تلگرام بهش میدیم و میاد عکس پروفایل همشونو دانلود میکنه و رو سیستممون ذخیره میکنه . (جمع آوری اطلاعات)

برای نوشتن دو سورس بالا ابتدا باید با چند تابع و ... از کتابخونه ی telethon آشنا بشیم تا بتونیم به اکانتمون وصل بشیم . اولین قدم در نوشتن اسکریپت های بالا اینه که به اکانتمون وصل بشیم .

فقط یه نکته ی خیلی مهم اینه که برای اجرا کردن این سورس ها باید چند تا مورد رو رعایت کنین . یکی اینکه برای اطمینان این اسکریپت ها رو با دسترسی کامل اجراشون کنین (داخل لینوکس با دسترسی root و داخل ویندوز با دسترسی administrator) و اینکه به دلیل فیلترینگ تلگرام باید با VPN این اسکریپت ها رو اجرا کنید .اگه ویندوز دارین که میتونید یه VPN نصب کنین روی سیستمتون . اگه هم لینوکس دارین میتونید از پروکسی Tor استفاده کنید .(اینا پیشنهاده هر پروکسی که راحت ترین اجرا کنید)

خب سورس زیر میاد یه کلاینت از اکانتمون میسازه (در واقع از طریق اپلیکیشنی که در بالا ساختیم وصل میشه به اکانتمون):

from telethon import TelegramClient , events , sync

# API variables
api_id = 1234567
api_hash = "api hash"

# Client Object
client = TelegramClient("session_name" , api_id , api_hash)
client.start()

توضیح : در ابتدا ماژول های مورد نیاز رو از کتابخونه ی telethon ایمپورت کردیم . سپس در زیر کامنت api variables دو متغییر تعریف کردیم . در متغییر  api_id شماره ی api id که در مراحل قبل یادداشت کردیم رو مینویسیم . همچنین در متغییر api_hash ، کد api hash که در مراحل قبل یادداشت کردیم رو به صورت استرینگ مینویسیم .

پس از اون در زیر کامنت Client object ، آبجکت کلاینتمون رو مینویسیم و عملا وصل میشیم به اکانتمون .

در ابتدا با استفاده از TelegramClient اومدیم شیء کلاینتمون رو ساختیم و ریختیم داخل متغییر client . کلاس TelegramClient سه ورودی از ما گرفته . اولین ورودی اسم session  هستش که میتونید یه اسم دلخواه بزارید .  ورودی بعدی api id هستش که متغییر api_id رو بهش دادیم و ورودی سوم api hash هستش که متغییر api_hash رو بهش دادیم .

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

 

۱ - سورس ارسال پیام خودکار به لیستی از آی دی های تلگرام :

from telethon import TelegramClient , events , sync

# API variables
api_id = 1234567
api_hash = "api hash"

# Client Object
client = TelegramClient("session_name" , api_id , api_hash)
client.start()

# send message

usernames = ["username1" , "username2" , "username3" , "username4"]
message = """hi i am a telegarm client
i will send you messages automatically !
:)"""

for username in usernames:
    client.send_message(username , message)
    print("sending message to {}".format(username))

client.log_out()
client.disconnect()

توضیح : قسمت های api variables  و   client object رو در قسمت قبلی توضیح دادیم . در این سورس قسمت send message  به سورس قبلی اضافه شده است .

همینطور که میبینید پس از اتصال به اکانتمون اومدیم یه لیستی تعریف کردیم به اسم usernames که یه سری آی دی تلگرامی که میخوایم بهشون پیام ارسال کنیم رو داخلش نوشتیم . همچنین یه متغییر به نام message تعریف کردیم که پیامی که قرار هست بهشون ارسال کنیم رو داخلش نوشتیم .

در خط بعدی یه حلقه ی for نوشتیم که میاد به تک تک آی دی ها با استفاده از متود client.send_message پیام ارسال میکنه . این متود دو ورودی میگیره . ورودی اول همون آی دی تلگرامی هستش که میخوایم بهش پیام ارسال کنیم و ورودی دوم خود پیام هست که بهش دادیم .

بعد از ارسال پیام یه متنی چاپ کردیم و گفتیم که به فلان آی دی پیام ارسال شد .

پس از اتمام حلقه ی for با استفاده از client.log_out اومدیم از اکانت خارج شدیم و با استفاده از client.disconnect ، از کلاینت قطع شدیم .

۲ - سورس دانلود عکس پروفایلِ لیستی از آی دی های تلگرامی :

from telethon import TelegramClient , events , sync

# API variables
api_id = 1234567
api_hash = "api hash"

# Making Client Object
client = TelegramClient("session" , api_id , api_hash)
client.start()

# download photo from profile
usernames = ["username1" , "username2" , "username3"]

for username in usernames:
    photo = client.download_profile_photo(username)
    print("{} saved !".format(photo))

client.log_out()
client.disconnect()

توضیح : این سورس شباهت زیادی به سورس های قبلی داره . تنها تفاوتی که داره داخل حلقه ی for هستش . ما مثل سورس قبلی لیستی از آی دی های تلگرامی رو ریختیم داخل لیست usernames . سپس در حلقه ی for با استفاده از متود client.download_profile_photo  اومدیم پروفایل هر کدوم از آی دی ها تلگرامی رو دانلود کردیم . ما یک ورودی به این تابع دادیم که همون آی دی تلگرامی هستش که میخواد پروفایلشو دانلود کنه. پس از دانلود اونا ما اسم فایل عکس ذخیره شده رو ریختیم داخل متغییر photo  و اونو در خط بعد چاپ کردیم . (عکس ها در همون مسیری که اسکریپتو اجرا کردیم ذخیره میشن).

 

کتابخونه ی telethon کلی تابع دیگه داره که میشه باهاشون کارای جالبی کرد . برای مثال تابع client.get_message(username) لیستی از پیام هایی که username به ما فرستاده رو برمیگردونه . برای یادگیری بیشتر این کتابخونه میتونید از لینک زیر استفاده کنید :

https://docs.telethon.dev/en/latest/

 

 یا حق !

Telegram Channel : @mrpythonblog

 

  • از کجا یاد گرفتی داداش سورس یا داکیومنت خوب چی هست براش (فارسی)

    پاسخ:
    من از منابع زبان اصلی دیدم ولی تو منابع فارسی دنبال آموزش های کتابخونه telethon بگردید مطالبی هست .
  • سلام

    میخاستم همین قابلیت پیاده سازی ربات روی اکانت رو با php انجام بدم ایا شدنیه ؟ 

    و هر چی دربارش سرچ کردم هیچ سایتی پیئا نکردم که توضیح بده . چه فارسی چه انگلیسی .

    شما کلیدواژه ی  مناسبشو میدونید چیه تا سایت مناسبشو پیدا کنم ؟ 

    پاسخ:
    سلام . 
    بنده با php آشنایی ندارم ولی باید بشه چیز خاصی نیست
  • مجید درویشان

    سلام

    من هر کاری می کنم خطا بر می گردونه و id رو نمی ده

    چکار باید بکنم؟

    ممنون

    پاسخ:
    سلام . درود .
    خطاش رو بفرستید ...
  • عالی بود فقط اون اول وقتی دسکتاپ رو انتخاب میکردم ارور میداد

    پاسخ:
    درود .
    لطفا متن ارور رو بفرستید .
  • سلام ممنون از سایت خوبتون مطالب عالی و مفیده👍

    پاسخ:
    درود بر شما .
    خواهش میکنم خداروشکر که مطالب مفید واقع شدن :)
  • امین رحمانی

    با سلام 

     

    وقتی از این کتابخونه استفاده میکنم کد که یکبار اشتباه وارد کنیم دفعه دوم کاربر رو بلاک میکنه به مدت 24 ساعت. درصورتی که منطقی نیست شاید واقعا دست آدم اشتباه بخوره

     

    روشی یا راه حلی برای این موضوع هست ؟

    پاسخ:
    درود بر شما .
    واقعیتش تاحالا به این مشکل بر نخورده بودم ... بنابراین روشی فعلا سراغ نداریم برای دور زدن این محدودیت :)
    موفق باشید .
  • محمد حسین رحیمی

    سلام و عرض خسته نباشید.
    سایت خیلی خوبی دارید و مطالب خیلی خوبی دارید:)

    همونطور که میدونید تل الان فیلتره
    ابا میشه تور رو با پایتون ران کرد بدون اینکه کاربر بخاد کاری انجام بده؟
    چون دارم ی رت درست میکنم نیازه که کاربر متوجه نشه که از vpn استفاده دارم میکنم
    اگه میشه ی توضیح کوتاه بدید 
    مرسی:))))

    پاسخ:
    درود بر شما . 
    ممنونم خداروشکر که مطالب مفید هستش. 
    ببینید شدنش رو فک میکنم بشه . یعنی بشه که با استفاده از پایتون تور رو اجرا کرد . ولی نکته اینه که شما تضمین میکنید تور روی سیستم هدف نصب باشه ؟ 
    منظورم اینه که تور حتما باید نصب باشه روی سیستم هدف تا بشه ازش استفاده کرد . 
    شما نمیتونید مطمئن باشید که تور نصبه . بنابراین این روشی که میگید همه جا کار نمیده . مگر اینکه خودتون یک پروکسی سرور سراغ داشته باشید و داخل پایتون وصل بشید به اون پروکسی سرور و ازش به عنوان یک VPN استفاده کنید.  
  • با سلام

    خدا خیرتون بده خیلی عالی بود

    اگه ممکنه یه اسکریپت طراحی کنید (چون خنگم تو برنامه نویسی راهنماییمم کنید خیلی اثر نداره :D) که خبر خوان اختصاصی باشه.

    مثلا بیاد تمام خبرهایی که مربوط به تکنولوژی هستش از چند خبرگزاری دلخواه من جمع کنه و برام مرتب و آنلاین ارسال کنه(به محض بارگزاری خبر در سایت).

    اگه راهنمایی هم بفرمایید ممنون میشم

    پاسخ:
    درود بر شما .
    خواهش میکنم خوشحالم که مفید واقع شده . 
    در پست های بعدی بررسی میکنیم .
  • ممنون بابت مقاله عالی تون مشکل من رو تا حدودی حل کرد.
    این لینکی که میذارم هم به درد دوستان میخوره
    https://followeran.com/blog/how-to-set-proxy-on-telegram/

    پاسخ:
    درود . سلامت باشید :)
    ممنون .
  • سلام مهندس 

    شرمنده از چه vpn  برای اجرای کد های بالا استفاده می کنید

    چون من با سایفون هر کاری که میکنم نمی تونم به سرور وصل بشم

    پاسخ:
    سلام دوست عزیز .
    والا من تو مباحث تلگرام به سایفون اعتماد ندارم . چون تاحالا تو زمینه تلگرام خیلی به مشکل خوردم باهاش.
    من از تور استفاده میکنم . 
  • سلام و ممنون بابت این پست دمتون گرم

    ولی لطفا سورس های بیشتری قرار بدین

    فان هم توش باشه ممنون

    در ضمن لطف اگه زحمتی نیست سورسی که ساعت و زمان دقیق رو تو پی وی نشون میده رو بنویسید و قرار بدین 

    ممنون

    پاسخ:
    سلام و درود دوست عزیز .
    اگه از فان منظورتون اسکریپت هاییه که کاربرد خاصی ندارن ولی خب کارای باحالی میکنن ،  از این به بعد یه دسته بندی اضافه میکنیم اسکریپت های فان میزاریم . :)))
    ببینید سورس هایی که ما میزاریم ، سورس های امنیتی و هکینگ هستن ولی اگه میخواین همون ربات تلگرامی که ساختیم زمان رو هم براتون داخل پی وی بفرسته کافیه با استفاده از کتابخونه ی datetime ، زمان رو بدست بیارید و اونو با استفاده از تابع send_message ارسال کنید به کاربر .


  • سلام سایتتون عالیه امیدوارم نبندنش :(

    مهندس پایتونت ورژن 2 ؟ اخه من کداتو که میزنم سینتکس رو میبره روی ورژن پایتون و میگه ورژن 3 سینتکس ارور هست ممنون

    پاسخ:
    سلام دوست عزیز . ممنونم !
    خیر با پایتون ۳ نوشته شده . لطفا ارورتون رو بفرستید تا چک کنم :))
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی