@FNTSYhub

Как при нажатии кнопки в боте Телеграм отправлять все файлы из директории?

Есть Телеграм бот загруженный на сервер. На сервере в определённой директории хранятся файлы jpg.
Нужно, чтобы при нажатии в боте на кнопку Фото, в ленту чата отправлялись все файлы с расширением jpg. Фоток очень много. Делать в коде ссылку на каждую фотку - безумие.

Сейчас у меня так:

if message.text == "Фото":
bot.send_photo(message.chat.id, open("Ссылка на фотку1", 'rb'),
bot.send_photo(message.chat.id, open("Ссылка на фотку2", 'rb'),
bot.send_photo(message.chat.id, open("Ссылка на фотку3", 'rb'),
..... и т.д.

Мне таких ссылок нужно миллион сделать. Но это глупо. Можно как-то прописать ссылку к директории в целом? А не к каждому файлу отдельно.

Благодарю.
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Писал вслепую, должно работать вроде

import os

# допустим все фото лежат в текущей директории в папке photos
photos_folder = os.path.join(os.getcwd(), ‘photos’)

if message.text == ‘photo’:
    photos_to_send = []
    for file in os.listdir(photos_folder):
        if file.endswith(‘.jpg’): # можно убрать при желании
            photo_path = os.join(photos_folder, file)      
            photos_to_send.append(telebot.types.InputMediaPhoto(open(photo_path, ‘rb’)))
            if len(photos_to_send) == 10: # лимит на одно сообщение
                bot.send_media_group(message.chat.id, media=photos_to_send)
                photos_to_send.clear()
    # дослать остатки, которых меньше 10, если есть
    if photos_to_send:
        bot.send_media_group(message.chat.id, media=photos_to_send)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы