در این مقاله می خواهیم ربات تلگرامی ایجاد کنیم تا بتوانید با آن کار های مختلفی انجام دهید. با ما همراه باشید تا این آموزش را به همراه مراحل پله ای به شما آموزش دهیم. برای ایجاد ربات تلگرام قصد داریم از Python 3 و python-telegram-bot و public API RandomDog استفاده کنیم.
در پایان این آموزش شما دارای رباتی هستید که هر وقت می خواهید، می توانید تصویر یک گل را برای شما ارسال می کند.
ایجاد ربات تلگرام
1) یک Bot جدید در BotFather ایجاد کنید
اگر می خواهید در تلگرام ربات بسازید، قبل از استفاده باید ابتدا ربات خود را “register” کنید. هنگامی که ربات خود را “register” می کنیم، این نشانه را برای دسترسی به API تلگرام دریافت می کنیم.
به BotFather بروید (اگر آن را در دسکتاپ باز کنید، مطمئن شوید که برنامه Telegram را دارید)، سپس با ارسال newbot/، ربات جدید ایجاد کنید. مراحل لازم را تا زمانی که نام کاربری و نشان را برای ربات خود دریافت کردید، دنبال کنید. همچنین می توانید با دسترسی به این URL به ربات خود بروید: https://telegram.me/YOUR_BOT_USERNAME و نشانه شما باید به این شکل باشد.
704418931:AAEtcZ*************
2) کتابخانه را نصب کنید
از آنجا که قصد داریم از یک کتابخانه برای این آموزش استفاده کنیم، با استفاده از این دستور آن را نصب کنید.
pip3 install python-telegram-bot
اگر کتابخانه با موفقیت نصب شد به سراغ مراحل بعدی می رویم .
برنامه را بنویسید
بیایید اولین ربات خود را ایجاد کنیم. هنگام ارسال دستور bop/، این ربات باید تصویر گل را برگرداند. برای اینکه بتوانیم این کار را انجام دهیم، می توانیم از public API from RandomDog استفاده کنیم تا به ما در تولید تصاویر تصادفی از گل کمک کند.
شما می توانید برای تکرار، طبق فرمول زیر عمل کنید:
access the API -> get the image URL -> send the image
1) کتابخانه ها را وارد کنید
تمام کتابخانه های مورد نیاز خود را وارد کنید.
from telegram.ext import Updater, CommandHandler
import requests
import re
2) به API دسترسی پیدا کنید و URL تصویر را بدست آورید
بیایید یک تابع برای دریافت URL ایجاد کنیم. با استفاده از requests library، می توانیم به API دسترسی پیدا کرده و داده های json را بدست آوریم.
contents = requests.get('https://random.dog/woof.json').json
می توانید داده های json را با دسترسی به این URL بررسی کنید: https://random.dog/woof.json
چیزی شبیه به این را روی صفحه نمایش خود خواهید دید:
{“url":"https://random.dog/*****.JPG"}
از آنجا که ما به این پارامتر احتیاج داریم تا بتوانیم تصویر را ارسال کنیم، آدرس URL را دریافت کنید.
image_url = contents['url']
این کد را در تابعی بنام ()get_url قرار دهید.
def get_url():
contents = requests.get('https://random.dog/woof.json').json()
url = contents['url']
return url
3) ارسال تصویر
برای ارسال پیام / تصویر ما به دو پارامتر، URL تصویر و user ID گیرنده نیاز داریم.
ما می توانیم با تابع ()get_url، آدرس تصویر را بدست آوریم.
url = get_url()
شناسه گیرنده را با استفاده از کد زیر دریافت کنید:
chat_id = update.message.chat_id
پس از دریافت URL آدرس تصویر و شناسه گیرنده ، زمان آن است که پیامی را که یک تصویر است، ارسال کنید.
bot.send_photo(chat_id=chat_id, photo=url)
آن کد را در عملکردی به نام bop ببندید و مطمئن شوید که کد شما به این شکل ظاهر می شود:
def bop(bot, update):
url = get_url()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, photo=url)

