برنامه نویسی | آموزش ساخت ربات کلاینت یا cli به زبان پایتون با کتابخانه telethon
آموزش ساخت ربات کلاینت یا cli به زبان پایتون با کتابخانه  telethon
  • Hamidreza
  • ۱۳۹۸-۰۶-۰۳
  • ۶۶۱

آموزش ساخت ربات کلاینت یا cli به زبان پایتون با کتابخانه telethon


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

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

برای نصب کتابخانه ی telethon در پایتون 3 میتونید از کد زیر توی ترمینال یا cmdتون استفاده کنید.

pip install telethon
or 
pip3 install telethon

توی قدم بعدی باید کلاینت یا اکانت کاربری تلگرام خودمون رو به رباتمون یا سرور های تلگرام بشناسونیم

برای شروع وارد لینک زیر بشید.

https://my.telegram.org/auth

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

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

توی قسمت بعدی روی گزینه ی API development tools کلیک کنید

قسمت های مربوطه رو هر طور که میدونید پر کنید زیاد مهم نیست فقط دستگاه استفاده کنند یا device روی web قرار بدید.

در مرحله ی بعد به شما یک 

App api_id
&
App api_hash 

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

توی این مرحله با استفاده از گزینه هایی که توی قسمت قبل به دست اوردیم میخوایم رباتمون رو بسازیم. خب ابتداری لازم شما نیاز دارید که از کتابخانه ی telethon بخش مربوط به ارتباطات رو import یا به پروژتون اضافه کنید. در ابتدا میتونید کد زیر رو استفاده کنید.

from telethon import TelegramClient

توی قسمت بعدی 

api_id =  000000
api_hash = 'd54s0asd54asd0as1da57s454'

گزینه هایی که در قسمت قبل کپی کردید رو توی این قسمت جای گذاری کنید.

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

client = TelegramClient('seasson_name' <= نام وضعیت ربات,  api_id = api_id, api_hash = api_hash)

شما توی این قسمت api_hash , api_id رو به رباتتون معرفی کردید.

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

client.updates.workers = 1 <= اینجا ما تعداد کارگر یا میزان فعالیت رو روی یک گذاشتیم
client.start()

کد ربات ما به صورت کُلی به این شکل در میاد 

from telethon import TelegramClient

api_id =  000000
api_hash = 'd54s0asd54asd0as1da57s454'
 

client = TelegramClient('seasson_name',  api_id = api_id, api_hash = api_hash)
client.updates.workers = 11
client.start()

خب برای این که ما بتونیم پیام هایی رو که به رباتمون فرستاده میشه که اونها اعم از (پیام های پی وی، کانال ها، گروه ها و سوپر گروه ها) میشند رو هندلر کنیم


مطالب مرتبط


برای این کار ما از این روش استفاده میکنیم

@client.on(events.NewMessage(pattern='سلام'))  
def handler(event): 
    event.reply(event.message.message, reply_to = event.message.id)

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


منظور از 

event.message.message

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

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

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

خب برای ارسال پیام و نه به صورت ریپلی میتونید از مِتُد send_message استفاده کنید فقط با این تفاوت که از شما آیدی اون فرد رو میخواد و نه آیدی اون پیام رو .

client.send_message('me', 'در این قسمت در داخل یک استرینگ میتونید پیامتون رو بنویسید')

و به جای me میتونید آیدی اون فرد رو داخل string بنویسید.

یک نکته ای یادم رفت بگم اونم اینه که برای متصل شدن به رباتتون بعد از این که شما رباتتون رو اجرا کردید ازتون شماره و کد و در صورت نیاز رمز اکانتتون رو میخواد و برای دفعات بعد شما نیازی به انجام این مراحل ندارید چرا که شما توی مراحل اول یه فایل season ای به رباتتون معرفی کردید  (با نام seasson_name) تا تمام ورودی ها و خروجی ها رو توی اون ذخیره و تا اون فایل باشه و ربات به اون متصل باشه (اسمش تغییر نکرده باشه) رباتتون متصل میمونه و دیگه از شما کدی نمیخواد.

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

شما میتونید در انتهای کدتون یک یا چند ورودی به شکل زیر بگیرید

input('ONLINE')
input('ONLINE')
input('ONLINE')

یا برای این که راحت وارد و خارج بشید میتونید از کد زیر استفاده کنید تا راحت تر با ربات کار کنید.

print('PRESS Q FOR EXIT')
while True:
    status = input('ONLINE    \n > ').lower() 
    if status == 'q':
        print('exited')
        break
    else: 
        continue

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

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

اگه سوالی یا مشکلی در این رابطه داشتید خوشحال میشم در بخش نظرات برامون شرح بدید.

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

ورود به کانال پای سافت

Hamidreza

برنامه نویس پایتون، طراح سایت و مدل ساز ربات های تلگرامی

نظرات (2)

Mohammad۲۰۲۰-۰۳-۰۷Reply

سلام ببخشید من اگه بخام چنتا اکانت اد کنم و ی کاری کنم ک وقتی اسکریپتو ران میکنم همشون اجرا بشن و ب دستورات پاسخ بدن باید چیکار کنم

مدیریت پای سافت۲۰۲۰-۰۳-۱۰Reply

سلام، از "threading" باید استفاده کنید.

نظر شما در مورد این پست چیه؟!