@DeciPaliz

Telegram API: Как отправить несколько изображений в одном сообщении?

(Желательно, чтобы речь шла именно о Python модуле, но можно и через HTTP запрос)

В общем, суть такова: нужно отправить несколько изображений в одном сообщении. Из всех Telegram Bot API, что я прочитал, рассказывалось про отправление только одного изображения, а вот людям надо несколько. Возможно ли такое вообще? Может, я зря спрашиваю? :)

(подозрительно, что ImageBot отправляет только по одному изображению на запрос, поэтому спрашиваю)
  • Вопрос задан
  • 32166 просмотров
Решения вопроса 1
Defman21
@Defman21
Telegram подобное не поддерживает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Zempik
@Zempik
๏̯͡๏
Теперь telegrap api такое поддерживает. Метод называется sendMediaGroup.
Посмотрите в документации https://core.telegram.org/bots/api#sendmediagroup
Причем можно отправлять смешанные файлы (Фото и видео)
Ответ написан
Комментировать
@Byrger
Разработчик ПО для платежных систем
Если очень надо:
1 - За архивировать и отдать архив
2 - Склеить изображения в одно
Ответ написан
@AzatKhafizof
Отправит все что в папке temp
TOKEN = "1234646854fdghdfhfghfghssfhhgh"

def send_group_img(chat_id, text):
    temp_files_list = list()
    media = list()
    files = dict()
    for filename in os.listdir("temp"):
        temp_files_list.append(f'{os.getcwd()}\\temp\\{filename}')
    for f in enumerate(temp_files_list):
        files[f"random-name-{f[0]}"] = open(f[1], "rb")
        if f[0] == 0:
            media.append({"type": "photo",
                          "media": f"attach://random-name-{f[0]}",
                          "caption": text}
                         )
        else:
            media.append({"type": "photo",
                          "media": f"attach://random-name-{f[0]}"})
    params = {
        "chat_id": chat_id, "media": str(media).replace("'", '"')}
    request_url = "https://api.telegram.org/bot" + TOKEN + "/sendMediaGroup"
    result = requests.post(request_url, params=params, files=files)
    if result.status_code == 200:
        return True
    else:
        return False
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы