در این مقاله از سری مقالات آموزشی پی استور، ساخت ربات تلگرام با پایتون آموزش داده میشود. با معرفی مفاهیم پایه، دریافت توکن ربات، ارسال و دریافت پیام، و پردازش دستورات، شما با اصول اولیه توسعه یک ربات آشنا خواهید شد. در پایان، میتوانید خلاقیت خود را به کار بگیرید و رباتی بسازید که متناسب با نیازهای شما باشد.
مقدمه
در دنیای امروز، رباتهای تلگرام به ابزاری قدرتمند برای خودکارسازی وظایف، تعامل با کاربران و ارائه خدمات متنوع تبدیل شدهاند. چه یک مبتدی در برنامهنویسی پایتون باشید که به دنبال پروژهای برای شروع هستید، و چه یک توسعهدهنده باتجربه که قصد دارد مهارتهای خود را گسترش دهد، ساخت یک ربات تلگرام میتواند تجربهای جذاب و کاربردی باشد.
اگر آمادهاید که اولین ربات تلگرام خود را ایجاد کنید، بیایید این مسیر هیجانانگیز را آغاز کنیم!
پیشنیاز ساخت ربات تلگرام با پایتون
پیش از ورود به محتوای هیجانانگیز این مقاله، لازم است با موارد زیر آشنایی داشته باشید:
- آشنایی با پایتون
- آشنایی با pip
- آشنایی با تلگرام
دانش ابتدایی از پایتون کافی خواهد بود، و در این مقاله به توضیح موارد بالا نمیپردازیم، زیرا تمرکز ما روی این موضوع نیست. منابع زیادی برای یادگیری پایتون و pip وجود دارند، و تلگرام نیز یک پلتفرم پیامرسانی است که نیاز به توضیح زیادی ندارد. همچنین میتوانید برای اینکه پایتون را یاد بگیرید. مجموعه مقالات آموزشی ما در مورد پایتون را مطالعه کنید. کلیک کنید[+]
مراحل ساخت ربات تلگرام با پایتون
از آنجایی که ما با یک ربات ساده تلگرام کار میکنیم، فرآیند ساخت ربات تلگرام با پایتون نسبتاً ساده است. ابتدا یک پوشه ایجاد کنید و وارد آن شوید تا پروژه خود را در آن قرار دهیم (مثلاً my_telegram_bot).
همچنین از کتابخانه python-telegram-bot که یک رابط برای API تلگرام است، استفاده خواهیم کرد. این کتابخانه را با دستور زیر نصب کنید:
pip install python-telegram-bot --upgrade
سپس یک فایل با نام main.py ایجاد کرده و قطعه کد زیر را درون آن جایگذاری کنید.
from telegram.ext import Application def main(): """ Handles the initial launch of the program (entry point). """ token = "" application = Application.builder().token(token).concurrent_updates(True).read_timeout(30).write_timeout(30).build() print("Telegram Bot started!", flush=True) application.run_polling() if __name__ == '__main__': main()
ابتدا یک تابع main تعریف میکنیم که به عنوان نقطه ورود برنامه عمل میکند. در داخل این تابع، یک متغیر به نام token مقداردهی اولیه شده و یک رشته خالی به آن اختصاص داده میشود (نگران نباشید، بهزودی به این موضوع بازخواهیم گشت). سپس، کلاس Application را مقداردهی اولیه کرده و پیکربندیهای لازم را از طریق الگوی builder pattern اعمال میکنیم. در نهایت، پیغامی چاپ میشود تا به ما اطلاع دهد که نمونه (instance) ما راهاندازی شده است، و سپس متد run_polling را برای گوش دادن به بهروزرسانیها فراخوانی میکنیم.
اگر این فایل را ذخیره کرده و آن را با دستور python main.py اجرا کنید، با خطای invalid token مواجه خواهید شد. این مسئله جای تعجب ندارد، زیرا هنوز توکن خود را تنظیم نکردهایم، که ما را به بخش بعدی یعنی دریافت توکن ربات هدایت میکند.
دریافت توکن ربات از BotFather
برای اینکه برنامه ما به درستی اجرا شود، به توکن ربات نیاز داریم که هویت منحصربهفرد ربات تلگرام ما را مشخص میکند.
تلگرام یک ربات رسمی به نام BotFather دارد که برای ایجاد و مدیریت رباتهای تلگرام استفاده میشود. برای دریافت توکن مراحل زیر را دنبال کنید:
- به BotFather در تلگرام مراجعه کنید (میتوانید با جستجوی @BotFather آن را پیدا کنید).
- دستور /newbot را ارسال کنید.
- از شما خواسته میشود که یک نام برای ربات خود انتخاب کنید. سپس باید یک نام کاربری (username) انتخاب کنید که به _bot ختم شود (مثلاً MyAwesomeBot).
- پس از تکمیل این مراحل، BotFather یک توکن برای شما ارسال میکند.
- این توکن را در جای امنی نگه دارید و آن را با دیگران به اشتراک نگذارید.
پس از دریافت توکن ربات، به فایل main.py برگردید و مقدار توکن را جایگزین رشته خالی کنید. حالا دوباره فایل را اجرا کنید. این بار، مشاهده خواهید کرد که پیام Telegram Bot started! در کنسول چاپ میشود.
اکنون ربات ما در حال اجراست. به ربات تلگرام خود پیام ارسال کنید. آیا پاسخی دریافت میکنید؟ به نظر میرسد چیزی کم است—ما هنوز مشخص نکردهایم که ربات به چه چیزی پاسخ دهد.
قابلیت پاسخگویی به پیام های متنی در ساخت ربات تلگرام
برای اینکه ربات بتواند به اقدامات کاربران پاسخ دهد، باید برای آن Handler تعریف کنیم. از آنجایی که میخواهیم ربات به پیامهای متنی ما پاسخ دهد، با یک MessageHandler ساده شروع میکنیم. درون فایل main.py یک تابع کوتاه مطابق نمونه زیر تعریف کنید:
def reply(update, context): update.message.reply_text("Hello there!")
سپس، MessageHandler را اضافه میکنیم و آن را طوری تنظیم میکنیم که فقط پیامهای متنی را با استفاده از filters.TEXT فیلتر کند. فایل main.py جدید شما اکنون باید به شکل زیر باشد (فراموش نکنید که وارد کردن کتابخانهها (imports) را در بالای فایل بهروزرسانی کنید):
from telegram.ext import Application, MessageHandler, filters async def reply(update, context): await update.message.reply_text("Hello there!") def main(): """ Handles the initial launch of the program (entry point). """ token = YOUR_BOT_TOKEN_HERE application = Application.builder().token(token).concurrent_updates(True).read_timeout(30).write_timeout(30).build() application.add_handler(MessageHandler(filters.TEXT, reply)) # new text handler here print("Telegram Bot started!", flush=True) application.run_polling() if __name__ == '__main__': main()
اجرای مجدد ربات
ربات خود را دوباره اجرا کنید و دوباره یک پیام “hello” ارسال کنید. این بار، ربات باید با پیام !Hello there پاسخ دهد. اما اگر بخواهیم ربات ما دستورات (commands) را اجرا کند، چه کار کنیم؟
قابلیت پردازش دستورات در ساخت ربات تلگرام
شما توانستید ربات را وادار کنید که اولین پیام خود را ارسال کند. حالا بیایید کاری کنیم که هنگام ارسال دستور hello/ به ما خوشامد بگوید. مشابه افزودن پیامها، این بار نیز یک خط جدید اضافه میکنیم، اما به جای MessageHandler، از CommandHandler استفاده خواهیم کرد (باز هم فراموش نکنید که وارد کردن کتابخانهها (imports) را بهروزرسانی کنید):
from telegram.ext import Application, CommandHandler, MessageHandler, filters async def reply(update, context): await update.message.reply_text("Hello there!") def main(): """ Handles the initial launch of the program (entry point). """ token = YOUR_BOT_TOKEN_HERE application = Application.builder().token(token).concurrent_updates(True).read_timeout(30).write_timeout(30).build() application.add_handler(MessageHandler(filters.TEXT, reply)) application.add_handler(CommandHandler("hello", reply)) # new command handler here print("Telegram Bot started!", flush=True) application.run_polling() if __name__ == '__main__': main()
اجرای دستور hello/ در ربات تلگرام
اکنون دستور hello/ را به ربات خود ارسال کنید. اگر مراحل این راهنما را بهدرستی دنبال کرده باشید، ربات باید دوباره با پیام “!Hello there” پاسخ دهد.
اولین بارگذاری (Upload)
آیا روند کار را یاد گرفتهاید؟ حالا بیایید یک گزینه کمی پیشرفتهتر را امتحان کنیم—ارسال یک تصویر به ربات.
این بار دوباره از MessageHandler استفاده خواهیم کرد، اما برخلاف مثال قبلی که از TEXT filter استفاده کردیم، این بار از PHOTO filter استفاده میکنیم. دستور جدید را مطابق نمونه زیر اضافه کنید:
from telegram.ext import Application, CommandHandler, MessageHandler, filters async def reply(update, context): await update.message.reply_text("Hello there!") def main(): """ Handles the initial launch of the program (entry point). """ token = YOUR_BOT_TOKEN_HERE application = Application.builder().token(token).concurrent_updates(True).read_timeout(30).write_timeout(30).build() application.add_handler(MessageHandler(filters.TEXT, reply)) application.add_handler(CommandHandler("hello", reply)) application.add_handler(MessageHandler(filters.PHOTO, reply)) # new photo handler here print("Telegram Bot started!", flush=True) application.run_polling() if __name__ == '__main__': main()
اکنون، اگر یک عکس برای ربات خود ارسال کنید، او بار دیگر با پیام “Hello there!” به شما خوشامد خواهد گفت—البته این پاسخ برای آپلود عکس چندان منطقی نیست، اما ایده اصلی را متوجه شدید.
خلاقیت خود را آزاد کنید!
ما فقط چند مثال ساده را بررسی کردیم، اما امیدوارم متوجه شده باشید که ساخت ربات تلگرام با پایتون کار چندان دشواری نیست! از اینجا به بعد، میتوانید به مستندات کتابخانه python-telegram-bot مراجعه کنید تا قابلیتهای بیشتری را برای ربات خود کشف کنید.
اگر علاقهمند به گسترش قابلیتهای ربات خود هستید، میتوانید آن را به یک پروژه کاملتر تبدیل کنید. برای ایده گرفتن، من چند ربات تلگرام متنباز مانند TeleQR، Simple Media Converter و Simple Transcriptions را منتشر کردهام که ممکن است برای شما الهامبخش باشند.
بهعنوان یک چالش پیشرفتهتر، پس از تکمیل پروژه خود، میتوانید ربات تلگرام خود را در یک سرور میزبانی کرده و قابلیت بررسی وضعیت زنده (liveness checks) را به آن اضافه کنید!
نتیجهگیری
در این مقاله، با مراحل ساخت ربات تلگرام با پایتون آشنا شدیم و توانستیم یک ربات ساده را راهاندازی کنیم. از دریافت توکن ربات گرفته تا پردازش پیامها و دستورات، دیدیم که ساخت یک ربات تلگرام نهتنها آسان، بلکه بسیار کاربردی و جذاب است.
این تنها آغاز راه است! با کاوش بیشتر در مستندات کتابخانه python-telegram-bot، میتوانید قابلیتهای بیشتری به ربات خود اضافه کنید. از مدیریت گروهها و ارسال خودکار پیامها گرفته تا ادغام با APIهای دیگر، امکانات بیپایانی برای توسعه رباتهای پیشرفتهتر وجود دارد.
اگر ایدهای در ذهن دارید یا به کمک بیشتری نیاز دارید، حتماً آن را به اشتراک بگذارید. حالا که اصول اولیه را یاد گرفتید، زمان آن رسیده که خلاقیت خود را به کار بگیرید و رباتی منحصربهفرد بسازید.
مقاله خیلی دقیق و گام به گام بود. من تازه شروع به یادگیری پایتون کردم و تونستم با این راهنماییها ربات تلگرام خودم رو بسازم. بسیار سپاسگزارم.
آموزشهای این مقاله خیلی واضح و ساده بود.