MicroProger
@MicroProger
Работает - не трогай

Как получить и скачать .gif в Telebot Python, отправленное пользователем?

Здравствуйте. Не могу понять, как получить и скачать файл gif, который отправил пользователь моему боту в Telegram. Как отправить, я разобрался. Дело в том, что мой код должен принимать .gif и с помощью библиотеки MyQR создавать QR-код к ресурсу, который отправил пользователь с использованием этого gif. Я попал в тупик на моменте с получением и установкой файла gif.
Вот, что я пытался сделать:
@bot.message_handler(content_types=['animation'])
def get_gif2(message):
    file_info = bot.get_file(message.animation[len(message.animation) - 1].file_id)
    downloaded_file = bot.download_file(file_info.file_path)
    src = str(message.from_user.id)  +  '.gif'
    with open(src, 'wb') as new_file:
        new_file.write(downloaded_file)
    bot.reply_to(message, "Фото добавлено")
    myqr.run (src)
    photo = open(src, 'rb')
    bot.send_animation(message.from_user.id, photo);
    get_menu(message)
  • Вопрос задан
  • 696 просмотров
Решения вопроса 1
gnifajio
@gnifajio
Совершенствуюсь каждый день
Для того чтобы получить и скачать файл .gif, отправленный пользователем в Telegram, вы можете использовать метод bot.download_file(file_path), где file_path - это путь к файлу, который вы получили из объекта сообщения.

В вашем коде, вместо message.animation[len(message.animation) - 1].file_id нужно использовать message.animation.file_id (или message.animation[-1].file_id, чтобы получить идентификатор файла .gif). Затем, вы можете использовать метод bot.download_file(file_path) для загрузки файла по его пути. Далее, вы можете сохранить его локально и обработать с помощью библиотеки MyQR.

Примерно такой код может получить и сохранить файл .gif, отправленный пользователем:

@bot.message_handler(content_types=['animation'])
def get_gif2(message):
    file_id = message.animation.file_id
    file_info = bot.get_file(file_id)
    downloaded_file = bot.download_file(file_info.file_path)
    src = str(message.from_user.id) + '.gif'
    with open(src, 'wb') as new_file:
        new_file.write(downloaded_file)
    bot.reply_to(message, "Фото добавлено")
    myqr.run(src)
    with open(src, 'rb') as photo:
        bot.send_animation(message.chat.id, photo)
    get_menu(message)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы