برنامه نویسی و IT

آموزش ساخت ربات تلگرام با استفاده از پایتون

ساخت ربات تلگرام با پایتون

در این بخش زیر سعی داریم ساخت ربات تلگرام با پایتون را یاد بگیریم. برای این کار موارد زیر را به کار خواهیم گرفت:

  1. Python 3
  2. Python-telegram-bot
  3. Public API Random Dog

قدم اول برای شروع 

ابتدا قبلا از نوشتن دستورات در برنامه ی پایتون باید token برای ربات مربوطه ساخته شود. برای ایجاد token باید به AIP تلگرام دسترسی داشته باشیم.

آموزش ساخت ربات تلگرام با استفاده از پایتون

ایجاد یک ربات جدید در BotFather

قبل از ساخت ربات باید فرایندثبت ان صورت گیرد .پس از ثبت ما به token دسترسی خواهیم داشت و با استفاده از آن می توان AIR تلگرام را به دست آورد. با فرستادن دستور /newbot در BotFather یک ربات جدید ایجاد کنید.

مراحل مربوطه راادامه دهید تا نام کاربری و token  مربوطه را دریافت کنید. با استفاده از می توانید به ربات خود دسترسی پیدا کنید:

https://telegram.me/YOUR_BOT_USERNAME

Token به دست آمده باید شبیه کد زیر باشد:

************* 704418931: AAEtcZ *************

نصب کتابخانه

با استفاده از دستور زیر کتابخانه ای برای این منظور تهیه می شود:

pip3 install python-telegram-bot

نوشتن برنامه

اینک سعی داریم اولین ربات را با استفاده از برنامه ی پایتون بسازیم . بعد از اجرای همه ی کد ها باید تصویر یک سگ بر روی مانیتور نمایش داده شود در صورتی که همه ی مراحل را به طور صحیح پیموده باشیم .

اهمیت کتابخانه

ابتدا همه ی کتابخانه های مربوطه ارد شود با استفاده از دستور زیر:

from telegram.ext import Updater, CommandHandler

import requests

import re

حال با استفاده از دستوز ریز به API  و URL  عکس دسترسی پیدا کنید :

contents = requests.get('https://random.dog/woof.json').json()

داده ی jason با استفاده از URL زیر را به دست آورید.

https://random.dog/woof.json

نتیجه باید کی شبیه به کد زیر باشد:

{“url":"https://random.dog/*****.JPG"}

حال image URL  را به دست اورید:

image_url = contents['url']

حال با استفاده از تابع  get_url() کد یاد شده را بپوشانید:

def get_url():

contents = requests.get('https://random.dog/woof.json').json()

ارسال تصویر

برای ارسال یک پیام یا تصویر ما به در ایتم وپارامتر نیاز داریم . برای عکس پارامترهای :

  • the image URL
  • the recipient’s ID

با صدا زدن  get_url() function. می توان به آدرس اورال عکس دست یافت:

url = get_url()

recipient’s ID را نیز با استفاده از دستور زیر می توان به دست  آورد :

chat_id = update.message.chat_id

حال که image URL and the recipient’s ID به دست امد ، زمان ان رسیده با دستور زیر عکس مربوطه ارسال شود:

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)

برنامه ی اصلی

حال تابعی به اسم main را ایجاد کنید تا برنامه ی مربوطه اجرا شود . فرموش نکنید تاکن تولید شده باید بات اکن قبلی جایگزین شود :

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()

اجرا کردن برنامه

اینک ساخت ربات تلگرام در پایتون به اتمام رسیده است . حال  باید کارایی آن بررسی شود. نام آن را  main.py  سیو کنید و دستور زیر را اجرا کنید:

python3 main.py

با نوشتن آدرس https://telegram.me/YOUR_BOT_USERNAME.  به ربات تلگرامی خود دسترسی پیدا کنید و دستور  /bopرا ارسال کنید. حال اگر عکس سگی بر روی ماتیتور ایجاد شود، همه ی مراحل با موفقیت پیموده شده است. در کنار این مقاله نگاهی به برنامه نویسی اندروید با پایتون نیز خواهیم داشت.

