Скажу сразу - с it не связан, образование не профильное, пилю небольшой pet-проект после прочтения 1 книги и просмотра нескольких десятков видео + пару десятков заданий с chekio.org по Python. Можете прямо говорить где и в чем не прав, буду только рад!
Суть - небольшой телеграмм-бот, который принимает заказы и отправляет оператору. Есть фото блюд, сложенные аккуратно в папочку в директории проекта. Есть перечень блюд с описанием и путем к файлу с изображением блюда. Оформлено в виде словаря (config.menu).
По команде запускаем функцию, получаем id и сохраняем в .txt-файл в формате Название блюда \n File ID фотографии.
def photo_id(message):
result = str()
for i in config.menu:
file = config.menu[i][1]
photo = open(file, 'rb')
msg = bot.send_photo(message.chat.id, photo, None)
temp_file_id = bot.send_message(message.chat.id, msg.photo[0].file_id, reply_to_message_id=msg.message_id)
temp_file_id = f'{temp_file_id}'
index = temp_file_id.rfind(':')
start = index + 3
stop = index + 59
temp_file_id = temp_file_id[start:stop]
result += f'{i}\n{temp_file_id}\n\n'
with open("File_ID.txt", "w") as file:
file.write(result)
На мой взгляд выглядит не очень изящно. Есть ли вариант не переводить получаемое сообщение в строку и не искать rfind'ом начало file_id?
Дополнительный вопрос - при присваивании переменным msg и temp_file_id значений бот отправляет и сообщение, и фотографию. Есть ли способ не делать боту лишний движений?