Всем привет.
Пишу телеграм бота. бот должен получать фотографии и сохранять file_id этих фотографий, столкнулся с проблемой когда высылают больше 1 фотографии file_id у всех одинаковый и в итоге когда надо переслать например 5 фотографий то он пересылает только первую 5 раз если же само сообщение пересылать получается тоже самое. помогите пожалуйста
@dp.message_handler(commands=['start', 'help'])
async def start_com(message: types.Message):
await bot.send_message(message.from_user.id,
"Hello it's cammiles galley bot you need to type hashtag and i will sen ypu photos from camilles libray")
@dp.message_handler(lambda message: message.chat.id == GALLERY_ID and (message.caption and "#" in message.caption),
content_types='photo')
async def get_img(message):
"""
сохраняет file_id чтобы в будущем пересылать фотографии
"""
# making dict where keys is hashtags and values is file ids
for each in message.photo:
if message.caption in file_ids.keys():
file_ids[message.caption].append(each['file__id'])
else:
file_ids[message.caption] = [each['file__id']]
write_db(file_ids) # writing in data base
file_ids.clear()
@dp.message_handler(lambda message: message.text and "#" in message.text, content_types=['text'])
async def give_photo(message: types.Message):
"""
Здесь будет отправлять фото по запросу пользователя
"""
pass
@dp.message_handler(lambda message: message.text == 'check data')
async def check_id(message: types.Message):
await bot.send_message(message.from_user.id, check_data())
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)
Didi_Tariani, получает фотки в галерею куда будут скидыватся фотографии с хэштегами. бот получает хэштег и file_id фотографий под этим хэштегом сохраняет их чтобы использовать в будущем по запросу пользователя
@dp.message_handler(content_types='photo')
async def get_img(message):
if message.caption in file_ids.keys():
file_ids[message.caption].append(message.photo[0]['file_id'])
else:
file_ids[message.caption] = [message.photo[0]['file_id']]
write_db(file_ids)
file_ids.clear()
Если пользователь отправит 5 изображений с текстом к примеру "кот", то message.caption будет равно None 4 раза, и 1 раз "кот". Все потому что текст отправляется только с одним фото, а не со всеми.