اجرا کردن برنامه

برطرف ساختن خطاها

با استفاده از این روش و کدهای یاد شده در مرحله ی بالا توانسته اید باتی را بسازید که هرزمان که بخواهید عکس های با مزه ای از سگ ها را برای شما ارسال خواهد کرد. با استفاده از آن نه تنها تصویری از سگ های با مزه خواهید داشت ، بلکه فیلم و گیفت های مختلفی از آن ها  نیز در دسترس شما است.

حال سعی داریم با اندکی تغییرات دیگر به همراه تصور ارسالی بتوانیم متنی نیز بنویسیم.تا اینجا که مطالعه داشته اید مطلب آموزش یادگیری ماشین لرنینگ با پایتون را نیز به شما پیشنهاد می کنیم.

برای حل این مشکل  از regex استفاده خواهیم کرد.  برای اینکه بتوانیم بین عکس ، فیلم و گیف های موجود ، تمایز قائل شویم بخش نهایی اورال مربوطه را در نظر می گیریم :

https://random.dog/*****.JPG

فایل های مربوطه را مشخص کرده  یا به عبارت بهتر نامگذاری می کنیم:

allowed_extension = ['jpg','jpeg','png']

حال regex را به کار می بریم تا فال مربوطه را از اورال موجود استخراج کنیم .

file_extension = re.search("([^.]*)$",url).group(1).lower()

با استفاده از کد بالا تابعی تحت عنوان get_image_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

تغییر کد مربوطه

حال در مرحله ی آخر 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()

اینک همه چیز به خوبی اجرا خواهد شد. حال شما یک ربات تلگرام را بااستفاده از برنامه ی پایتون ساخته اید .

اهمیت ساخت ربات تلگرام با پایتون

پیام  رسان تلگرام بدون تردیدی در سال های اخیر با توجه به داشتن مزیتهای فوق العاده توانسته است جایگاه ویژگی را کسب نید و نسبت به سایر برنامه های هم نوع خود از توجه ویژه ای برخوردار باشد.

به همین دلیل سازندگان این برنامه سعی دارند با ارتقا دادن برخی از ویژگی های آن کارایی  و استفاده ی آن را افزایش داده و از محبوبیت ویژه ای بهره مند شوند. وجود گزینه ی بات یا ربات تلگرامی در تلگرام نیز ان را به طور کافی از سایر برنامه ها مجزا ساخته است.

روش دنبال شده در بخش قبلی به ما کمک می کند با استفاده از برنامه ی پایتون بتوانیم ربات تلگرام اساخته و از ان بهره مند شویم. باهم نگاهی به مقاله ی آموزش علم داده (Data Science) با پایتون نیز داریم.

بات ها یک حساب کاربر خودکار بوده که به کاربر فرصت ی دهد کارهای جالبی انجام دهد به عنوان مثال زمانی که با استفاده از این برنامه با دوستان خود در ارتباط هستید می توانید به آسانی ویدیوها و عکس های مختلف  را با دوستان خود به اشتراک گذارید.

اهمیت ساخت ربات تلگرام با پایتون

البته بدون استفاده از آن ها روش های دیگری نیز برای اشتراک گذاری انواع عکس ها و فیلم ها است به عنوان  بون استفاه از بات تلگرامی مجبور هستید مراحل زیر را انجام دهید:

  • وب‌سایت یوتیوب را در یک مرورگر وب باز کرده و بهبخش جستجو روید
  •  ویدئویی که می‌خواهید ان را با دوستانتان اشتراک بگذارید، پیدا کنید
  • گزینه share via… را انتخاب کرده  و  با روش های مختلف اشتراک گذاری مواجه شوید
  • حال به تلگرام برگشته  و لینک  مربوطه را به اشتراک بگذارید.

