مقدمه
طبق تحقیقات انجام شده حدوداً ۱.۴ میلیارد نفر، از سرویس های پیامرسان استفاده میکنند. بسیاری از این استفاده کنندگان، علاقهمند هستند از طریق رباتهای آماده، کارهای مختلفی بصورت خودکار انجام دهند. بر اساس یک نظر سنجی در سال ۲۰۲۱ از صاحبان مشاغل معتبر دنیا، مشخص شده است که رباتها قادر هستند تا هزینههای مربوط به پشتیبانی مشتری را تا ۳۰ درصد کاهش دهند. شکی نیست امروزه، چت باتها به بخش جداییناپذیر از خدمات پشتیبانی مشتری و بازاریابی تبدیل شدهاند.
تلگرام یک اپلیکیشن پیامرسان آنلاین بسیار بزرگ است که ماهانه ۵۰۰ میلیون کاربر و نرخ رشد سالانه ۵۰ درصدی را به خود اختصاص میدهد. اگر شما هم کاربر تلگرام هستید حتماً با یک chatbot مکالمه داشتهاید. رباتهای تلگرام با ویژگیهای منحصر به فردی که دارند مزایای مختلفی را برای کاربران ارائه میدهند. حالا این وظایف میتوانند در جهت خودکارسازی بعضی کارها باشند یا فقط جنبه سرگرمی و بازیهای گروهی داشته باشند.
برخی از افراد ممکن است توسعه و ساخت یک ربات را کار پیچیده و دلهرهآور بدانند، اما بهتر است بدانید که واقعاً کار سختی نیست. با برنامهریزی صحیح میتوانید در کمتر از یک ساعت، یک ربات تلگرام راهاندازی کنید و از آن استفاده نمایید. در آموزش ربات تلگرام با پایتون ۳، نحوه ایجاد دو ربات تلگرام ساده را برایتان نشان خواهیم داد.
ربات تلگرام چیست؟
مانند هر چتبات دیگری که در رسانههای اجتماعی با آن برخورد کردهاید، ربات تلگرام برنامه کوچکی است که در کانالهای تلگرام یا کانالهای عمومی با ویژگیهای هوش مصنوعی تعبیه شده اند. رباتهای تلگرام اکانت های ویژهای هستند که برای ساخت نیازی به شماره همراه ندارند. این رباتها برای شبیهسازی مکالمه و محاوره انسان طراحی شدهاند.
ربات تلگرام چطور کار می کند؟
رباتها از یک API ربات استفاده میکنند که یک برنامه شخص ثالث از طریق تلگرام است. کاربران میتوانند با ارسال تصاویر، موقعیت مکانی، دادهها، متون، درخواستهای درون خطی و دستورات، با رباتها تعامل داشته باشند.
شروع کار ساخت ربات تلگرام
برای آموزش ربات تلگرام با پایتون ۳ از یکسری کتابخانه و API استفاده خواهیم کرد. برای این آموزش قصد داریم از کتابخانه python-telegram-bot، کتابخانه request و TheCatAPI استفاده کنیم. اگر با زبان برنامهنویسی پایتون آشنایی چندانی ندارید و چنانچه به فکر یادگیری پایتون هستید، میتوانید با آموزشهای پایتون فرادرس کارتان را شروع کنید.
هر ربات در تلگرام دارای یک توکن منحصربهفرد هست که به آن کمک میکند تا با رابط رباتی یا همان Bot API ارتباط برقرار کند تا بدینوسیله بتواند از این پیامرسان استفاده کند. Bot API یکی از محبوبترین ویژگیهای تلگرام در بین توسعهدهندگان آن هست که این امکان را فراهم میکند تا از پیامهای آن بهعنوان یک رابط استفاده کنند.
برای اینکه این توکن را دریافت کنید یک مکالمه را با BotFather@ در تلگرام شروع کنید. BotFather یک ربات رسمی تلگرام است که میتوانید با آن رباتهای سفارشی بسازید. برای دسترسی به این ربات میتوانید “botfather@” را در تلگرام جستجو کنید.
پس از اینکه وارد چت شدید، با تایپ کردن دستور newbot/ ربات خود را ایجادکنید. (رباتی که ما میسازیم somebot@ نامگذاری کردیم) در این قسمت میتوانید با نوشتن دستور help/ بقیه دستورات قابل استفاده را مشاهده کنید. بعد از انجام این کار یک توکن منحصر به فرد برای ربات دریافت خواهیدکرد.
خوب تا اینجای کار همه پیشنیازها را داریم، الان وقت آن رسیده که به جای هیجانانگیز برسیم!
نصب کتابخانه ربات تلگرام در پایتون
اگر از ویندوز استفاده میکنید command prompt را باز کنید و دستورات زیر را در آن تایپ کنید:
pip install python-telegram-bot pip install requests
البته ممکن است موقع نصب با errorهایی مواجه شوید ولی با خواندن متن ارائهشده قادر به حل مشکل خواهیدبود. اگر از سیستم عامل macOS یا Linux استفاده میکنید، به جای دستورات بالا از دستورات زیر استفاده کنید. علاوه بر این در Linux مطمئن شوید که بهعنوان یک کاربر با مجوز sudo وارد شدهاید.
pip3 install python-telegram-bot pip3 install requests
نوشتن ربات تلگرام در پایتون
در این مرحله از آموزش ربات تلگرام با پایتون ۳ یک پوشه در یکی از درایور های خودتان ایجاد کنید و آن را در هر ویرایشگری که دوست دارید باز کنید (البته توصیه ما استفاده از محیط VScode است). فایل جدیدی بسازید و نام آن را main.py بگذارید. این فایل حاوی کد منبع ربات شما خواهد بود. حالا اجازه دهید کتابخانههایی که قبلا نصب کرده بودیم را همراه با برخی از توابع داخلی آنها وارد کنیم.
حال هدف، دسترسی به TheCatAPI و دریافت URL یک تصویر و ارسال آن به چت کاربر است. بیایید کارمان را با یک تابع برای دریافت URL تصویر شروع کنیم. این کار میتواند با استفاده از ماژول درخواستها (requests) انجام شود. در این تابع، دادههای JSON از یک فایل ارائهشده توسط TheCatAPI را بارگیری میکنیم و URL آن را برای استفاده بعدی استخراج میکنیم. برای مشاهده فرمت شیء JSON، لینک https://api.thecatapi.com/v1/images/search را در مرورگر خود وارد کنید (فیلتر شکن لازم است!). با این کار کدهای زیر را در مرورگر خواهید دید :
[{"breeds":[],"id":"SKa5ZwRJZ","url":"https://cdn2.thecatapi.com/images/SKa5ZwRJZ.jpg","width":3024,"height":3024}]
توجه داشته باشید که شی JSON آرایهای است که یک Dictionary را در خود نگه میدارد. این دیکشینری حاوی URL با کلید “url” است. برای استخراج URL، باید به عنصر اول آرایه و سپس کلید مربوطه ارجاع دهیم.
def getUrl(): contents = requests.get('https://api.thecatapi.com/v1/images/search') url = contents[0]['url'] return url
در مرحله بعد، باید یک تصویر را به چت یک کاربر ارسال کنیم. برای این کار، به URL تصویر و همچنین شناسه منحصر به فرد چت کاربر نیاز داریم. بیایید یک تابع wrapper برای این کار ایجاد کنیم. ابتدا ()getUrl را فراخوانی می کنیم. این تابع، برای به دست آوردن URL یک تصویر است.
سپس این روند با بدست آوردن شناسه چت کاربر گیرنده (مکان هدف ربات را برای پیامها مشخص میکند و URL را از طریق تابع ()send_photo داخلی Bot API تجزیه می کند) دنبال می شود.
def sendImage(bot, update): url = getUrl() chat_id = update.message.chat_id bot.send_photo(chat_id=chat_id, image=url)
شایان ذکر است که برای کسب اطلاعات بیشتر در مورد توابع مختلف داخلی Bot API و نحوه عملکرد آن ها، پس از این آموزش به اسناد رسمی تلگرام مراجعه کنید.
در نهایت، یک تابع ایجاد می کنیم که عملکرد کلی ربات را کنترل کند. این تابع که معمولاً ()main نامیده میشود جایی است که ما یک درخواست HTTP را با استفاده از توکنی که در ابتدای آموزش به دست آوردیم به Bot API ارسال میکنیم و سپس تعریف میکنیم که تعامل کاربر ربات چگونه خواهد بود.
def main(): updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c") updater.dispatcher.add_handler(CommandHandler('meow',sendImage)) #start the bot updater.start_polling() updater.idle() if __name__ == '__main__': main()
برنامه نهایی باید به صورت کد زیر باشد:
from telegram.ext import Updater, CommandHandler import requests import re def getUrl(): contents = requests.get('https://api.thecatapi.com/v1/images/search') url = contents[0]['url'] return url def sendImage(bot, update): url = getUrl() chat_id = update.message.chat_id bot.send_photo(chat_id=chat_id, image=url) def main(): updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c") updater.dispatcher.add_handler(CommandHandler('meow',sendImage)) #start the bot updater.start_polling() updater.idle() if __name__ == '__main__': main()
تست ربات تلگرام
تبریک میگویم! تا این بخش از آموزش ربات تلگرام، شما یک ربات ساختهاید که پس از درخواست تصاویر متنوعی را ارسال میکند. برنامه خود را اجرا کنید (در حالت اجرا باقی بماند) و meow/ را در چت ربات خود کرده و منتظر باشید تا نتیجه نمایش داده شود. شاید در نگاه اول، این کد، یک ربات ساده با عملکرد محدود باشد، اما نشان میدهد که اکوسیستم توسعه ربات تلگرام چقدر قدرتمند است. شما میتوانید دستورات و عملیات های مختلفی را به ربات خود اضافه کنید و عملکرد آن را ببینید.
ربات تلگرام خود را به صورت آنلاین میزبانی کنید
اکنون که ربات خود را راه اندازی کرده اید، برنامه main.py را از حالت اجرا خارج کنید و از ربات در برنامه پیام رسان تلگرام خود استفاده کنید. خواهید دید دستورات داده شده به ربات اجرا نمی شوند. دلیل این امر این است که برنامه از کامپیوتر شخصی شما به عنوان یک سرور محلی برای ارسال درخواستهای HTTP به APIهای مورد استفاده در این برنامه استفاده میکند. به این ترتیب، استفاده از ربات تلگرام وابسته به اجرای برنامه در کامپیتور شماست. برای حل این مشکل، باید وابستگی ربات به دستگاه شما را حذف کنیم.
یکی از راههای انجام این کار، استفاده از یک هاست یا فضای ابری اینترنتی است تا همیشه بصورت آنلاین، برنامه را در حالت اجرا باقی بماند. به یک پلتفرم میزبانی برنامه وب مانند Heroku، AWS، Google Cloud یا Microsoft Azure بروید و اشتراکی را انتخاب کنید که به بهترین وجه با نیازهای شما مطابقت دارد. توصیه میکنیم یک نسخه آزمایشی یا اشتراک رایگان را انتخاب کنید و با افزایش مقیاس یا دامنه برنامه خود، آن را ارتقا دهید.
مثالی دیگر از ساخت ربات در تلگرام
در این بخش از آموزش ربات تلگرام با پایتون ۳ قصد داریم رباتی بسازیم که بتوانیم با آن احوال پرسی کنیم و مانند انسان سؤالاتی از آن بپرسیم و ربات به ما پاسخ دهد و اگر سؤالی یا جملهای برایش نامفهوم بود با جمله اینکه من نمیدانم پاسخ بدهد. پس با ما همراه باشید.
قسمت های مربوط به Botfather@ را بار دیگر توضیح نمیدهیم. قبلا این بخش به صورت کامل توضیح داده شد. این بار رباتی با نام sample bot میسازیم. در ویرایشگری که استفاده میکنیم فایلی با نام main.py ساختهایم. فایل پاتون دیگری با نام Constants.py میسازیم و توکنی که برای رباتمان داده شده را کپی کرده و در داخل این فایل با دستور زیر کپی میکنیم. این کار باعث راحتی کار در آینده میشود. چون قرار است از API-KEY بعدا هم استفاده کنیم. البته باید حواسمان باشد که کسی به این توکن دسترسی نداشته باشد، چون میتوانند بدون اطلاع شما در ربات تغییراتی ایجاد کنند.
API_KEY = '5103349585:AAE2iq7NCGlGEzO_CQWZxquw5He9SB'
فایل دیگری با نام Responses.py برای مدیریت پاسخها میسازیم و دستورات زیر را در داخل آن مینویسیم.
from datetime import datetime def sample_responses(input_text): user_message = str (input_text).lower() if user_message in ("hello", "hi", "sup",): return "Hey! How's it going?" if user_message in ("Who are you?", "who are you",): return "I am goliniceBot" # if user wants to ask about time if user_message in ("time?", "time",): now = datetime.now() date_time = now.strftime("%d/%m/%y, %H:%M:%S") # time will be in format of day mounth year , hour minut sec return str(date_time) return "i dont understand you "
همانطور که در بالا اشاره شد حواسمان باشد که pip install python-telegram-bot را نصب کردهایم. از قسمت ترمینال python هم می شود آن را نصب کرد. حالا وارد فایل main.py میشویم و دستورات زیر را در آن مینویسیم.
import Constants as keys from telegram.ext import * # from telegram extension import every thing import Responses as R print ("Bot started...") def start_command(update, context): update.message.reply_text('Type some thing random to get started!') def help_command(update, context): update.message.reply_text('if you need help! you should ask for it on google!') def handle_message(update, context): text = str(update.message.text).lower() response = R.sample_responses(text) update.message.reply_text(response) def error(update ,context): print(f"Update {update} caused error {context.error}") def main(): updater = updater (keys.API_KEY, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler("start", start_command)) dp.add_handler(CommandHandler("help", help_command)) dp.add_handler(MessageHandler(Filters.text, handle_message)) dp.add_error_Handler(error) updater.start_polling(5)#we put 5 sec before checking to the next message updater.idle() main() # answer after run Bot started... PS F:\python>
خوب در قسمت انتهایی از آموزش ربات تلگرام با پایتون ۳ به تلگرام برمیگردیم و رباتی که ساختیم را پیدا میکنیم. اولین کار نوشتن start/ است و بعد دستورات را امتحان میکنیم. اگر میخواهید این آموزش را به صورت عملی یاد بگیرید پیشنهاد میکنیم به آموزش ساخت ربات تلگرام با پایتون فرادرس که توسط مهندس پویا جمالی تدریس شده است مراجعه نمایید.
سخن آخر در مورد آموزش ربات تلگرام با پایتون ۳
در این مقاله درباره آموزش ربات تلگرام با پایتون ۳ صحبت کردیم. فرض بر این گرفته شده است که علاقهمندان عزیز زبان پایتون را بلد هستند، در نتیجه با بیان نکات ضروری در مورد نحوه ساخت ربات توضیحاتی به صورت گام به گام در قالب ۲ مثال برای عزیزان فراهم کردیم. قبل از یادگیری زبان برنامهنویسی پایتون چنانچه میخواهید با آینده شغلی این زبان آشنا شوید میتوانید پاورپوینت بازار کار برنامه نویسی پایتون را تهیه نمایید. در نهایت از اینکه تا انتهای مقاله ما را همراهی کردید بسیار سپاسگزاریم. حتماً منتظر نظرات و پیشنهادات سازنده شما عزیزان هستیم. موفق و پیروز باشید.
4 پاسخ
سلام من میخوام یک ربات تلگرامی کانال یاب طراحی کنم و سیستم من اندروید هست و نمیدونم چطوری نسخه اندروید پایتون رو نصب کنم و نمی دونم چگونه آن را به ربات متصل کنم
سلام ببخشید من هرچی میخوام با تلگرام ای پی ای برقرار کنم به علت فیلتر بودن نمیتونم
با سایفون هم تست کردم موفق نشدم چون سایفون پایتون رو زیرچتر فیلتر شکن قرار نمیده
چجوری اینکارو انجام بدم؟
آموزش خوب بود👌
عالی و کامل بود. ممنون از آموزش بسیار خوبتون.