How to send photo on telegram bot

2020-06-16 01:14发布

问题:

i'm just implementing a simple bot who should send some photos and videos to my chat_id. Well, i'm using python, this is the script

import sys
import time
import random
import datetime
import telepot

def handle(msg):
    chat_id = msg['chat']['id']
    command = msg['text']

    print 'Got command: %s' % command

    if command == 'command1':
        bot.sendMessage(chat_id, *******)
    elif command == 'command2':
        bot.sendMessage(chat_id, ******)
    elif command == 'photo':
        bot.sendPhoto(...)

bot = telepot.Bot('*** INSERT TOKEN ***')
bot.message_loop(handle)
print 'I am listening ...'

while 1:
    time.sleep(10)

In the line bot.sendphoto I would insert the path and the chat_id of my image but nothing happens.

Where am I wrong?

thanks

回答1:

I've tried also sending from python using requests. Maybe it's late answer, but leaving this here for others like me.. maybe it'll come to use.. I succeded with subprocess like so:

def send_image(botToken, imageFile, chat_id):
        command = 'curl -s -X POST https://api.telegram.org/bot' + botToken + '/sendPhoto -F chat_id=' + chat_id + " -F photo=@" + imageFile
        subprocess.call(command.split(' '))
        return


回答2:

You need to pass 2 params

bot.sendPhoto(chat_id, 'URL')


回答3:

you can use following lines:

bot.send_photo(chat_id, photo=open('path', 'rb'))
# That path is local path image or use following line to use url from internet
bot.send_photo(chat_id, 'your URl')


回答4:

sendPhoto requires at least two parameters; first one is target chat_id, and for second one photo you have three options:

  1. Pass file_id if the photo is already uploaded to telegram servers (recommended because you don't need to reupload it).
  2. If the photo is uploaded somewhere else, pass the full http url and telegram will download it (max photo size is 5MB atm).
  3. Post the file using multipart/form-data like you want to upload it via a browser (10MB max photo size this way).


回答5:

I have used the following command while using python-telegram-bot to send the image along with a caption:

 context.bot.sendPhoto(chat_id=chat_id, photo=
"url_of_image", caption="This is the test photo caption")