عدم استفاده از ربات تلگرام

اگر چه این روش برای همه ی ما عادی است و عادت کرده ایم در بسیاری از مواقع مراحل یاد شده برای انتشار عکس و ویدیو ها در تلگرام را انجام دهیم ولی در برخی از مواقع حتی ممکن است مراحل یاد شده نیز با موفقیت صورت نگیرد.

ویدیو پییشنهادی : آموزش پایتون جادی
آموزش پایتون جادی

به عنوان مثال زمانی که سرعت اینترنت پایین است در این صورت امکان وصل شده به فیلتر شکن برای ورود به یوتیوپ برای شما فراهم نیست . حال با استفاده از بات تلگرامی به آسانی در فضای تلگرام پیام های دلخواه را انتشار دهید . در این صورت کافی است مراحل زیر را دنبال کنید:

  1.  هنگام داشتن ارتباط با افراد زمانی که  درون اپلیکیشن تلگرام هستید.
  2.  کلمه vid@ را به همراه ویدئویی که انتخاب کرده اید  می توانید به اشتراک بگذارید
  3.  با زدن دکمه ارسال فیلم مربوطه در چت تلگرامی منتشر می شود

بات تلگرام

تردیدی نیست که روش دوم بسیار آسانتر می باشد ، و با استفاده از بات تلگرام می توانید در زمان کمتر پیام های مربوطه را انتقال دهید. برای ساخت بات تلگرام با استفاده از پایتون در ابتدا باید یک حساب ویژه در تلگرام داشته باشید.

زمانی که تلگرام را نصب کردید و یک حساب کاربری جدا ایجاد کردید در بخش جستجو دنبال کلمه ی botfather  باشید . بعد از پیدا کن چت را در آن آغازکرده و دستور newbot/ را در ابتدا ارسال کنید ، مراحل بعدی به صورت خودکار تحت این بخش در اختیار شما قرار می گیرد. حال که مراحل لازم را در این بخش به اتمام رساندید موارد زیر را خواهید داشت:

  •  توکن ویژه  شما
  •  URL برای API تلگرام
  •  لینکی برای  بات‌های تلگرام

موارد یاد شده نقطه شروع برای بهره مندی از بات تلگرامی است. در این مرحله بات تلگرامی ایجاد شده است ولی هنوز ما فرصت بهره مندی از آن را نداریم.

عدم استفاده از ربات تلگرام

برنامه ی پایتون

پایتون از جمله زبان های برنامه نویسی ساده و در عین حال قدرتمند است که ما را قادر ساخته است بتوانیم با طراحی کدهای ویژه ، قدرت و کارایی نرم افزار های خود را ارتقا دهیم . امروزه از برنامه ی پایتون برای :

  • علم داده‌ها،
  • یادگیری ماشینی
  • خودکارسازی سامانه‌ها
  • توسعه وب

واسط‌های برنامه‌نویسی به طور وسیع استفاده می شود.

روش دیگر برای ساخت ربات تلگرام با پایتون

ابتدا باید یک فضای مجازی ایجاد شود

$ python -m venv botenv/

حال با استفاده از دستور زیر virtualenv را فعال کنید

$ source botenv/bin/activate

کتابخانه ی ما به موارد زیر نیاز دارد

می توانیم با استفاده از دستور زیر آن ها نصب کنیم :

(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__)

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)




   return 'ok'







@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)




   return 'ok'




@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 تشخیص دهد کدام یک از کتابخانه ها به کار می رود فایل requirements.txt  استفاده می کنیم . برای تولید فایل مربوطه دستور زیر را در نظر بگیرید :

pip freeze > requirements.txt

حال با استفاده از Procfile مشخص کنید که نرم افزار مربوطه از کجا شروع به فعالیت کند. Procfile را با استفاده از دستور زیر بسازید:

web: gunicorn app:app

با افزودن گزینه ی  .gitignore دیگر نیازی به بروز رسانی آن نخواهید داشت.

ویدیو پییشنهادی : آموزش برنامه نویسی پایتون
آموزش برنامه نویسی پایتون

برای  Deploy ساختن،  نیز مراحل زیر را ادامه دهید :

$ heroku login

در صورتی که در بخش waiting for login با مشکل مواجه شدید ، دستور زیر را به کار گیرید:

$ heroku login -i




waiting for login  را با دستور زیر نصب کنید :

$ git init

$ heroku git:remote -a {heroku-project-name}

حال نرم افزار را Deploy کنید:

$ 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.

حال بات تلگرام مربوطه را دارید و می توانید با اضافه کردن برخی از موارد مثل گزینه typing  بات تلگرامی خود را کاربردی تر کنید.

بات تلگرام

گزینه ی نوشتن به همره عکس های ارسالی ، طیق دستورات زیر به دست می آید.

با استفاده از تابع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)

باصدا زدن تابع respond() می توانید لاگیک مربوطه را از سایر موارد به راحتی جدا کرده و از این طریق  AI bot را بسازید:

├── 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!"

حال آن را در  app.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)

حال که مراحل مختلف ساخت ربات تلگرام با پایتون را فرا گرفته اید بهتر است با داشتن بات های مخصوص هنگام استفاده از تلگرام به آسانی پیام های خود را منتقل کنید .

سعید هابطی

چند سالی میشه که در زمینه سئو و دیجیتال مارکتینگ در حال فعالیت هستم. به موسیقی و فلسفه علاقه ی خاصی دارم و بیشتر زمان رو صرف مطالعه و نوازندگی می کنم.

نوشته های مشابه

