小能豆

如何使用 Python 中的电报机器人发送一些文件

py

我正在尝试将我的代码结果(它们是图像)上传到带有 Telegram 机器人的群组中。

我尝试过:

import requests
import numpy as np

paths=np.array([])
for z in range(8):
    paths=np.append(paths,str(f"path\\{z}.jpg"))

url="https://api.telegram.org/bot<<my-bot-http-token>>/senddocument?chat_id=<<chat-id>>"
for path in paths:
    files={'document':open(path,'rb')}
    resp=requests.post(url,files=files)

它可以工作,但是它会单独发送文件,而我想对它们进行分组然后发送。


阅读 21

收藏
2025-01-02

共1个答案

小能豆

您正在使用该sendDocument方法,但是,对于分组文件/图像,您需要sendMediaGroup使用一个数组media


这里有一个可重现的最小示例,用于发送一组本地照片:

import json
import requests

chat_id = 1234567
TOKEN = '85916...the-rest-of-your-token'

data = {
    "chat_id": chat_id,
    "media": json.dumps([
        {"type": "photo", "media": "attach://photo1.png"},
        {"type": "photo", "media": "attach://photo2.png"}
    ])
}

files = {
    "photo1.png" : open("./photo1.png", 'rb'),
    "photo2.png" : open("./photo2.png", 'rb')
}

temp = requests.post("https://api.telegram.org/bot" + TOKEN + "/sendMediaGroup", data=data, files=files)

print(temp.json())
2025-01-02