آموزش ساخت ربات تلگرام از صفر تا صد
چت باتها در نحوه تعامل مردم با فناوری، انقلابی ایجاد کردند. در سالهای اخیر، سادگی و هزینه کم آن به پذیرش در زمینهها و صنایع مختلف کمک کرده است. در این مقاله، آموزش ساخت ربات تلگرام را نشان میدهیم. در ادامه چگونگی ساخت ربات در تلگرام را یاد میگیرید و میتوانید یک ربات پیام رسان تلگرام را در عرض چند ساعت ایجاد و اجرا کنید.
مقدمه طرز ساخت ربات در تلگرام
چتباتها اغلب به عنوان یک انقلاب در نحوه تعامل کاربران با فناوری و کسب و کار معرفی میشوند. آنها در مقایسه با برنامههای سنتی، رابط نسبتاً سادهای دارند؛ زیرا فقط به کاربران نیاز دارند تا چت کنند. چتباتها باید هر کاری را که کاربر از آنها میخواهد، حداقل در تئوری درک کرده و انجام دهند.
بسیاری از صنایع، خدمات مشتریان خود را به سمت سیستمهای چت بات تغییر میدهند. این به دلیل کاهش شدید هزینه در مقایسه با انسانهای واقعی و همچنین به دلیل استحکام و در دسترسبودن ثابت است. چت باتها درجهای از پشتیبانی کاربر را بدون هزینه اضافی قابل توجه ارائه میدهند.
امروزه، رباتهای چت در بسیاری از سناریوها، از کارهای ساده مانند نمایش دادههای زمان و آب و هوا گرفته تا عملیات پیچیدهتر مانند تشخیص اولیه پزشکی و ارتباط/پشتیبانی با مشتری، استفاده میشوند. میتوانید چتباتی ابداع کنید که وقتی مشتریانتان سؤالات خاصی درباره محصولتان میپرسند، به آنها کمک کند. یا میتوانید یک چت ربات دستیار شخصی بسازید که میتواند کارهای اساسی را انجام دهد و زمان رفتن به یک جلسه یا باشگاه را به شما یادآوری کند.
وقتی صحبت از محل استقرار چت ربات خود به میان میآید، گزینههای زیادی وجود دارد. یکی از رایجترین استفادهها، پلتفرمهای رسانههای اجتماعی است؛ زیرا اکثر مردم به طور منظم از آنها استفاده میکنند. همین امر را میتوان در مورد برنامههای پیام رسانی فوری گفت، هرچند با برخی احتیاطها.
قبل از شروع آموزش برای آشنایی بیشتر با رباتهای تگرام مقاله ربات تلگرام چیست را مطعه کنید.
آموزش ساخت ربات تلگرام از صفر تا صد
تلگرام یکی از محبوبترین پلتفرمهای IM امروزه است؛ زیرا به شما امکان میدهد پیامها را به جای دستگاه خود، در فضای ابری ذخیره کنید و از پشتیبانی چند پلتفرم به خوبی برخوردار است؛ زیرا میتوانید تلگرام را در اندروید، iOS و ویندوز داشته باشید. همچنین هر پلتفرم دیگری که بتواند از نسخه وب پشتیبانی کند. ساخت ربات چت در تلگرام نسبتاً ساده است و به چند مرحله نیاز دارد که تکمیل آن زمان بسیار کمی میبرد. چت بات را میتوان در گروهها و کانالهای تلگرام ادغام کرد که به تنهایی کار کند.
در اموزش ساخت ربات تلگرام پیشرفته ، ما یک ربات تلگرام ایجاد میکنیم که یک تصویر آواتار از آواتارهای دوست داشتنی به شما میدهد. مثال ما شامل ساخت یک ربات با استفاده از Flask و استقرار آن در سرور رایگان Heroku است.
برای ساخت ربات تلگرام چه باید کرد ؟
برای ساخت ربات تلگرام با کد نویسی به موارد زیر نیاز دارید:
- نصب پایتون 3 روی سیستم.
- کسب مهارتهای کدنویسی پایتون.
- درک خوب نحوه عملکرد برنامهها مزیت خوبی خواهد بود، اما الزامی نیست؛ زیرا بیشتر مواردی را که ارائه میکنیم به تفصیل بررسی خواهیم کرد.
- همچنین باید Git را روی سیستم خود نصب کنید تا بتوانیم ربات بسازیم .
البته آموزش ساخت ربات های تلگرام نیاز به اکانت تلگرام دارد که رایگان است. یک حساب کاربری Heroku نیز مورد نیاز است و میتوانید آن را به صورت رایگان دریافت کنید.
برای ساخت انواع ربات های تلگرام ، باید با BotFather تماس بگیرید که در اصل رباتی است که برای ایجاد رباتهای دیگر استفاده میشود.
ربات تلگرام خود را زنده کنید
دستوری که نیاز دارید این است: /newbot که به مراحل زیر برای ساخت ربات تو تلگرام منجر میشود:
ربات شما باید دو ویژگی داشته باشد: نام و نام کاربری. نام برای ربات شما نشان داده میشود، در حالی که نام کاربری برای صدا کردن و اشتراکگذاری استفاده میشود.
پس از انتخاب نام ربات و نام کاربری خود که باید با “bot” ختم شود، پیامی حاوی نشانه دسترسی خود دریافت خواهید کرد و بدیهی است که باید رمز دسترسی و نام کاربری خود را برای بعد ذخیره کنید؛ زیرا به آنها نیاز خواهید داشت.
منطق چت بات را کد کنید
ما در آموزش ساخت ربات تلگرام حرفه ای از اوبونتو استفاده خواهیم کرد. برای کاربران ویندوز، دستورات اینجا بدون هیچ مشکلی کار میکنند. در مورد کاربران مک، این طرز ساخت ربات تلگرام باید به خوبی کار کند.
ابتدا بیایید یک محیط مجازی ایجاد کنیم. این کمک میکند تا نیازهای پروژه خود را از محیط جهانی پایتون جدا کنید.
$ python -m venv botenv/
اکنون یک botenv/دایرکتوری خواهیم داشت که شامل تمام کتابخانههای پایتونی است که ما استفاده خواهیم کرد. ادامه دهید و virtualenv را با استفاده از دستور زیر فعال کنید:
$ source botenv/bin/activate
کتابخانههایی که برای ربات خود نیاز داریم، عبارتند از:
- Flask: یک چارچوب وب میکرو ساختهشده در پایتون.
- Python-telegram-bot : یک بستهبندی تلگرام در پایتون.
- درخواستها : یک کتابخانه محبوب پایتون http.
با استفاده از دستور pip میتوانید آنها را در محیط مجازی به صورت زیر نصب کنید:
(telebot) $ pip install flask (telebot) $ pip install python-telegram-bot (telebot) $ pip install requests
در این قسمت از آموزش ساخت ربات در تلگرام رایگان بیایید فهرست پروژه خود را مرور کنیم.
. ├── app.py ├── telebot │ ├── credentials.py │ | . │ | you can build your engine here │ | . │ └── __init__.py └── botenv
درفایل credentials.py به سه متغیر نیاز داریم:
bot_token = "here goes your access token from BotFather" bot_user_name = "the username you entered" URL = "the heroku app link that we will create later"
حالا بیایید به app.py خود برگردیم و کد را مرحله به مرحله مرور کنیم:
# import everything from flask import Flask, request import telegram from telebot.credentials import bot_token, bot_user_name,URL global bot global TOKEN TOKEN = bot_token bot = telegram.Bot(token=TOKEN)
اکنون شی ربات را داریم که برای هر عملی که به ربات نیاز داریم، استفاده میشود.
# start the flask app app = Flask(__name__)
در این بخش از ساخت ربات های تلگرام باید توابع را به مسیرهای خاص متصل کنیم. به عبارت دیگر، ما باید به Flask بگوییم که وقتی یک آدرس خاص فراخوانی میشود، چه کاری انجام دهد.
در مثال ما، تابع route به یک URL پاسخ میدهد که اساساً /{token}.
@app.route('/{}'.format(TOKEN), methods=['POST']) def respond(): # retrieve the message in JSON and then transform it to Telegram object update = telegram.Update.de_json(request.get_json(force=True), bot) chat_id = update.message.chat.id msg_id = update.message.message_id # Telegram understands UTF-8, so encode text for unicode compatibility text = update.message.text.encode('utf-8').decode() # for debugging purposes only print("got text message :", text) # the first time you chat with the bot AKA the welcoming message if text == "/start": # print the welcoming message bot_welcome = """ Welcome to coolAvatar bot, the bot is using the service from http://avatars.adorable.io/ to generate cool looking avatars based on the name you enter so please enter a name and the bot will reply with an avatar for your name. """ # send the welcoming message bot.sendMessage(chat_id=chat_id, text=bot_welcome, reply_to_message_id=msg_id) else: try: # clear the message we got from any non alphabets text = re.sub(r"\W", "_", text) # create the api link for the avatar based on http://avatars.adorable.io/ url = "https://api.adorable.io/avatars/285/{}.png".format(text.strip()) # reply with a photo to the name the user sent, # note that you can send photos by url and telegram will fetch it for you bot.sendPhoto(chat_id=chat_id, photo=url, reply_to_message_id=msg_id) except Exception: # if things went wrong bot.sendMessage(chat_id=chat_id, text="There was a problem in the name you used, please enter different name", reply_to_message_id=msg_id)
راه بصری برای فعالکردن دکمه این تابع این است که ما هر ثانیه آن را فراخوانی میکنیم تا بررسی کند که آیا پیام جدیدی رسیده است یا خیر. در این قسمت از اموزش ساخت ربات تلگرام رایگان ، ما این کار را انجام نمیدهیم. در عوض، ما از Webhook استفاده خواهیم کرد که راهی را برای ما فراهم میکند که به ربات اجازه دهیم هر زمان که پیامی فراخوانی میشود، سرور ما را صدا کند؛ به طوری که نیازی نیست سرورمان را در یک حلقه زمانی که منتظر پیامی است، دچار مشکل کنیم.
بنابراین، ما تابعی را ایجاد میکنیم که خودمان باید آن را فراخوانی کنیم تا وب هوک تلگرام را فعال کنیم. اساساً به تلگرام میگوییم که با رسیدن یک پیام جدید، یک لینک خاص را فراخوانی کند. برای ساخت ربات چت تلگرام باید بدانید که این تابع را فقط یک بار، زمانی که برای اولین بار ربات را ایجاد میکنید، فراخوانی میکنید. اگر پیوند برنامه را تغییر دهید، باید این عملکرد را دوباره با پیوند جدیدی که دارید، اجرا کنید.
مسیر اینجا میتواند هر چیزی باشد. شما کسی هستید که آن را فرا میخوانید:
@app.route('/setwebhook', methods=['GET', 'POST']) def set_webhook(): # we use the bot object to link the bot to our app which live # in the link provided by URL s = bot.setWebhook('{URL}{HOOK}'.format(URL=URL, HOOK=TOKEN)) # something to let us know things work if s: return "webhook setup ok" else: return "webhook setup failed"
اکنون که همه چیز تنظیم شده است، برای ساخت ربات تلگرام به صورت رایگان بیایید یک صفحه اصلی شیک بسازیم تا بدانیم موتور روشن است.
@app.route('/') def index(): return '.' if __name__ == '__main__': # note the threaded arg which allow # your app to have more than one thread app.run(threaded=True)
بیایید نگاهی به نسخه کامل app.py بیندازیم:
import re from flask import Flask, request import telegram from telebot.credentials import bot_token, bot_user_name,URL global bot global TOKEN TOKEN = bot_token bot = telegram.Bot(token=TOKEN) app = Flask(__name__) @app.route('/{}'.format(TOKEN), methods=['POST']) def respond(): # retrieve the message in JSON and then transform it to Telegram object update = telegram.Update.de_json(request.get_json(force=True), bot) chat_id = update.message.chat.id msg_id = update.message.message_id # Telegram understands UTF-8, so encode text for unicode compatibility text = update.message.text.encode('utf-8').decode() # for debugging purposes only print("got text message :", text) # the first time you chat with the bot AKA the welcoming message if text == "/start": # print the welcoming message bot_welcome = """ Welcome to coolAvatar bot, the bot is using the service from http://avatars.adorable.io/ to generate cool looking avatars based on the name you enter so please enter a name and the bot will reply with an avatar for your name. """ # send the welcoming message bot.sendMessage(chat_id=chat_id, text=bot_welcome, reply_to_message_id=msg_id) else: try: # clear the message we got from any non alphabets text = re.sub(r"\W", "_", text) # create the api link for the avatar based on http://avatars.adorable.io/ url = "https://api.adorable.io/avatars/285/{}.png".format(text.strip()) # reply with a photo to the name the user sent, # note that you can send photos by url and telegram will fetch it for you bot.sendPhoto(chat_id=chat_id, photo=url, reply_to_message_id=msg_id) except Exception: # if things went wrong bot.sendMessage(chat_id=chat_id, text="There was a problem in the name you used, please enter different name", reply_to_message_id=msg_id) @app.route('/set_webhook', methods=['GET', 'POST']) def set_webhook(): s = bot.setWebhook('{URL}{HOOK}'.format(URL=URL, HOOK=TOKEN)) if s: return "webhook setup ok" else: return "webhook setup failed" @app.route('/') def index(): return '.' if __name__ == '__main__': app.run(threaded=True)
این آخرین بیت کدی است که در آموزش ساخت ربات تلگرام به صورت حرفه ای خواهید نوشت. اکنون میتوانیم تا آخرین مرحله، یعنی راهاندازی برنامه خود در Heroku، پیش برویم.
مرحله بعدی آموزش ساخت ربات تلگرام : برنامه را در Heroku راهاندازی کنید
قبل از اینکه اپلیکیشن خود را بسازیم به چند چیز نیاز داریم.
Heroku نمیتواند بفهمد که پروژه شما از چه کتابخانههایی استفاده میکند، بنابراین باید با استفاده از فایل requirements.txt به آن بگوییم این که الزامات غلط املایی داشته باشند، یک مشکل رایج است؛ پس مراقب باشید. تولید فایل نیازمندیها با استفاده از pip:
pip freeze > requirements.txt
اکنون فایل مورد نیاز خود را آماده دارید.
اکنون به فایلی نیاز دارید: Procfile که به Heroku میگوید برنامه ما از کجا شروع میشود؛ بنابراین یک فایل Procfile ایجاد کنید و موارد زیر را اضافه کنید:
web: gunicorn app:app
مرحله پرش:
میتوانید یک فایل .gitignore به پروژه خود اضافه کنید تا فایلهای بدون استفاده در مخزن آپلود نشوند.
از داشبورد Heroku خود ، یک برنامه جدید ایجاد کنید. پس از انجام این کار، شما را به صفحه Deploy هدایت میکند. سپس تب تنظیمات را در یک پنجره جدید باز کنید و دامنه برنامه را که چیزی شبیه به این است، کپی کنید: https://appname.herokuapp.com/ و آن را در داخل متغیر URL آن قرار دهید credentials.py.
حالا به تب Deploy برگردید و مراحل را ادامه دهید.
توجه: کاربران ویندوز و macOS میتوانند مراحل توضیح داده شده در زیر را دنبال کنند.
آموزش ساخت ربات تلگرام در ویندوز و macOS:
وارد هروکو شوید:
$ heroku login
لطفاً توجه داشته باشید که این روش گاهی اوقات درگیر میکند waiting for login، اگر این اتفاق برای شما افتاد، سعی کنید با استفاده از:
$ heroku login -i
یک مخزن Git را در دایرکتوری راه اندازی کنید:
$ git init $ heroku git:remote -a {heroku-project-name}
استقرار برنامه:
$ git add . $ git commit -m "first commit" $ git push heroku master
در این مرحله از ساخت ربات پیشرفته تلگرام رایگان ، پیشرفت ساختمان را در ترمینال خود خواهید دید. اگر همه چیز خوب پیش رفت، چیزی شبیه به این خواهید دید:
remote: -----> Launching... remote: Released v6 remote: https://project-name.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done.
حالا به صفحه اپلیکیشن (لینک دامنهای که قبلا کپی کردهاید) رفته و به انتهای لینک /setwebhook اضافه کنید تا آدرس چیزی شبیه به https://appname.herokuapp.com/setwebhook شود. اگر webhook setup ok را دیدی، یعنی آمادهای برای رفتن!
حالا برو با ربات خودت صحبت کن!
نکات پایانی و ترفندهای تکمیل ساخت ربات تلگرام
اکنون شما ساخت ربات اختصاصی تلگرام خود را به صورت 24ساعته و بدون نیاز به دخالت راه اندازی کردهاید. میتوانید هر منطقی را که میخواهید به ربات اضافه کنید؛ بنابراین برای مثال، میتوانید با افزودن وضعیت «تایپ کردن» و ارسال وضعیت عکس به صورت زیر، ربات خود را واقعیتر کنید:
قطعه کد بعدی از تابع respond():
if text == "/start": # print the welcoming message bot_welcome = """ Welcome to coolAvatar bot, the bot is using the service from http://avatars.adorable.io/ to generate cool looking avatars based on the name you enter so please enter a name and the bot will reply with an avatar for your name. """ # send the welcoming message bot.sendChatAction(chat_id=chat_id, action="typing") sleep(1.5) bot.sendMessage(chat_id=chat_id, text=bot_welcome, reply_to_message_id=msg_id) else: try: # clear the message we got from any non alphabets text = re.sub(r"\W", "_", text) # create the api link for the avatar based on http://avatars.adorable.io/ url = "https://api.adorable.io/avatars/285/{}.png".format(text.strip()) # reply with a photo to the name the user sent, # note that you can send photos by url and telegram will fetch it for you bot.sendChatAction(chat_id=chat_id, action="upload_photo") sleep(2) bot.sendPhoto(chat_id=chat_id, photo=url, reply_to_message_id=msg_id) except Exception: # if things went wrong bot.sendMessage(chat_id=chat_id, text="There was a problem in the name you used, please enter different name", reply_to_message_id=msg_id)
همانطور که در قطعه مشاهده می کنید، زمانی که میخواهیم اطلاعات مربوط به ربات را به صورت متنی ارسال کنیم، یک عمل تایپ اضافه کردهایم و زمانی که میخواهیم عکسی را ارسال کنیم، یک عمل تایپ اضافه میکنیم تا ربات واقعیتر شود.
همچنین میتوانید تصویر و توضیحات ربات را از کانال BotFather تغییر دهید تا دوستانهتر شود.
شما چگونه ساخت ربات تلگرام را باید انجام دهید تا آن را به ربات فوقالعاده هوش مصنوعی بعدی تبدیل کنید؟ تنها کاری که باید انجام دهید این است که منطق خود را در عملکرد respond() یکپارچه کنید. به عنوان مثال، منطق شما میتواند در یک ماژول جداگانه باشد و میتواند در داخل تابع respond() مانند زیر فراخوانی شود:
. ├── app.py ├── telebot │ ├── credentials.py │ ├──ai.py │ | . │ | you can build your engine here │ | . │ └── __init__.py └── botenv
و داخل ai .py:
def generate_smart_reply(text): # here we can do all our work return "this is a smart reply from the ai!"
اکنون آن را در برنامه .py وارد کنید:
import re from time import sleep from flask import Flask, request import telegram From telebot.ai import generate_smart_reply from telebot.credentials import bot_token, bot_user_name,URL
سپس فقط آن را در داخل کد respond() فرا بخوانید.
def respond(): # retrieve the message in JSON and then transform it to Telegram object update = telegram.Update.de_json(request.get_json(force=True), bot) chat_id = update.message.chat.id msg_id = update.message.message_id # Telegram understands UTF-8, so encode text for unicode compatibility text = update.message.text.encode('utf-8').decode() # for debugging purposes only print("got text message :", text) # here call your smart reply message reply = generate_smart_reply(text) bot.sendMessage(chat_id=chat_id, text=reply, reply_to_message_id=msg_id)
اکنون میتوانید ربات خود را به روشی که میخواهید به کار بیاندازید. پیش بروید و ساخت ربات حرفه ای تلگرام با برنامه نویسی بعدی را ایجاد کنید!
اگر تمایل به پیگیری اخبار تکنولوژی و فناوری دارید، در کانال تلگرام به ما بپیوندید.
امیدوارم از ساخت ربات تلگرام آسان و به زبان فارسی لذت برده باشید.