web-dev-qa-db-fra.com

Comment envoyer une photo sur un télégramme bot

je suis juste en train d'implémenter un bot simple qui devrait envoyer des photos et des vidéos à mon chat_id. Eh bien, j'utilise python, c'est le 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)

Dans la ligne bot.sendphoto Je voudrais insérer le chemin et le chat_id de mon image mais rien ne se passe.

Où ai-je tort?

merci

9
rollotommasi

J'ai aussi essayé d'envoyer depuis python en utilisant des requêtes. Peut-être que c'est une réponse tardive, mais en laissant ceci ici pour d'autres comme moi .. peut-être que ça viendra à l'usage .. J'ai réussi avec subprocess comme ceci:

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
Cipri

Vous devez passer 2 paramètres

bot.sendPhoto(chat_id, 'URL')
1
RuralGalaxy

vous pouvez utiliser les lignes suivantes:

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')
0
Majid A

sendPhoto nécessite au moins deux paramètres; le premier est la cible chat_id , et pour le second photo vous en avez trois options:

  1. Passez file_id si la photo est déjà téléchargée sur des serveurs de télégramme (recommandé car vous n'avez pas besoin de la télécharger à nouveau).
  2. Si la photo est téléchargée ailleurs, transmettez l'URL http complète et le télégramme la téléchargera (la taille maximale de la photo est de 5 Mo).
  3. Publiez le fichier à l'aide de plusieurs parties/données de formulaire comme si vous vouliez le télécharger via un navigateur (taille de photo maximale de 10 Mo de cette façon).
0
Arash Moosapour