‫45 دیدگاه ها

  1. سلام
    ممنون بابت مطالب
    من کد رو نوشتم و اجرا میکنم بدون ایراد
    ولی تو ربات هیچ واکنشی نشون نمیده هر چی استارت بزنی هر کاری کنی چیزی نمیاره چیکار کنم؟
    ممنون میشم اگه راهنمایی کنید.

  2. سلام چطور میشه رباتی ساخت که تشخیص بده یکنفر توی چنل عضو هست یا نه؟
    خیلی دنبالش گشتم و پیدا نکردم اگر شما میدونید لطفا کمکم کنید

    1. سلام وقتتون بخیر
      برای سوالی که مطرح کردین می تونین به لینک زیر مراجعه نمایید.

      https: //stackoverflow.com/questions/33844290/how-to-get-telegram-channel-users-list-with-telegram-bot-api

    1. سلام
      اگر منظور شما کار کردن ربات در زمان هایی هست که به طور مثال لپ تاپ شما خاموشه و یا کد شما به صورت دستی اجرا نشده است، نیاز است تا آن را بر روی سروری قرار دهید و طبق زمان بندی مشخص به آن بگویید که چه زمانی فعال شود. یکی از پکیج های خوبی که در این زمینه استفاده می شود سلری (celery) می باشد. در این لینک میتونید داکیومنت آن را مشاهده کنید. https: //docs.celeryproject.org/en/stable/index.html
      البته این یک شیوه است که برای وب اسکرپینگ و یا در سایت و ارسال ایمیل و این جور موارد استفاده میشه و پکیج قدرتمندی هست و استفاده از آن هم ساده است.

  3. سلام وقت شما بخیر
    یک replykeyboardmarkup ساختم..با کلمات فارسی…میخام حالا مثلا کلمه ی “ورود” که زده شد….بره یه پیامی رو ارسال کنه

    اما تو پایتون درست ecode نمیشه…
    یعنی اگه تکست کلمات کیبورد رو انگلیسی بذارم…خوب عمل میکنه…
    اما اگه فارسی بذارم درست عمل نمیکنه…

    چجوری این مسئله رو حل کنم؟

  4. سلام اول یکبار با pip دسور رو زدم داشت نصب میشد گفت pip رو ارتقا بده ارتقا دادم بعدش دوباره زدم و اینجوری شد C:\Users\TakComputer>pip3 install python-telegram-bot
    Requirement already satisfied: python-telegram-bot in c:\users\takcomputer\python3\lib\site-packages (12.7)
    Requirement already satisfied: cryptography in c:\users\takcomputer\python3\lib\site-packages (from python-telegram-bot) (2.9.2)
    Requirement already satisfied: tornado>=5.1 in c:\users\takcomputer\python3\lib\site-packages (from python-telegram-bot) (6.0.4)
    Requirement already satisfied: future>=0.16.0 in c:\users\takcomputer\python3\lib\site-packages (from python-telegram-bot) (0.18.2)
    Requirement already satisfied: decorator>=4.4.0 in c:\users\takcomputer\python3\lib\site-packages (from python-telegram-bot) (4.4.2)
    Requirement already satisfied: certifi in c:\users\takcomputer\python3\lib\site-packages (from python-telegram-bot) (2020.4.5.1)
    Requirement already satisfied: six>=1.4.1 in c:\users\takcomputer\python3\lib\site-packages (from cryptography->python-telegram-bot) (1.14.0)
    Requirement already satisfied: cffi!=1.11.3,>=1.8 in c:\users\takcomputer\python3\lib\site-packages (from cryptography->python-telegram-bot) (1.14.0)
    Requirement already satisfied: pycparser in c:\users\takcomputer\python3\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography->python-telegram-bot) (2.20)
    Could not build wheels for python-telegram-bot, since package ‘wheel’ is not installed.
    Could not build wheels for cryptography, since package ‘wheel’ is not installed.
    Could not build wheels for tornado, since package ‘wheel’ is not installed.
    Could not build wheels for future, since package ‘wheel’ is not installed.
    Could not build wheels for decorator, since package ‘wheel’ is not installed.
    Could not build wheels for certifi, since package ‘wheel’ is not installed.
    Could not build wheels for six, since package ‘wheel’ is not installed.
    Could not build wheels for cffi, since package ‘wheel’ is not installed.
    Could not build wheels for pycparser, since package ‘wheel’ is not installed.

    مشکل چیه؟

    پایتون 3.8.2

  5. با تشکر از نویسنده و مکتب خونه اموزش خیلی افتضاحی بود اخه کی دیگه اینطوری اموزش قرار می ده اونم مکتب خونه که به اموزش های ویدئوییش معروفه

    1. سلام
      ممنون از نظرتون. مکتوب مجله ای برای ارائه ی محتوای متنی و آموزشی هست. محتوای ویدئویی رو می تونید از وب سایت مکتب خونه دنبال کنید.

      1. سلام خسته نباشیذ
        این اروری هست که میده
        File “main.py”, line 34
        Updater = Updater(‘YOUR_TOKEN’)
        ^
        IndentationError: expected an indented block

        1. سلام
          این ارور به خاطر فاصله هستش ، داخل پایتون فاصله هارو باید رعایت کرد مثلا تو حلقه for خطوط بعد از حلقه یک تب جلوتر از for تعریف می شوند، یه جا داخل فاصله گذاری اشتباه کردین

  6. سلام برشما،یک سوال برام پیش اومد که اگر ابتدا ویرایش های اولیه رو در یک ربات مخصوص به این کار در تلگرام انجام دهیم باز می توان از پایتون و پی اچ پی برای ویرایش ربات استفاده کرد؟

  7. سلام . ببخشید این آموزش هاتون برای ساخت اون رباتاس که کنار عکس پروفایلشون نقطه ی سیاه آفلاین دارن؟ من اگه بخوام اکانت اصلی خودمو یعنی اکانتی که شماره ی خودم روشه رو به ربات تبدیل کنم. چیکار باید بکنم ؟ آموزشی چیزی در این زمینه هست؟ میخوام یه برنامه ی پایتون بنویسم که وقتی خودم پشت سیستم نیستم و سیستمم آنلاینه برنامه رو بذارم رو اجرا و اکانت خودم دستورات برنامه رو اجرا کنه. لطفا راهنمایی کنید ممنون.

    1. سلام
      منظورتون از اکانت کجاست دوست عزیز؟
      اره امکان نوشتن همچین برنامه ای با پایتون هست. اگر منظورتون از برنامه و اجرای دستورات در مواردی مثل ورود به سایت و ثبت درخواست و گرفتن اطلاعات می باشد، شما می توانید از کتابخانه های مختلف reqeust، scrapy و یا selenium استفاده کنید.
      اگر مشخص کنید در کجا قصد استفاده دارید، راهنمایی بهتر می‌توانم شما رو راهنمایی بکنم.
      در کل اینکه بله با پایتون امکان نوشتن برنامه هایی که به صورت اتوماتیک فعالیت هایی را در فضای افلاین و یا انلاین انجام دهند را خواهید داشت.

  8. سلام ببخشید چطور میتونم رباتی بسازم ک تا زمانی ک کاربر داخل چنلم عضو نشده نتونه از ربات استفاده کنه کل گوگل گشتم نبود لطفا بگین ک با telegram-bot امکان پذیره اگ هست یا نیست روش بگین ممنون میشم

  9. سلام خسته نباشین 🙂
    من این کتابخونه pip3 install python-telegram-bot رو نصب کردم وکامل نصب شد
    ولی موقع اجرا تو CMD این ارور رو میده
    Traceback (most recent call last):
    File “bot.py”, line 1, in
    from telegram.ext import Updater , CommandHandler
    ModuleNotFoundError: No module named ‘telegram.ext’

    حتی برنامه پایتون رو حذف کردم و از اول نصب کردم بازم نشد ، نسخه اش هم پایتون 3.7 هس

    1. ممنون از شما
      با هر زبانی میتونید بنویسید ولی شاخص ترینشون پایتون هستش و میشه گفت راحت ترینش. اکثر صرافی ها هم قابلیت api برای اتصال را دارند.

  10. سلام خسته نباشید. بنده برای لایبرری python-telegram-bot استفاده میکنم و به ارور No module named ‘telegram.ext’; ‘telegram’ is not a package بر میخورم. pip بنده هم آخرین نسخه هستش. برای رفع این مشکل شما راه حلی دارید؟

    1. سلام دوست عزیز
      اسم فایلی که ساختید و قصد دارید با آن ربات را بنوسید، telegram گذاشتید؟ به نظر میاد که از اسم پکیج مورد نظر مشابه برای کار دیگه ای مثل اسم کلاس و یا اسم فایلتون استفاده کرده باشید.

  11. برای منم ارور فیلتر داره
    با وی پی ان کامپیوتر باز کردم بازم نشد
    راه حلی به نظرتون هست؟
    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(‘xxxx’)
    dp = updater.dispatcher
    dp.add_handler(CommandHandler(‘bop’, bop))
    updater.start_polling()
    updater.idle()

    main()
    همین کدی که بهد دادین رو زدم برای مثال

    1. اینم ارور
      telegram.error.NetworkError: urllib3 HTTPError HTTPSConnectionPool(host=’api.telegram.org’, port=443): Max retries exceeded with url: /botxxxx/getMe (Caused by ConnectTimeoutError(, ‘Connection to api.telegram.org timed out. (connect timeout=5.0)’))

  12. سلام
    برای من این ‘heroku’ does not appear to be a git repository
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists. رو می دهد
    البته ندونستم web: gunicorn app:app این رو باید کجا بنویسم

  13. سلام چطور میشه یه ربات برای گروه ها بسازیم که مثلا هرکی اومد خوش امد بگه یا بعضی متن هارو حذف کنه و غیره؟

  14. سلام
    من یک برنامه نوشتم با پایتون که عکس رو بگیره و بخشی از عکس رو تحویل بده
    میخواستم ببینم بخوام ربات تلگرامیشو درست کنم که عکس رو به ربات بدم و اون تیکه رو تو تلگرام خروجی بده از همین روش باید استفاده کنم ؟ اگه میشه برای رباتش راهنمایی بفرمایید

  15. با سلام
    من مشکل برقراری ارتباط با api تلگرام رو دارم و کد زیر رو میگیرم. راهی وجود داره؟
    Traceback (most recent call last):
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connection.py”, line 141, in _new_conn
    (self.host, self.port), self.timeout, **extra_kw)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\util\connection.py”, line 83, in create_connection
    raise err
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\util\connection.py”, line 73, in create_connection
    sock.connect(sa)
    socket.timeout: timed out

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 617, in urlopen
    chunked=chunked)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 360, in _make_request
    self._validate_conn(conn)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 857, in _validate_conn
    super(HTTPSConnectionPool, self)._validate_conn(conn)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 289, in _validate_conn
    conn.connect()
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connection.py”, line 284, in connect
    conn = self._new_conn()
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connection.py”, line 146, in _new_conn
    (self.host, self.timeout))
    telegram.vendor.ptb_urllib3.urllib3.exceptions.ConnectTimeoutError: (, ‘Connection to api.telegram.org timed out. (connect timeout=5.0)’)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\utils\request.py”, line 252, in _request_wrapper
    resp = self._con_pool.request(*args, **kwargs)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\request.py”, line 70, in request
    **urlopen_kw)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\request.py”, line 148, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\poolmanager.py”, line 244, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 695, in urlopen
    **response_kw)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 695, in urlopen
    **response_kw)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 695, in urlopen
    **response_kw)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\connectionpool.py”, line 666, in urlopen
    _stacktrace=sys.exc_info()[2])
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\vendor\ptb_urllib3\urllib3\util\retry.py”, line 376, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
    telegram.vendor.ptb_urllib3.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=’api.telegram.org’, port=443): Max retries exceeded with url: /bot1601725162:AAHwGO8DejS0cfaD5oRE80teaEzb6GWnnfM/getMe (Caused by ConnectTimeoutError(, ‘Connection to api.telegram.org timed out. (connect timeout=5.0)’))

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
    File “run.py”, line 11, in
    updater.start_polling()
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\ext\updater.py”, line 305, in start_polling
    self._init_thread(self.dispatcher.start, “dispatcher”, ready=dispatcher_ready)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\ext\updater.py”, line 225, in _init_thread
    name=f”Bot:{self.bot.id}:{name}”,
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\bot.py”, line 331, in id
    return self.bot.id
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\bot.py”, line 324, in bot
    self._bot = self.get_me()
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\bot.py”, line 127, in decorator
    result = func(*args, **kwargs)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\bot.py”, line 408, in get_me
    result = self._post(‘getMe’, timeout=timeout, api_kwargs=api_kwargs)
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\bot.py”, line 260, in _post
    f'{self.base_url}/{endpoint}’, data=data, timeout=effective_timeout
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\utils\request.py”, line 354, in post
    **urlopen_kwargs,
    File “D:\Programming_Trainings\Python_Training\Telegram_Bot_Python\venv\lib\site-packages\telegram\utils\request.py”, line 258, in _request_wrapper
    raise NetworkError(f’urllib3 HTTPError {error}’) from error
    telegram.error.NetworkError: urllib3 HTTPError HTTPSConnectionPool(host=’api.telegram.org’, port=443): Max retries exceeded with url: /bot1601725162:AAHwGO8DejS0cfaD5oRE80teaEzb6GWnnfM/getMe (Caused by ConnectTimeoutError(, ‘Connection to api.telegram.org timed out. (connect timeout=5.0)’))

  16. سلام وقت بخیر
    راهنمایی هست برای اینکه ببینم چجوری باید ی ربات بنویسم که چند سایت و کلید واژه رو بهش بدم و هر موقع توی اون سایتها اخباری با این کلیدواژه ها منتشر شد بفرسته به ربات؟

    تشکر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا