python 如何在电报机器人上发送照片

erhoui1w  于 2023-03-11  发布在  Python
关注(0)|答案(7)|浏览(215)

我只是实现了一个简单的机器人,它应该向我的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,但什么也没发生。
我哪里错了?
谢谢

1sbrub3j

1sbrub3j1#

如果您有本地映像路径:

bot.send_photo(chat_id, photo=open('path', 'rb'))

如果您有来自互联网的图像的URL:

bot.send_photo(chat_id, 'your URl')
py49o6xq

py49o6xq2#

只需使用***Requests***库就可以做到:

def send_photo(chat_id, file_opened):
    method = "sendPhoto"
    params = {'chat_id': chat_id}
    files = {'photo': file_opened}
    resp = requests.post(api_url + method, params, files=files)
    return resp

send_photo(chat_id, open(file_path, 'rb'))
iugsix8n

iugsix8n3#

在使用python-telegram-bot发送图像沿着标题时,我使用了以下命令:

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

eqoofvh94#

我也尝试过从python使用requests发送。也许这是个迟来的答案,但是把这个留给像我这样的人。也许它会派上用场。我成功地使用了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
f4t66c6m

f4t66c6m5#

这是用电报发送照片的完整代码:

import telepot
bot = telepot.Bot('______ YOUR TOKEN ________')

# here replace chat_id and test.jpg with real things
bot.sendPhoto(chat_id, photo=open('test.jpg', 'rb'))
zyfwsgd6

zyfwsgd66#

您需要传递2个参数

bot.sendPhoto(chat_id, 'URL')
wmvff8tz

wmvff8tz7#

sendPhoto至少需要两个参数;第一个是目标 chat_id,第二个是 photo,您有三个选项:
1.如果照片已经上传到电报服务器,则传递file_id(推荐,因为您不需要重新上传)。
1.如果照片是上传到其他地方,传递完整的http网址和电报将下载它(最大照片大小为5 MB atm)。
1.使用multipart/form-data发布文件,就像你想通过浏览器上传一样(这种方式最大照片大小为10 MB)。

相关问题