چگونه با پایتون یک ربات تلگرام بسازیم؟ - گام به گام و تصویری
تلگرام پیام رسانی است که تقریباً همه ما ایرانیها دست کم اسم آن را شنیدهایم یا از آن استفاده میکنیم. تلگرام با داشتن قابلیتهای فوقالعادهاش به سرعت توانست در دل بسیاری از کاربران جا باز کند.
در سال ۲۰۲۱ که هنوز در آن قرار داریم تلگرام وارد باشگاه اپلیکیشنهایی با بیش از یک میلیارد دانلود شد.
حتی با وجود اینکه دسترسی به تلگرام در ایران با محدودیت روبرو شده و باید برای دسترسی به آن از ابزارهای تغییر آیپی استفاده کرد، اما همچنان افراد بسیاری برای پیام رسانی به شیوههای مختلف از تلگرام استفاده میکنند. در تلگرام میتوانید فایلهایی که تا دو گیگابایت حجم دارند را بارگذاری کنید!
تلگرام مجموعهای از امکانات کاربردی را در کنار هم قرار داده و مدتهاست که دیگر یک ابزار پیام رسانی ساده محسوب نمیشود.
بسیاری از کسبوکارها علاوه بر استفاده از وبسایتها، سرمایهگذاری عظیمی بر روی تبلیغات و تولید محتوا در کانالهای تلگرامی انجام دادهاند. چرا که تلگرام تبدیل به منبع شماره یک کسب خبر و اطلاعات برای بسیاری از افراد شده است.
تقریباً برای هر موضوعی میتوانید یک کانال مناسب را در تلگرام پیدا کنید. برای آشنایی با بهترین کانالهای مفید برای مهندسین کامپیوتر و برنامه نویسان، مقاله زیر را مطالعه کنید.
شما میتوانید در این پیام رسان محبوب گروههایی که میتوانند پذیرای دویست هزار عضو باشند را ایجاد کنید.
سرعت تلگرام در همگامسازی چتها نیز بین دستگاههای مختلف نظیر گوشیها و لپتاپها باورکردنی نیست. نکته مثبت دیگر تلگرام این است تمامی امکانات ارائه شده در آن رایگان هستند و هیچ تبلیغی از سوی تلگرام به کاربر نشان داده نمیشود.
امنیت تلگرام بسیار بالاست. پیامهای رد و بدل شده میان سرورهای تلگرام و اپلیکیشنها رمزنگاری میشوند. از طرفی در تلگرام قابلیت Secret Chats وجود دارد که در آن رمزنگاری بین پیامهای دو کاربر انجام میشود.
تلگرام هر آن چه را برای حفظ حریم خصوصی کاربران نیاز است در نظر گرفته و گزینههای زیادی را به این مورد اختصاص داده است.
امکانات تلگرام در مقایسه با پیام رسانهای رقیب به شدت از نظر کمی و کیفی بالاتر است و کاربران نیز در فضای مجازی با این موضوع زیاد شوخی میکنند!
تلگرام یک نرمافزار متن باز بوده و با استفاده از پایگاه داده کتابخانههای تلگرام (TDLib) میتوان به دستکاری و شخصیسازی امکانات ارائه شده در آن پرداخت. حتی با استفاده از این بستر میتوانید پیام رسان مخصوص خود را بسازید و در مارکتهای دانلود اپلیکیشن منتشر کنید.
تا اینجا به بسیاری از مزایای تلگرام اشاره کردیم، اما از یک قابلیت بسیار بسیار کاربردی صحبتی به میان نیامد و آن هم رباتها یا باتها (Bot) هستند.
اگر تاکنون از ربات تلگرام استفاده نکردهاید در این مطلب قصد معرفی آنها را داریم. اگر هم با رباتهای تلگرام آشنا باشید ممکن است به فکر ساخت ربات توسط خودتان افتاده باشید.
با خواندن ادامه این مطلب هر آن چه در مورد ربات تلگرام و نحوه ساختن آن لازم است بدانید را در اختیار شما قرار خواهیم داد. علاوه بر این توضیحاتی درمورد آموزش ساخت ربات تلگرام با پایتون مطرح خواهد شد.
همچنین در مجله فرادرس میتوانید اطلاعات خوبی درباره ترفندهای استفاده از تلگرام و نحوه استفاده از رباتها پیدا کنید.
برای مطالعه ۱۲ ترفند کاربردی تلگرام که همه باید بدانند — کلیک کنید
ربات تلگرام چیست؟
قبل از پرداختن به آموزش ساخت ربات تلگرام با پایتون ابتدا بهتر است با ربات تلگرام آشنا شوید.
رباتها برنامههایی هستند که درون تلگرام اجرا میشوند. این رباتها میتوانند توسط سازندگان تلگرام یا هر توسعه دهنده دیگری ساخته شده باشند.
رباتها به صورت یک چت در میان سایر چتهای تلگرام نمایش داده میشوند. با ورود به این چت، صفحهای را مشاهده میکنید که ممکن است ربات در آن معرفی شده باشد.
تعامل با رباتها با استفاده از گزینههای موجود در منوهای ربات صورت میگیرد. رباتها طوری برنامه نویسی شدهاند که با زدن هر گزینه، یک وظیفه از پیش تعیین شده به صورت خودکار انجام شود.
ممکن است در بعضی از رباتها مجبور به وارد کردن اطلاعات یا به اشتراک گذاشتن فایلی باشید که تمام این کارها مانند تایپ یک پیام معمولی یا به اشتراکگذاری یک فایل با یک دوست است و هیچ تفاوتی ندارد.
اولین گزینهای که قابل مشاهده در ربات، گزینه Start (شروع) است. برای شروع کار با ربات باید این دکمه را بزنید. سپس منو اصلی ربات نمایش داده خواهد شد که شامل گزینههای مختلف است. این منو میتواند به شکل زیر باشد:
با کلیک یا لمس هر گزینه میتوان از سایر کارکردهای ربات بهرهمند شد.
با ربات تلگرام چه کارهایی میتوان انجام داد؟
رباتهای تلگرام کاربردهای مختلفی دارند. مثلاً ربات Andyrobot میتواند به شما زبان انگلیسی را آموزش دهد. رباتی مانند YTtanslaletBot میتواند نقش یک مترجم را برای شما بازی کند.
اگر میخواهید سالم بودن و آلوده نبودن یک لینک دانلود اطمینان حاصل کنید از ربات Dr. Web استفاده کنید.
رباتهایی هم هستند که اطلاعات فیلمهای سینمایی شامل نام کارگردان، بازیگران، سال تولید و غیره را نمایش میدهند، مانند ربات IMDB.
اگر قصد تبدیل و تغییر فرمتهای مختلف صوتی، تصویری و ویدیویی را دارید ربات File Converter Bot برای شما ساخته شده است.
یا برای مثال فرض کنید میخواهید از مخاطبان کانال یا گروه خود در مورد موضوعی نظرسنجی کنید. این نظرسنجی میتواند به وسیله رباتها انجام شود. مطالعه مقاله نظرسنجی با استفاده از ربات در تلگرام — ترفندهای پیامرسان تلگرام می تواند در این زمینه برای شما مفید باشد.
شرکتهای بسیاری تعدادی از خدمات خود را بر پایه چتباتهایی مانند رباتهای تلگرام ارائه میدهند.
در اینجا تنها بخشی از کاربردهای ربات را مشاهده خواهید کرد:
· ارسال اعلانهای شخصیسازی شده و اخبار: یک ربات میتواند به عنوان یک روزنامه هوشمند عمل کند.
· یکپارچه شدن با سایر سرویسها: یک ربات میتواند محتوای سایر سرویسها نظیر جیمیل و یوتوب را به چتهای شما بیاورد
· ساخت ابزارهای موردنیاز: یک بات میتواند به عنوان ابزار اعلام وضعیت هوا، ترجمه از یک زبان به زبان دیگر، تبدیل فرمتهای صوتی و تصویری به یکدیگر و غیره عمل کند
· ساخت بازیهای تک نفره و مولتی پلیر: با استفاده از اچتیامال۵ میتوان رباتهایی برای بازیهای دو بعدی ساده، بازیهای سه بعدی تیراندازی، بازیهای معمایی و غیره را ساخت.
· ساخت یک شبکه اجتماعی: از رباتها میتوان برای متصل شدن و صحبت با افرادی که با آنها علایق مشترکی دارید استفاده کرد
دیدن عملکر رباتهای مختلف به شما پیش زمینه ذهنی خوبی برای شروع آموزش ساخت ربات تلگرام با پایتون میدهد.
ربات تلگرام چگونه کار میکند؟
باتها در واقع حسابهای کاربری تلگرام هستند، با این تفاوت که به شماره تلفن برای ورود به آنها نیازی نیست.. کاربران میتوانند از دو طریق از رباتها استفاده کنند:
· فرستادن فرمانهایی به ربات در صفحه چت آنها
· تایپ کردن نام کاربری (UserName) ربات با یک @ در ابتدایش و تایپ یک پرسوجو در ادامه
پیامهایی که به ربات ارسال میکنید به نرمافزاری که روی سرور شما در حال اجرا است فرستاده میشود. رد و بدل شدن پیامها بین کاربران و سروری که توسعه دهنده در نظر گرفته است توسط واسط برنامه نویسی اپلیکیشنی که تلگرام برای باتها در نظر گرفته است انجام میشود.
این رابط یا API وظیفه رمزنگاری پیام ها را بر عهده دارد. به این منظور مقاله API چیست؟ — به زبان ساده را مطالعه نمایید.
نحوه تعامل ربات تلگرام با کاربران
برای پیاده سازی منطق ربات و نحوه تعامل آن با کاربر در آموزش ساخت ربات تلگرام با پایتون بهتر است بدانید زمانی که کاربر، فرمانی را برای ربات ارسال میکند چه اتفاقی میافتد؟
تلگرام یک سرویس مبتنی بر ابر یا Cloud-Based است. زمانی که شما برای دوست خود در تلگرام یک پیام ارسال میکنید، سرور تلگرام پیام را دریافت کرده و آن را به فرمی که مناسب چت باشد دراورده و برای دوست شما ارسال میکند.
با دیدن تصویر متحرک زیر میتوانید بهتر عملکرد تلگرام در مدیریت پیامها را متوجه شوید:
در توضیح گیف بالا باید گفت که شما یک پیام را ارسال میکنید، سرورهای تلگرام آن را به صورت چت توزیع میکنند و حالا دوست شما قادر به دیدن آن پیام است. دوست شما پاسخ پیام شما را میدهد، پاسخ او نیز به سرورهای تلگرام فرستاده میشود و پس از پردازش در آن جا به چت شما و دوستتان فرستاده میشود.
نگاه دیگری به تصویر کامل نحوه تعامل دو کاربر در تلگرام بیندازید:
پیام رسانی مبتنی بر ابر به شما این امکان را میدهد که به چتهای خود از طریق دستگاههای مختلف دسترسی داشته باشید.
حال که در مورد نحوه پیام رسانی در تلگرام صحبت کردیم، میتوانیم به اتفاقی که بین یک ربات و کاربر میافتد بپردازیم.
زمانی که شما پیامی را برای یک ربات تلگرامی ارسال میکنید، تلگرام با استفاده از روش وب هوک (روشی برای ارتباط وب اپلیکیشنها با یکدیگر) اعلانی را مبنی بر وجود یک پیام جدید که قرار است توسط ربات شما پردازش شود، ارسال میکند.
سپس برنامهای که برای رسیدگی به پیامها و دستورات کاربر نوشتهاید، پیام ارسال شده توسط کاربر را پردازش کرده و پاسخ آن را به تلگرام خواهد فرستاد.
در نهایت، تلگرام این پاسخ را به کاربر میرساند. نگاهی به تصویر متحرک زیر برای فهم بهتر ماجرا بیندازید:
نسخه غیر متحرک گیف بالا را برای مشاهده روند کلی ارسال پیام بین کاربر و ربات مشاهده کنید:
حال که یک ذهنیت کلی از نحوه کار ربات پیدا کردید، میتوان وارد مباحث ساخت ربات و کدنویسی شد.
آموزش ساخت اولین ربات تلگرام با پایتون
در این قسمت قصد داریم آموزش نحوه ساخت یک ربات ساده تلگرام را شرح دهیم.
تلگرام رباتی به نام بات فادر (BotFather) را در نظر گرفته که اساساً برای ساخت ربات و ارائه راهنمایی در این خصوص در نظر گرفته شده است. مراحل کلی ساخت ربات با استفاده از بات فادر در ادامه شرح داده خواهد شد.
در مثالی که قصد شرح دادن آن را داریم نیازی به داشتن سرور نیست و تنها باید یک ربات تلگرام را ایجاده کرده و پایتون را نصب داشته باشید.
تعیین نام و نام کاربری برای بات تلگرام
دستور
/newbot را در بات فادر وارد کنید یا روی آن کلیک کنید:
باید برای ربات خود یک نام و یک نام کاربری در نظر بگیرید. نام کاربری باید یکتا باشد و در صورتی که نام کاربری انتخابی شما قبلاً توسط ربات دیگری استفاده شده باشد، بات فادر اجازه استفاده از این نام کاربری را به شما نخواهد داد. همچنین نام کاربری ربات شما حتما باید با bot تمام شود.
نام ربات نیز همان نامی است که ربات شما با آن شناخته شده و به کاربران این نام نمایش داده خواهد شد.
از نام کاربری نیز برای دسترسی به ربات توسط کاربران استفاده خواهد شد.
پس از تعیین نام و نام کاربری، تلگرام یک ربات برای شما خواهد ساخت. پس از ساخت ربات، پیغامی از بات فادر برای شما ارسال میشود که حاوی نشانی دسترسی به ربات یا اکسس توکن (Access Token) است. حتماً این توکن و نام کاربری ربات خود را در جایی ذخیره کنید چرا که بعداً به آنها نیاز پیدا خواهید کرد.
بات فادر امکانات دیگری را نیز به شما ارائه میدهد، از جمله:
· تغییر نام ربات
· اضافه کردن یک تصویر برای پروفایل ربات
· نوشتن یک توضیح که عملکرد ربات را شرح دهد
· حذف ربات
برای اطمینان از ساخته شدن ربات خود میتوانید در تلگرام آن را جستجو کنید. پس از ساخته شدن ربات توسط بات فادر باید وارد مرحله برنامه نویسی با پایتون شویم.
برنامه نویسی و تعیین منطق ربات
برای تکمیل این قسمت از آموزش ساخت ربات تلگرام با پایتون باید با برنامه نویسی آشنا باشید.
قبل از یادگیری یک زبان برنامه نویسی باید با مبانی برنامه نویسی و طراحی الگوریتم و روشهای حل مسئله آشنا شوید.
زبانهای مختلفی نظیر پایتون، جاوا، سی (C) و غیره وجود دارند که هر کدام از آنها از قابلیتها و مزیتهای خاص خود برخوردار است.
از بعضی از این زبانها میتوان برای ساخت ربات تلگرام استفاده کرد.
· پایتون (python)
· جاوا (Java)
· متلب (MATLAB)
· پیاچپی (PHP)
ساخت ربات تلگرام با متلب، بهترین راه برای افرادی است که هیچ آشنایی قبلی با زبانهای برنامه نویسی تحت وب ندارند. از طرفی اگر با برنامه نویسی وب آشنا بوده و به پیاچپی تسلط دارید، ساخت ربات تلگرام با پیاچپی برای شما بهتر است.
در این آموزش قصد استفاده از زبان بسیار محبوب پایتون را داریم. زبان پایتون زبانی بسیار قدرتمند بوده و در زمینههای مختلفی از آن استفاده میشود. حتی افرادی که به صورت حرفهای برنامه نویسی و توسعه را بلد نیستند میتوانند پایتون را یاد گرفته و برنامههای سادهای با آن بسازند.
پایتون قلب تپنده بسیاری از چارچوبهای نرم افزاری است که کار توسعه دهندگان مختلف را تسهیل میکنند. برنامه نویسی به روشهای ساختیافته و شئگرا با زبان پایتون ممکن است.
از پایتون درطراحی اپلیکیشنهای دسکتاپ، برنامه نویسی وب، نوشتن الگوریتمهای یادگیری ماشین و چندین و چند حوزه دیگر استفاده میشود.
از آنجایی که شروع کار با پایتون و یادگیری آن بسیار آسان است، این مطلب به آموزش ساخت ربات تلگرام با پایتون اختصاص داده شده است. این ربات قرار است ساعت کنونی را بر اساس مناطق زمانی مختلف بازگرداند.
اگر در نصب و برنامه نویسی با پایتون مهارت دارید، ادامه این قسمت را بخوانید، وگرنه بهتر است ابتدا با طریقه نصب پایتون و آموزش مقدماتی مفاهیم پایتون آشنا شوید.
در راستای مباحثی که در رابطه با برنامه نویسی ربات تلگرام مطرح شد، مطالعه آموزشهای زیر میتواند کمک خوبی برای شما باشد.
آموزش مبانی برنامه نویسی (الگوریتم و فلوچارت) با رویکرد حل مسأله
آموزش برنامه نویسی جاوا (Java)
آموزش برنامه نویسی متلب (MATLAB)
آموزش ساخت ربات تلگرام با متلب (MATLAB)
آموزش مقدماتی ساخت ربات تلگرام با PHP
آموزش آشنایی با مفاهیم اولیه شی گرایی در پایتون (رایگان)
آموزش یادگیری ماشین (Machine Learning) با پایتون (Python)
آموزش برنامه نویسی پایتون (Python) - مقدماتی
آموزش مقدماتی ساخت ربات تلگرام با پایتون (Python)
کد پایتون
ساخت ربات با پایتون این امکان را میدهد که به جای تمرکز بر سینتکس بر روی الگوریتم و توسعه ربات خود متمرکز شوید، یکی از دلایل انتخاب پایتون در این آموزش ساخت ربات تلگرام نیز آسان بودن سینتکس آن است.
IDEهای زیادی برای برنامه نویسی پایتون در دسترس هستند.
توصیه میشود برای برنامه نویسی به زبان پایتون از محیط توسعه یکپارچه (IDE) پایچارم (PyCharm) استفاده کنید. پروژهای در پایچارم تحت عنوان Telegram_Bot ایجاد کنید.
کتابخانه python-telegram-bot کتابخانهای است که یک رابط نوشته شده به پایتون برای API بات تلگرام فراهم کرده و با پایتونهای نسخه 3.6 به بالا سازگار است. برای نصب این کتابخانه ترمینال را باز کرده و دستور زیر را تایپ کنید:
$ pip install python-telegram-bot
یک فایل پایتون در پروژه telegram_bot ایجاد کرده و آن را Responses.py بنامید. در این فایل، پیامهایی که باید در ازای دستورات وارد شده توسط کاربر برای او فرستاده شوند، نوشته خواهد شد:
from datetime import datetime
import pytz
def sample_responses(user_input):
input_text = str(user_input).lower()
if input_text in ["/start", "hi", "hi!", "hello", "hey"]:
return "Hey! I'm Alpha. Do you want to know the time or today's date?"
if input_text in ["time", "time?"]:
return "Do you want to know the time in India, England or United States?"
if input_text == "india":
time_zone = pytz.timezone('Asia/Kolkata')
now = datetime.now(time_zone)
return "Time - " + now.strftime('%H : %M : %S')
if input_text == "england":
time_zone = pytz.timezone('Europe/London')
now = datetime.now(time_zone)
return "Time - " + now.strftime('%H : %M : %S')
if input_text in ["united states", "us"]:
time_zone = pytz.timezone('America/New_York')
now = datetime.now(time_zone)
return "Time - " + now.strftime('%H : %M : %S')
if input_text in ["date", "date?"]:
date = datetime.now()
return date.strftime('%d - %B - %Y')
if input_text in ["bye", "ttyl", "good bye"]:
return "It was nice chatting with you. Bye!"
return "Sorry,I didn't understand you"
همانطور که میبینید برای نوشتن کدهای بالا از ماژول datetime پایتون کمک گرفته شده است. با استفاده از این ماژول میتوان با دادههای مربوط به تاریخ و زمان کار کرد.
ماژول pytz نیز برای دریافت ساعت فعلی در مناطق زمانی مختلف استفاده میشود. ربات ما قرار است که قادر به ارائه ساعت کنونی در سه شهر کلکته (هند)، نیویورک (آمریکا) و لندن (انگلیس) باشد.
تابعی به نام sample_responses برای پردازش پیامهایی که کاربر به ربات میفرستد، در کد موجود است.
همانطور که در کد این تابع مشخص است، ربات قادر است در صورتی که کاربر به او سلام کرد یا از او خداحافظی کرد، پاسخ مناسبی برا او ارسال کند. البته کدهای نوشته شده بسیار ساده هستند و ربات عملکرد محدودی در این مورد دارد.
اگر پیام ارسال شده توسط کاربر شامل مواردی که ما در کد خود در نظر گرفتهایم نباشد، پیغامی مبنی بر عدم درک پیام کاربر توسط ربات، برای کاربر نمایش داده خواهد شد.
فایل پایتون دیگری به نام main.py ایجاد کنید. کدهای زیر را در این فایل تایپ کنید:
from telegram.ext import *
import Responses as R
def handle_messages(update,context):
text = str(update.message.text)
response = R.sample_responses(text)
update.message.reply_text(response)
updater = Updater('1798618640:AAEhpRkF9subG0pbMKoNu1ijT-Xj_eh10AM')
d = updater.dispatcher
d.add_handler(MessageHandler(Filters.text, handle_messages))
updater.start_polling()
updater.idle()
در کدهای بالا تابع handle_messages چیزی که کاربر در چت خود با ربات نوشته را گرفته و آن را به یک رشته (String) تبدیل میکند. در واقع این تابع یک مدیریت کننده پیامها و دستورات کاربر است و به آن handler میگویند.
هر بار که کاربر پیامی را به ربات میفرستد، وب هوک یک update را از تلگرام به handler ارسال میکند. این update میتواند شامل پیام متنی، پیام صوتی، ویدیو یا یک سند باشد. در مثال ما، handler تنها متن را پردازش میکند. هدف از مطرح کردن این موارد این بود که به شما بگوییم میتوان رباتهایی ساخت که قادر به پردازش سایر انواع پیام نیز باشند.
در ادامه، پیامی که به رشته تبدیل شده به عنوان ورودی به تابع sample_responses فرستاده میشود. این تابع را در فایل Responses.py تعریف کرده بودیم. تابع Sample_resposes رشته را گرفته و پردازش لازم را بر روی آن انجام داده و خروجی مناسب را تولید خواهد کرد.
خروجی تولید شده توسط Sample_responses به عنوان چیزی که باید در پاسخ به کاربر نمایش داده شود، برای کاربر فرستاده خواهد شد. ارسال این پیام بر عهده همان handler است.
میتوانید به مستندات کتابخانه telegram.ext به منظور درک بیشتر متودهای این کتابخانه در راستای آموزش ساخت ربات تلگرام با پایتون رجوع کنید.
در اپلیکیشن تلگرام، بات خود را استارت کرده و گفتوگو با آن را آغاز کنید. یک نمونه از تعامل با بات را میتوانید در شکل زیر مشاهده کنید:
تبریک! شما آموزش ساخت ربات تلگرام با پایتون را به اتمام رساندید!
ساختن رباتهای دیگر را آغاز کنید!
امید است با آموزشی که برای ساخت ربات تلگرام با پایتون ارائه شد توانسته باشید اولین ربات خود را بسازید.
پایتون زبان خوبی برای ساخت ربات است، اما اگر بخواهید میتوانید سایر زبانها مانند جاوا را یاد گرفته و به ساخت ربات به وسیله جاوا بپردازید. برای یادگیری ساخت ربات توسط جاوا، به لینک زیر مراجعه نمایید.
اگر با زبانهای برنامه نویسی و به خصوص زبانهای لازم برای نوشتن ربات آشنا نیستید، بهتر است به فرادرس مراجعه کنید. با دیدن دورهی آموزش ساخت ربات تلگرام در پایتون میتوانید رباتهای کاربردی ساخته و به جذب کاربران تلگرام و کسب درآمد بپردازید.
میتوانید برخی از امکانات ربات خود را در ازای دریافت پول و تهیه اشتراک در اختیار کاربران قرار دهید.
منابع
https://www.codespeedy.com/building-a-telegram-bot-using-python/
https://medium.com/swlh/build-a-telegram-bot-in-go-in-9-minutes-e06ad38acef1
مطلبی دیگر از این انتشارات
آموزش Rust-قسمت اول (Rust چیست؟)
مطلبی دیگر از این انتشارات
آموزش جاوا اسکریپت رایگان -- صفر تا صد JavaScript
مطلبی دیگر از این انتشارات
توسعه نرمافزار با روش TDD یا Test Driven Development