Как загружать большие файлы в телеграмм? Python

Рейтинг: 1Ответов: 0Опубликовано: 01.06.2023

Есть ≈ 2.5к архивов разного размера от 20кб до 2гб. Их надо загрузить в канал телеграмм(не ссылками на другие хранилища, облака и т.д.) Подумал что это можно будет сделать через бота(Тогда я ещё не знал про ограничения в 50мб).

Написал следующий код:

@dp.message_handler(commands=['send_files'])
async def send_files_handler(message: types.Message):
    files = os.listdir(DIRECTORY)
    for file in files:
        with open(os.path.join(DIRECTORY, file), 'rb') as f:
            try:
                # await bot.send_document(chat_id=CHAT_ID, document=f)
                await bot.send_document('CHENAL_ID', document=f)

Я пишу в лс боту команду /send_files бот начинает отправлять все файлы из указанного каталога. Попробовал запустить, увидел после загрузки нескольких файлов ошибки. написал блок отправки в try: и добавил функцию записи в txt путей до файлов которые не смогли отправиться

try:
                await bot.send_document('CHENAL_ID', document=f)
            except:
                r_f = open(r'D:\test\erorr.txt','a')
                r_f.write(str(f)+'\n')
                f.close()

Написал скрипт для переноса файлов из erorr.txt в отдельную папку что бы потом посмотреть что с ними не так. Понял что там по какой то причине оказались файлы до 50мб и их нет в канале. Повторил алгоритм ещё раз только в новом каталоге и с новым файлом erorr.txt. Снова какие то файлы загрузились, а какие то нет. И так ещё много-много раз.

Увидел статью на хабре там используется "Юзер-бот", он отправляет файлы в лс боту, а он в свою очередь отправляет файл в нужный чат.

В общем нужен рабочий способ для авто загрузки файлов в канал тг до 2гб.

Ответы

Ответов пока нет.