Как сделать чтобы бот каждый раз не скачивал изображение, а отдавал из своих медиа?

Привет пишу бота для телеги на aiogram парсер каждую неделю будет скачивать нужный мне календарик.

Отдает календарь

@dp.message_handler(commands=['calend'])
async def calendar(message: types.Message):
    await bot.send_photo(chat_id=message.chat.id, photo=open('1.png', 'rb'))

Вот этот хендлер отдает скаченый календарь, есть ли возможность сделать так чтобы каждый раз не было загрузки, чтобы бот не забивал свое медиа а выгружал фотку из него?


Ответы (1 шт):

Автор решения: RitinaADM

У файлов в телеграмме есть так называемый file_id Когда вы отправляете боту допустим фото то тг назначает файлу свой ид которым вы будете оперировать в будущем подставляя его туда куда вам нужно, это снизит нагрузку на сервера телеграмм и даст возможность хэшировать медиа. 1 раз загрузил с интернета а дальше эта фотка будет подгружаться из памяти.

Я рекомендую вам сделать базу данных и там хранить эти данные.

file_id = 'ifhcqwei8hfoiqwherg21yofhiu37w2y9rf8h2p3hrtfo8'
@dp.message_handler(commands=['calend'])
async def calendar(message: types.Message):
    sent = await bot.send_photo(chat_id=message.chat.id, photo=file_id)
    
→ Ссылка