Как при нажатии кнопки в боте Телеграм отправлять все файлы из директории?
Есть Телеграм бот загруженный на сервер. На сервере в определённой директории хранятся файлы 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'),
..... и т.д.
Мне таких ссылок нужно миллион сделать. Но это глупо. Можно как-то прописать ссылку к директории в целом? А не к каждому файлу отдельно.
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)
Hemul GM,
А, в этом смысле.
Правильно человек делает. Дал развёрнутый ответ. Теперь, взглянув полностью на код, я могу выстроить логическую цепочку. Что, как и почему. Это намного правильнее и лучше, чем когда на впопрос можно ли сделать то то?, отвечают в стиле девушек за барной стойкой: "Возможно". И всё, а там потом думай что это было.
Объяснить код? Вот пожалуйста. У меня, например, не было модуля OS. Я понятия о нём не имел. Благодаря человеку, что дал ответ, я вбил в гугл OS и о нём начинаю читать. Неправда ли это лучше, чем тот возможный ответ, который дали бы Вы, я предполагаю, в стиле девушки на барной стойке?
Все файлы, которые имеют расширение jpg будут автоматически посылаться в ленту, и не нужен теперь список из миллиона ссылок на фотки. Остальные штрихы тоже гуглю дабы понять что и как.
Это как разобрать кофеварку. Начинаешь понимать, что и как устроено внутри. Потом уже смогу сам собрать комбайн.
FNTSYhub, нет не сможешь. Знаешь почему? - Ты не можешь рассуждать самостоятельно.
Что тебе мешало написать в гугле "получение списка файлов в папке питон"? Ты бы получил инфу о библиотеке OS. И о некоторых её методах. В результате чего, сам бы получил список файлов. Узнал бы как получать расширение файлов. И т.д. И отправил бы всё сам. Получил бы бесценный опыт. А тут ты не "разобрал кофеварку". Её разобрали за тебя и показали.
Hemul GM, Для каждого свои способы и методы познания, кого-то нужно палкой бить, кого-то подталкивать. А мне удобно всё разобрать, и смотреть в целом. Неважно, я разобрал или мне разобрали. Главное итог и конечная цель.
Я уже во всём разобрался.
Код укоротил в два раза. Всё работает как конфетка.
if message.text == "Фото":
for file in os.listdir(Папка_с_фотками):
if file.endswith(".jpg"):
photo_path = os.path.join(Папка_с_фотками, file)
bot.send_photo(message.chat.id, open(photo_path, 'rb'))
Hemul GM,
Мля, ну потому что человек стремится к упрощению задачи. Такова его природа. Это же ясно как день. Именно поэтому мы придумываем пульты для телевизора и прочие стиральные машины.
Что значит "мешало написать в гугле?". Гугл - понятие растяжимое. Я бы точно также бы наткнулся на какой-нить форум, где коряво бы всё растолковали, и мне понадобилось бы вникнуть в суть может сутки, а так за час всё словил.
А ты почему на питоне пишешь и готовыми библиотеками пользуешься? Что тебе мешает начать свой путь с Z1 Конрада Цузе? Я отвечу, потому что это нерационально. Вот и всё.
FNTSYhub, не надо путать низкий уровень и основы. Ты не знаешь основ. Получение списка файлов - это не спец. задача, а рядовая, банальнейшая задача, которую должен уже давно знать.
Я не идиот и не пишу на питоне с помощью "библиотек", я вообще не использую питон, если не нужно что-то дописать.
Ты никогда не станешь программистом, если будешь и дальше так относиться к "изучению" языка.
Hemul GM,
Ты учителем моим решил заделаться? Нарожай себе детей и их учи программированию.
А я сам разберусь, что мне надо, а что нет. И для чего мне надо.
Утомил меня своим негативом и нравоучениями.
Hemul GM,
От ты неугомонный. Уверен, у тебя друзей нет, потому что ты их всех за*бал.
Ок, если ты такой крутой программист, покажи что ты сделал за свою жизнь? Что написал? Каким твоим продуктом я могу пользоваться? А где живёшь? Может ты продал Фейсбук своё приложение и купил роскошный дом в Майами? Или с мамой живёшь?
FNTSYhub, нет смысла мне тебе что-то здесь сейчас показывать или доказывать. Отвечаю я здесь тебе сейчас, потому что я целенаправленно сижу на этом сервисе и отвечаю на вопросы, в том числе на такие же глупые как твой. И их сотни каждый день уж поверь.
Посмотреть можешь мой github и не более. Надеюсь, хотя бы, как посмотреть ты сможешь сам разобраться.