Как получить файл присланный пользователем боту в 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