как загрузить файлы из облака в телеграм бота (python)
делаю пет проект, суть такая: есть админка написаная на django, с нее администрируется телеграм бот и в перспективе будет добавлен сайт (поэтому для написания админки выбрал django, а не чего нибудь попроще), используется база данных postgresql и для хранения медиа файлов облачное хранилище на backblaze, сейчас я бьюсь над тем, чтобы при добавлении новых медиафайлов через админку файлы так же загружались в телеграмм бота и в бд созранялся ID этих файлов, чтобы каждый раз не качать с облака. Я пробовал зайти со стороны бота, и при отправке медиафайлов проверял есть ли его айди в БД и добавлял при необходимости, при загрузке с локального диска подход работал, но при загрузке из облака телеграм как то блокирует его и не получается загрузить (вот реализация)
@staticmethod
async def lesson_handler(message: types.Message):
async with session_maker() as session:
theme = message.text
lessons = await get_lesson_data(session, theme)
if lessons:
for lesson in lessons:
await message.answer(lesson["name"])
await message.answer(lesson["annotation"])
if lesson["audiofile_id"] and lesson["text_file_id"]:
# Если ID уже есть, отправляем их
await message.answer_audio(audio=lesson["audiofile_id"])
await message.answer_document(document=lesson["text_file_id"])
else:
# Отправляем файлы из Backblaze B2
audio_path = f"audio_lesson/{lesson['audio_lesson']}"
text_path = f"text_lesson/{lesson['text_lesson']}"
audio_msg = await MyRouter.send_file_to_telegram(
message.chat.id, audio_path, caption=lesson["name"]
)
text_msg = await MyRouter.send_file_to_telegram(
message.chat.id, text_path, caption=lesson["name"]
)
if audio_msg and text_msg:
# Сохранение file_id
audiofile_id = audio_msg.audio.file_id
text_file_id = text_msg.document.file_id
await add_file_id(
session, lesson["name"], audiofile_id, text_file_id
)
else:
await message.answer("Не удалось загрузить файлы.")
else:
await message.answer("Нет данных по этой теме.")
так же попробовал загружать файлы с помощью ORM Django но так же потерпел неудачу, использовал несколько подходов но ничего не получилось, там по большей части пользовался GPT и не смог сильно вникнуть (откровенно говоря, у меня еще маловато опыта). В общем возможно кто то уже делал, что то подобное или может у вас есть идеи как реализовать эту задачу используя другой подходу, слезно прошу подскажите, а то уже все голову сломал. З.Ы. проект не коммерческий поэтому важно чтоб реализация, хотя бы на первых порах была бесплатная, поэтому я и выбрал backblaze там есть обределенный бесплатный лимит