ساخت ربات تلگرام با زبان PYTHON و کتابخانه Pyrogram

ساخت ربات تلگرام با زبان PYTHON

 

سلام خدمت همراهان همیشگی رکس دیزاین

 

قراره یه اموزش پروژه محور از ساخت ربات تلگرام با زبان PYTHON و کتابخانه Pyrogram رو با هم داشته باشیم

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

 

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

 

در آخر قصد داریم یک ربات بنویسیم که این قابلیت ها رو داشته باشه :

  • نمایش، حذف و اضافه کردن جواب به ربات.
  • دستور چک کردن وضعیت آنلاینی ربات با ادیت مسیج و فوروارد
  • حذف پیام ها در گروه
  • تغییر اطلاعات اکانت
  • تغییر اطلاعات گروه
  • جوین اجباری

و در کل نحوه استفاده کردن از هندلر ها، raw متود ها ، step گذاری ، متود های عادی و هندل کردن ارور های احتمالی رو در این دوره آموزش میدیم.

لینک داکیومنت در زیر قرار گرفته:


First Step

اولین کاری که برای ساخت ربات باید انجام بدیم این هستش که api-id و api-hash رو برای اکانت خودمون بگیریم(میتونید از یک api-id و api-hash برای هرچند تا اکانت که نیاز دارید استفاده کنید)

اول وارد سایت telegram میشید بعد در مرحله اول شماره تلفن تون رو وارد میکنید next رو میزنید و کدی برای شما ارسال میشه که اون رو هم وارد میکنید و sing in رو میزنید وارد مرحله بعد میشید اینجا یه فرم میاره که باید کاملش کنید

بعد از پر کردن فرم و تایید کردنش در اخر به شما یه api_id و یه api_hash میده.

خب چرا ما از api-id و api-hash استفاده بکنیم!! اصلا برای چی هستن؟؟

خب باید بگم ما داریم با لایبرری پایروگرام کار میکنیم که با استفاده از پروتکل Mtproto به تلگرام وصل میشه و در این پروتکل ما باید از api-id و api-hash استفاده کنیم و بدونه این نمیتونیم وصل بشیم به سرورای تلگرام.

به صورت کلی برای تایید هویت application خودمون باید از api-id و api-hash استفاده کنیم

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

pip install pyrogram

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

pip install tgcrypto

اگه در ویندوز هستید ممکن مشکلاتی برای شما پیش بیاد چون این tgcrypto یه سری دیپندنسی داره که باید از قبل نصب شده باشه مثلا رو ویندوز باید

Visual C++ 2015 Build Tools

نصب باشه و رو لینوکس یه کامپایلر برای c مثل gcc و همچنین python-dev باید نصب باشه که در لینوکس به صورت پیش فرض اوکیه ، اگر هم نبود!! خب با پیکج منیجرتون نصبش کنید 🙂

خب دیگه پیش نیاز ها رو نصب کردیم و الان وقت کد زدن هستش… ( یه فیلتر شکن یا پروکسی socks5 هم نیاز دارید به دلیل فیلترنیگ تلگرام)

نکته: اگر نتونستید وصل بشید و ارور
Unable to connect due to network issues: timed out
رو دریافت کردید این مربوط به فیلتر شکن(یا نتورک شما ) شما هستش که نتونسته کانکت بشه به تلگرام، بعضی فیلتر شکن ها ممکنه کار نکنن، علیرغم اینکه شما میتونید به تلگرام رو سیستم تون وصل بشید و اوکی هستش شاید اینجا این ارور بالا رو بگیرید ونتونید وصل بشید پس اگر همچین اروری گرفتید میتونید فیلتر شکن دیگه ای رو تست کنید.


Step 1:

ساخت ربات تلگرام با زبان PYTHON و کتابخانه Pyrogram

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

الان یه اینستنس از کلاس Client ساختیم به اسم Rex و خب الان ما به جای …. باید چی بزاریم؟؟

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

* session_name(str)

خب اولین مورد که مهم هستش اسم سشن تون هست. سشن چیه؟ خب وقتی شما به تلگرام وصل میشید یه فایل سشن در سیستم شما ایجاد میشه که دفعات بعدی خواستید کانکت شید به تلگرامتون دیگه از شما رمز و پسورد نخواد و با این سشن فایلی که ساخته درون سیستم تون به تلگرام وصل میشه.

* api_id(int) , api_hash(str)

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

* proxy(dict) –> dict(hostname=”127.0.0.0.1″, port=9050, username=”user”, password=”pass”)

خب پایروگرام بهتون اجازه میده که از پروکسی socks5 به شکل بالا استفاده کنید.( tor برای این مورد خیلی خوبه:)) ) اگر پروکسیی که دارید username و پسورد نداره مثل tor اون قسمت رو ننویسید همون hostaname و port رو مشخص کنید کافیه.

* bot_token(str)

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

force_sms(bool)

درمواردی که میخواید حتما تلگرام به شما code رو sms کنه با این اپشن میگید حتما sms کنه براتون.

config_file(str)

و اخرین اپشن که واقعا اپشن زیبایی هستش config-file هستش، شما به وسیله این اپشن قادر خواهید بود که بعضی از همین مورادی که بالا اشاره کردیم رو به جای اینکه داخل کدتون بنویسید

داخل یه فایل جدا به اسم config.ini قرار بدید اینجوری هم امنیت کد شما بیشتره چون داده های حساس تون از جمله api_id و api_hash رو دیگه لازم نیست داخل کدتون بزارید و همچنین خیلی تمیز تر میشه کد شما .

فقط کافیه کنار فایل اصلی پروژه یک فایل به نام config.ini باز کنید و اون مواردی که توضیح دادم رو میتونید داخل این فایل بنویسید.

یه نمونش به شکل زیر هستش

 

ساخت ربات تلگرام با زبان PYTHON و کتابخانه Pyrogram

البته میتونید موارد دیگه ای رو هم اینجا ست کنید از جمله پلاگین هاتون/توکن و …

Step 2 :

ساخت ربات تلگرام با زبان PYTHON و کتابخانه Pyrogram

خب کد بالا دقیقا چیکار میکنه؟ خب درا ینجا ما تو step1 راجع به چند خط اول توضیح دادیم

چیزی که اضافه شده الان این هستش که ما متود filters رو هم اضافه کردیم هر زمانی که نیاز داشته باشید روی update هایی که میاد فیلتری رو اعمال کنید از این متود استفاده میکنیم یه فلش ‌بک بزنیم به update که ببینیم چی هستش اصلا!

خب همه اتفاق هایی که داخل اکانت رخ میده اپدیت هستش مثلا وقتی که شما وارد تلگرام میشید یه سری پیام ممکن برای شما بیاد حالا از گروه ها یا pv و کانال ها… همه این پیام ها اپدیت هستن یا یه فرد پیامی رو تو گروه pin میکنه یا جوین میده و…

حالا میتونه تکست باشه یا فیلم باشه عکس ،گیف،اهنگ،وویس و…… همه این ها رو ما میتونیم داخل اپدیت دریافت کنیم خب الان فک کنم واضح تر شده باشه که update دقیقا چی هستش .

خب ما میتونیم از filters استفاده کنیم تا برای یک سری اپدیت خاص یه عملی رو انجام بده مثلا ما الان تنظیم کردیم که فقط داخل پیوی جواب بده.

در مثالی که بالاتر زدیم اومدیم یه دیکوریتور تعریف کردیم برای هندل کردن اپدیت هایی که میاد و با on_message نوع هندلر مون رو مشخص کردیم on پایه ثابت هستش و روی یه چیزی قرار میگیره در اینجا روی message ها هستش و بعد با استفاده از filter اومدیم گفتیم فقط داخل پیوی جواب بده و اگر کاربری الان سلام رو بفرسته به ربات در جواب ربات پیامی که درون if تعریف کردیم رو میفرسته اگه چیز دیگه ای رو هم بفرسته ربات کاری انجام نمیده. خود تابع Main هم 2 پارامتر client و message رو دریافت میکنه اولیش کلاینت و دومی هم اپدیت.


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

bot.run()

اینجا ما اون ابجکت rex که ساختیم رو run میکنیم و بعد از اینکه فایل پایتون مون رو اجرا بکنیم سعی میکنه با توجه به پارامتر هایی که براش ست کردیم، به سرور تلگرام وصل بشه .

خب بیایم کد بالا رو اجرا کنیم بیبنم چه اتفاقی میفته

ساخت ربات تلگرام با زبان PYTHON و کتابخانه Pyrogram

خب همونطور که میبینید پیام اول که به ربات دادم سلام بود که بهم جواب داد ولی به پیام دوم من جوابی نمیده چون براش تعریف نشده.

حالا شما میتونید با توجه به آموزش جواب های بیشتری به ربات اضافه کنید.

در قسمت بعدی آموزش بهتون ادیت مسیج رو یاد میدیم که ربات بصورت انیمیشنی جواب شما رو بده.

 

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

 

اگر نظری انتقادی پیشنهادی چیزی داشتید میتونید کامنت بزارید✍️

دیدگاه شما

نشانی ایمیل شما منتشر نخواهد شد.