Как загружать большие файлы в телеграмм? Python
Есть ≈ 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гб.