دراین مقاله قصد داریم به ساخت ربات تلگرام با پایتون بپردازیم. برای خواندن این مقاله و ساخت بات، لازم است که python و pip در سیستم شما نصب شده باشد. در این آموزش از پایتون 3 استفاده کرده ایم.
ربات های تلگرام برنامه های شخص ثالثی هستند که در داخل تلگرام اجرا می شوند. کاربران می توانند با ارسال پیام، دستورات و درخواست های درون خطی با ربات ها تعامل داشته باشند. شما می توانید ربات های خود را با استفاده از درخواست های HTTPS به API ربات تلگرام، کنترل کنید.
مرجع کامل API برای توسعه دهندگان را می توانید در این نشانی ببینید.
ربات تلگرام نوع خاصی یک برنامه کامپیوتری است که می تواند به شرکت ها یا برندها با ویژگی های زیادی مانند ارسال اطلاعات، یادآوری، پخش آهنگ، سفارش و غیره خدمت کند. یک ربات می تواند پیامی را در یک گروه یا کانال ارسال کند.تلگرام یک API برای ایجاد ربات برای تعاملات اجتماعی، بهره وری، بازی و خدمات تجارت الکترونیک در این پلتفرم ارائه می دهد.
به جز از این موارد، رباتهای تلگرام همچنین میتوانند با اتصال به CRM، سیستم فروش بلیط یا یک پلتفرم پیامرسان، پشتیبانی مشتری یا جمعآوری سرنخها را فراهم کنند.
برای ساخت ربات تلگرام با پایتون به نرم افزار تلگرام برای گوشی یا سایت تلگرام نیاز داریم. در اینجا از سایت تلگرام استفاده می کنیم.به نشانی https://web.telegram.org/z/ می رویم و کار خود را آغاز می کنیم.
باید یک حساب تلگرام داشته باشید.اگر ندارید آن را ایجاد کنید. اگر از قبل حساب تلگرام دارید از طریق نشانی https://web.telegram.org/z/ وارد آن شوید.
پس از این کار باید وارد حساب خود شوید و باید تصویری مانند زیر را ببینید:
ربات های مختلفی برای تلگرام وجود دارد. برای این آموزش از ربات BotFather استفاده می کنیم. در قسمت Search کلمه BotFather را بنویسید تا این ربات برای شما پیدا شود. پس از پیدا شدن روی آن کلیک کنید، مانند زیر:
همان طور که در تصویر بالا می بینید راهنمایی در مورد این ربات و برخی از دستورهای آن داده شده است. برای ایجاد بات باید از دستور newbot/ استفاده کنیم. این دستور را در قسمت Message می نویسیم و موشک ارسال پیام را می زنیم. دستورها یا command های دیگر را در راهنمایی آن می توانید ببینید. همچنین می توانید در این نشانی نیز آن ها را مشاهده کنید.
پس از این کار، از شما سوال می شود که دوست دارید نام بات خود را چه بگذارید.
برای ادامه، در قسمت Message نام باتی را که می خواهیم داشته باشیم، می نویسیم تا ایجاد شود. با این کار ابتدا یک بررسی انجام می شود تا این اطمینان به وجود آید که نام بات توسط کسی دیگری انتخاب نشده باشد. نام بات خود هر چیزی که می خواهید می توانید بگذارید. من آن را roxo_test_bot می گذارم.
سپس از شما خواسته می شود یک username برای بات ایجاد کنید. نام آن را roxo_username_bot می گذاریم. نام آن حتما باید با bot تمام شود.
با این کار، بات با موفقیت ساخته می شود و باید تصویر زیر را ببینیم:
اگر تا اینجا همه چیز به خوبی پیش رفته باشد باید یک توکن دریافت کنید.این توکن را با کسی به اشتراک نگذارید.
برای پیاده سازی بات با پایتون باید یک کتابخانه مخصوص به این کار به نام python-telegram-bot را دانلود و نصب کنیم.برای آشنایی بیشتر با آن می توانید به این نشانی مراجعه کنید. این کار را با pip انجام می دهیم. ابتدا cmd را باز می کنیم و دستور pip install python-telegram-bot را در آن می نویسیم، مانند زیر:
این کار ممکن است کمی زمانبر باشد. پس از نصب و دانلود باید تصویر زیر را ببینید:
سپس یک پوشه به نام telegramBotPython ایجاد می کنیم و یک فایل main.py در آن می سازیم. کدهای خود را در این فایل می نویسیم. یک فایل به نام token.txt ایجاد می کنیم و توکنی را که بات به ما داده بود، در آن قرار می دهیم.
سپس کدهای زیر را در فایل main.py می نویسیم:
import telegram.ext with open('token.txt','r') as f: TOKEN = f.read() # when someone start to use our bot def start(update,context): update.message.reply_text("سلام به بات روکسو خوش آمدید") def help(update,context): update.message.reply_text(""" The Following commands are available: /start -> Welcome Message /help -> This Message /content -> Information About Roxo Content /contact -> Information About Contact """) def content(update,context): update.message.reply_text("روکسو یک سایت آموزش برنامه نویسی است") def contact(update,context): update.message.reply_text("با ما در ارتباط باشید") def handle_message(update,context): update.message.reply_text(f"پیام شما: {update.message.text}") updater=telegram.ext.Updater(TOKEN,use_context=True) disp=updater.dispatcher disp.add_handler(telegram.ext.CommandHandler("start",start)) disp.add_handler(telegram.ext.CommandHandler("help",help)) disp.add_handler(telegram.ext.CommandHandler("content",content)) disp.add_handler(telegram.ext.CommandHandler("contact",contact)) disp.add_handler(telegram.ext.MessageHandler(telegram.ext.Filters.text,handle_message)) updater.start_polling() updater.idle()
در ادامه کد بالا را توضیح خواهم داد.
برای این که برنامه کار کند باید از فیلترشکن استفاده کنید. اگر برنامه را اجرا کنید و سپس در قسمت جستجو نام بات را بزنید، باید بات را پیدا کند و به شما نمایش دهد. روی با کلیک کنید تا وارد آن شوید.
اگر وارد بات شویم و start را بزنیم باید تصویر زیر را ببینیم:
اکنون می خواهیم تک تک دستورهایی را که نوشتیم، آزمایش کنیم.دستور اول help/ را در قسمت Message می نویسیم و موشک ارسال پیام را می زنیم. با این کار باید تصویر زیر را ببینیم:
اگر content/ را بزنیم داریم:
و حالا اگر contact/ را بزنیم داریم:
الان نوبت آن است که پیامی را به بات بفرستیم. برای این کار کافی است که پیام را در قسمت Message نوشته و آن را ارسال کنیم.
اگر موشک ارسال پیام را بزنیم باید تصویر زیر را ببینیم:
ابتدا کتابخانه ها و فایل های مورد نیاز را وارد برنامه می کنیم:
import telegram.ext with open('token.txt','r') as f: TOKEN = f.read()
همان طور که قبلا هم اشاره کردم token خود را در فایل token.txt ذخیره و با open را باز می کنیم و در ثابت TOKEN ذخیره می کنیم. برای ارتباط با HTTP API به آن نیاز داریم.
برای همه اتفاق هایی که قرار است در بات بیفتد باید برنامه داشته باشیم، یعنی برای آن ها باید کد بنویسیم. وقتی کسی بات ما را باز می کند و در واقع آن را start می کند دوست داریم که به او یک پیام خوش آمد گویی بگوییم. برای این کار یک تابع به نام start ایجاد می کنیم که کد آن در زیر آمده است:
# when someone start to use our bot def start(update,context): update.message.reply_text("سلام به بات روکسو خوش آمدید")
برای راهنمایی کاربر از این که در این بات چه کاری می تواند انجام دهد یک تابع دیگر به نام help ایجاد می کنیم:
def help(update,context): update.message.reply_text(""" The Following commands are available: /start -> Welcome Message /help -> This Message /content -> Information About Roxo Content /contact -> Information About Contact """)
برای نمایش توضیح در مورد تابع زیر را داریم:
def content(update,context): update.message.reply_text("روکسو یک سایت آموزش برنامه نویسی است")
برای این که به کاربر بفهمانیم که می تواند با ما ارتباط برقرار کند تابع contact را در زیر تعریف می کنیم:
def contact(update,context): update.message.reply_text("با ما در ارتباط باشید")
و در نهایت برای این که کاربر بتواند پیامی را در بات بفرستد تابع handle_message را تعریف می کنیم:
def handle_message(update,context): update.message.reply_text(f"پیام شما: {update.message.text}")
خط بعدی از Telegram.Ext.Ext.Dispatcher استفاده می کند، که یک فرانت اند را برای Telegram.bot برای برنامه نویس فراهم می کند، بنابراین آن ها می توانند روی کدگذاری ربات تمرکز کنند. هدف آن دریافت به روزرسانی ها از تلگرام و تحویل آنها به دیسپچر است. همچنین در یک نخ جداگانه اجرا می شود، بنابراین کاربر می تواند با ربات، به عنوان مثال در خط فرمان تعامل داشته باشد. دیسپچر برای انواع مختلف داده ها از گیرنده ها پشتیبانی می کند: به روزرسانی ها از تلگرام، دستورات متن اصلی و حتی انواع داده ای دلخواه. به روزرسانی می تواند به عنوان یک سرویس polling شروع شود یا برای تولید از یک وب برای دریافت به روزرسانی استفاده شود. این کار با استفاده از کلاسهای Webhookserver و Webhookhandler حاصل می شود.
updater=telegram.ext.Updater(TOKEN,use_context=True) disp=updater.dispatcher
خطوط بعدی برای فراخوانی تابع هایی است که در بالا تعریف کردیم. این توابع را با استفاده از کتابخانه فراخوانی می کنیم. کلاس CommandHandler برای رسیدگی به command های تلگرام است.
command ها دستورهای تلگرام هستند که از طریق /، به صورت اختیاری توسط @ و نام ربات و /یا متن اضافی شروع می شوند. کنترل کننده لیستی را به متن تماس با نام CallbackContext.args اضافه می کند. این لیست شامل لیستی از رشته ها خواهد بود.
کلاس MessageHandler برای رسیدگی به پیام های تلگرام است.ممکن است حاوی متن، رسانه یا به روزرسانی وضعیت باشند.
disp.add_handler(telegram.ext.CommandHandler("start",start)) disp.add_handler(telegram.ext.CommandHandler("help",help)) disp.add_handler(telegram.ext.CommandHandler("content",content)) disp.add_handler(telegram.ext.CommandHandler("contact",contact)) disp.add_handler(telegram.ext.MessageHandler(telegram.ext.Filters.text,handle_message))
خط زیر به روزرسانی های polling از تلگرام را شروع می کند و خط آخر بلوک ها را تا زمانی که یکی از سیگنال ها دریافت شود و به روزرسانی را متوقف کند اجرا می شود.
updater.start_polling() updater.idle()
و تمام! این بات، یک بات ساده بود که با استفاده از پایتون ساخته شده است. اکنون شما به طور جامع با مراحل ساخت ربات تلگرام با پایتون آشنا شدید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.