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

5条回答
够拽才男人
2楼-- · 2020-06-16 01:43

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')
查看更多
祖国的老花朵
3楼-- · 2020-06-16 01:49

You need to pass 2 params

bot.sendPhoto(chat_id, 'URL')
查看更多
叛逆
4楼-- · 2020-06-16 01:53

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
查看更多
Lonely孤独者°
5楼-- · 2020-06-16 01:56

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")
查看更多
家丑人穷心不美
6楼-- · 2020-06-16 01:57

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).
查看更多
登录 后发表回答