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
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
You need to pass 2 params
bot.sendPhoto(chat_id, 'URL')
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')
sendPhoto requires at least two parameters; first one is target chat_id, and for second one photo you have three options:
- Pass file_id if the photo is already uploaded to telegram servers (recommended because you don't need to reupload it).
- If the photo is uploaded somewhere else, pass the full http url and telegram will download it (max photo size is 5MB atm).
- Post the file using multipart/form-data like you want to upload it via a browser (10MB max photo size this way).
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")