Как получить файл присланный пользователем боту в Telegram на python?

import telebot

TOKEN='token'
bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['send_file'])
def sendfile(message):
    bot.send_message(message.chat_id, "Send me the file")

#???

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

Автор решения: NIkBel XD

Задача легко решаема через вызов функции переадресации сообщения пользователя:

def func(message):
    id_tg_ = str(message.from_user.id)
    TO_CHAT_ID = "593069749" # айди пользователя ,которому должен приходить файл
    bot.forward_message(TO_CHAT_ID, message.chat.id, message.message_id) 
→ Ссылка
Автор решения: D. Violet
@bot.message_handler(content_types=['document'])
def handle_docs_photo(message):
try:
    chat_id = message.chat.id

    file_info = bot.get_file(message.document.file_id)
    downloaded_file = bot.download_file(file_info.file_path)

    src = 'C:/Python/Project/tg_bot/files/received/' + message.document.file_name;
    with open(src, 'wb') as new_file:
        new_file.write(downloaded_file)

    bot.reply_to(message, "Пожалуй, я сохраню это")
except Exception as e:
    bot.reply_to(message, e)

Принятие всех типов файлов, сохранение в указанную директорию и ответ от бота в виде цитаты последнего сообщения и подписи "Пожалуй, я сохраню это"

вы можете использовать и другие content_types

для фото:

def handle_docs_photo(message):
    file_info = bot.get_file(message.photo[len(message.photo) - 1].file_id)
    downloaded_file = bot.download_file(file_info.file_path)

    src = 'files/' + file_info.file_path
    with open(src, 'wb') as new_file:
        new_file.write(downloaded_file)

    bot.reply_to(message, "Пожалуй, я сохраню это")

не забудьте создать каталог files, а внутри него photos

источник

→ Ссылка