web-dev-qa-db-ja.com

電報ボットで写真を送信する方法

いくつかの写真とビデオを私のchat_idに送信する必要がある単純なボットを実装しています。まあ、私はpythonを使っています、これはスクリプトです

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)

bot.sendphotoに画像のパスとchat_idを挿入しますが、何も起こりません。

どこが間違っているのですか?

ありがとう

9
rollotommasi

私はpythonからのリクエストを使用して送信も試みました。多分それは遅い答えですが、これを私のような他の人のためにここに残す..多分それは使用されるようになります..私はsubprocessのように:

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

2つのパラメーターを渡す必要があります

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

次の行を使用できます。

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 には少なくとも2つのパラメータが必要です。最初のものはターゲットchat_idで、2番目のものphotoには3つありますオプション:

  1. 渡す file_id 写真がすでに電報サーバーにアップロードされている場合(再アップロードする必要がないため推奨されます)。
  2. 写真が別の場所にアップロードされている場合は、完全なhttp URLを渡すと、電報によってダウンロードされます(写真の最大サイズは5MB atm)。
  3. ブラウザ経由でアップロードしたいように、multipart/form-dataを使用してファイルを投稿します(この方法で最大10MBの写真サイズ)。
0
Arash Moosapour