Сохранить картинку от пользователя телеграм боту в определенный каталог
Не могу понять как сохранить картинку\фото присланную пользователем боту в определенный каталог!
Например:
У пользователя появляются две (или больше) инлайн кнопки (назовем их "Котики" и "Песики")
Пользователь жмет "Котики" и бот предлагает ему отправить фото "Отправь фото котика"
Пользователь отправляет, фото сохраняется в '/root/TelegramBot/cats', если отправляет что-то другое (не фото, а текст или документ), то бот говорит: "Отправь картинку"
Если пользователь нажмет "Песики", то фото должно сохраниться в '/root/TelegramBot/dogs'
@bot.message_handler(commands=['start']) def start(message): menu = types.InlineKeyboardMarkup() button_cat = types.InlineKeyboardButton('Котики', callback_data='cat') button_dog = types.InlineKeyboardButton('Песики', callback_data='dog') menu.add(button_cat, button_dog) bot.send_message(message.chat.id, 'Выбери кого отправить', reply_markup=menu)
Не пойму логику, что делать дальше?)))
Ответы (1 шт):
Автор решения: Otets Valerian
→ Ссылка
@tb.message_handler(content_types=['text'])
def name(message):
if message.text == 'Котики':
msg = tb.send_message(message.chat.id, "Отправьте фотографию")
tb.register_next_step_handler(msg, photo_c)
elif message.text == 'Собачки':
msg = tb.send_message(message.chat.id, "Отправьте фотографию")
tb.register_next_step_handler(msg, photo_d)
@tb.message_handler(content_types=['photo']
def photo_c(message):
if message.content_type == 'photo':
file_info = tb.get_file(message.photo[len(message.photo) - 1].file_id)
downloaded_file = tb.download_file(file_info.file_path)
src = '/root/TelegramBot/' + file_info.file_path.replace('cats/', '')
with open(src, 'wb') as new_file:
new_file.write(downloaded_file)
else:
pass
@tb.message_handler(content_types=['photo']
def photo_d(message):
if message.content_type == 'photo':
file_info = tb.get_file(message.photo[len(message.photo) - 1].file_id)
downloaded_file = tb.download_file(file_info.file_path)
src = '/root/TelegramBot/' + file_info.file_path.replace('dogs/', '')
with open(src, 'wb') as new_file:
new_file.write(downloaded_file)
else:
pass
Если не работает, то попробуйте убрать хендлеры