Aiogram - отправка файлов
Есть код, хотелось бы чтобы бот отправлял файлы не отдельными сообщениями, а одним с прикрепленным текстом. Вот код для редактирования:
file1 = open(('http') + '.txt', 'rb')
await bot.send_document(chat_id, file1)
file2 = open(('socks4') + '.txt', 'rb')
await bot.send_document(chat_id, file2)
file3 = open(('socks5') + '.txt', 'rb')
await bot.send_document(chat_id, file3)
Если дополнительно объясните что да как, то цены вам не будет
Ответы (2 шт):
sendDocument
caption: Optional[str] - Заголовок к сообщению(подпись/прикреплённый текст), дает возможность отправить документ с текстовым сообщением.
await bot.send_document(chat_id = chat_id, document = file1, caption = "TEXT_MESSAGE")
sendMediaGroup
Используйте этот метод, чтобы отправить группу фотографий, видео, документов или аудио в виде альбома.
# Создать медиа группу
media = types.MediaGroup()
# Прикрепить/добавить файл, документ, аудио и тд.
media.attach_photo(types.InputFile('data/cat.jpg'), 'Cat!')
# Ещё файл - он так же может быть документом, аудио и тд.
media.attach_photo(types.InputFile('data/cats.jpg'), 'More cats!')
# Можно использовать URL ссылки на фото, документы и тд.
# Из документации - получить случайного кота:
media.attach_photo('http://lorempixel.com/400/200/cats/', 'Random cat.')
# ID файла тоже подойдет для добавления в медиа группу.
# media.attach_photo('<file_id>', 'cat-cat-cat.')
# Готово! Можно отправлять!
await message.send_media_group(chat_id = chat_id, media=media)
#caption - использовать это свойство нужно при добавлении нового файла, т.е. - attach_photo(file, caption = "TEXT")
UPD:
Вы должны использовать
sendMediaGroup, где вы можете указатьmediaполе с массивом фото / видео объектов, но хитрость заключается в том, чтобы установитьcaptionнужно сделать подпись только для первого элемента массива . В этом случае телеграмм покажет эту подпись под медиаконтентом.Если вы укажете подписи для более чем одного элемента, телеграмма покажет их только при нажатии на превью фото для каждого фото отдельно.
Добавь в start_polling skip_updates - чтобы пропускать те апдейты, которые были получены за время, когда бот был в офлайне - не обрабатывал в онлайн-режиме все апдейты. Т.к. бот в офлайне, скапливается куча апдейтов, которые нужно обработать.
Справка: dp = Dispatcher(BOT_TOKEN)
Таким образом, нужно написать:
executor.start_polling(dp, skip_updates=True)