4) برنامه اصلی
در آخر، برای اجرای برنامه، یک عملکرد دیگر به نام main ایجاد می کنیم. فراموش نکنید که YOUR_TOKEN را از طریق آموزش هایی که در این قسمت دادیم، تغییر دهید.
def main():
updater = Updater('YOUR_TOKEN')
dp = updater.dispatcher
dp.add_handler(CommandHandler('bop',bop))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
در پایان کد شما باید اینگونه باشد:
from telegram.ext import Updater, InlineQueryHandler, CommandHandler
import requests
import re
def get_url():
contents = requests.get('https://random.dog/woof.json').json()
url = contents['url']
return url
def bop(bot, update):
url = get_url()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, photo=url)
def main():
updater = Updater('YOUR_TOKEN')
dp = updater.dispatcher
dp.add_handler(CommandHandler('bop',bop))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
5) برنامه را اجرا کنید
اولین برنامه خود را تمام کردید. حال باید بررسی کنیم که کار می کند یا خیر. پرونده را ذخیره کنید، آن را main.py بنویسید، سپس با استفاده از این دستور آن را اجرا کنید.
python3 main.py
با دسترسی به این URL به ربات تلگرام خود بروید: https://telegram.me/YOUR_BOT_USERNAME. فرمان bop/ را ارسال کنید. اگر همه چیز به طور کامل اجرا شود، ربات تصویر یک گل را به طور رندم نشان می دهد.
Handling errors
حالا یک ربات دارید که هر زمان که بخواهید، تصویر یک گل را برای شما ارسال می کند.
API RandomDog نه تنها تصاویر، بلکه فیلم ها و GIF ها را نیز تولید می کند. اگر به API دسترسی پیدا کنیم و یک فیلم یا GIF دریافت کنیم، خطایی رخ داده است و ربات آن را برای شما ارسال نمی کند.
بیایید این مسئله را برطرف کنیم تا ربات فقط پیامی را با پیوست تصویر ارسال کند. اگر یک فیلم یا GIF بگیریم، تا زمانی که تصویری دریافت نکنیم، مجدداً API را صدا می کنیم.
1) پسوند پرونده را با استفاده از regex مطابقت دهید.
ما برای حل این مشکل قصد داریم از یک regex استفاده کنیم.
برای تمایز تصویر از فیلم یا GIF، می توانیم به پسوند پرونده نگاهی بیندازیم. ما فقط به قسمت آخر URL خود نیاز داریم.
https://random.dog/*****.JPG
ما باید ابتدا تعریف کنیم که پسوندهای پرونده در برنامه ما چگونه است.
allowed_extension = ['jpg','jpeg','png']
سپس از regex برای استخراج پسوند پرونده از URL استفاده کنید.
file_extension = re.search("([^.]*)$",url).group(1).lower()
با استفاده از آن کد، عملکردی به نام get_image_url () ایجاد کرده تا URL را تکرار کنید تا اینکه پسوند پرونده مورد نظر خود را بدست آورید (jpg ،jpeg ،png).
def get_image_url():
allowed_extension = ['jpg','jpeg','png']
file_extension = ''
while file_extension not in allowed_extension:
url = get_url()
file_extension = re.search("([^.]*)$",url).group(1).lower()
return url
2) کد خود را اصلاح کنید
اکنون برای قسمت آخر، خط ()url = get_url را در عملکرد ()bop با ()url = get_image_url جایگزین کنید و کد شما باید به شکل زیر باشد:
from telegram.ext import Updater, InlineQueryHandler, CommandHandler
import requests
import re
def get_url():
contents = requests.get('https://random.dog/woof.json').json()
url = contents['url']
return url
def get_image_url():
allowed_extension = ['jpg','jpeg','png']
file_extension = ''
while file_extension not in allowed_extension:
url = get_url()
file_extension = re.search("([^.]*)$",url).group(1).lower()
return url
def bop(bot, update):
url = get_image_url()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, photo=url)
def main():
updater = Updater('YOUR_TOKEN')
dp = updater.dispatcher
dp.add_handler(CommandHandler('bop',bop))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
ربات تلگرامی که ساخته اید آماده استفاده است. امیدواریم این مطلب برای شما مفید بوده باشد.
مقالات مرتبط
شما می توانید برای مشاهده مقالات مرتبط بر روی نام های زیر کلیک کنید:
1) راهنمای گام به گام برای افزایش اعضای کانال تلگرام
دیدگاهی بنویسید