Задать вопрос
@arynyklas

Как реализовать скачивание файла в определённую директорию в telebot?

Пример:
Админ бота (owner) отправляет боту файл с подписью (назову это текстом). Этот текст содержит только директорию куда нужно скачать файл. Так вот, как это реализовать?
Недоделанные и нерабочие костыли:
import telebot
import time

token = 'типо токена'
owner = 'типо ид'

bot = telebot.TeleBot(token)

@bot.message_handler(commands=['upload'])
def send_text(message):
    try:
        save_dir = message.text.replace('/upload ', '')
        file_info = bot.get_file(message.file.file_id)
        downloaded_file = bot.download_file(file_info.file_path)
        src = message.file.file_name
        with open(save_dir + "/" + src, 'wb') as new_file:
            new_file.write(downloaded_file)
        bot.send_message(message.chat.id, "[*] File added:\nFile name - {}Directory - \n".format(str(src), str(save_dir)))
    except Exception as ex:
        bot.send_message(message.chat.id, "[!] error - {}".format(str(ex)))

while True:
    try:
        print("[*] bot starting..")
        bot.send_message(owner, "[*] bot starting..")
        print("[*] bot started!")
        bot.send_message(owner, "[*] bot started!")
        bot.polling(none_stop=True, interval=2)
        # Предполагаю, что бот может мирно завершить работу, поэтому
        # даем выйти из цикла
        break

    except Exception as ex:
        print("[*] error - {}".format(str(ex))) # Описание ошибки
        bot.send_message(owner, "[*] error - {}".format(str(ex)))
        print("[*] rebooting..")
        bot.send_message(owner, "[*] rebooting..")
        bot.stop_polling()
        # Останавливаем чтобы не получить блокировку
        time.sleep(15)
        print("[*] restarted!")
        bot.send_message(owner, "[*] restarted!")
  • Вопрос задан
  • 11161 просмотр
Подписаться 2 Средний 2 комментария
Решения вопроса 1
@arynyklas Автор вопроса
Решил проблему сам:
@bot.message_handler(content_types=['document'])
def send_text(message):
    try:
        try:
            save_dir = message.caption
        except:
            save_dir = os.getcwd()
            s = "[!] you aren't entered directory, saving to {}".format(save_dir)
            bot.send_message(message.chat.id, str(s))
        file_name = message.document.file_name
        file_id = message.document.file_name
        file_id_info = bot.get_file(message.document.file_id)
        downloaded_file = bot.download_file(file_id_info.file_path)
        src = file_name
        with open(save_dir + "/" + src, 'wb') as new_file:
            new_file.write(downloaded_file)
        bot.send_message(message.chat.id, "[*] File added:\nFile name - {}\nFile directory - {}".format(str(file_name), str(save_dir)))
    except Exception as ex:
        bot.send_message(message.chat.id, "[!] error - {}".format(str(ex)))


Здесь человек отправляет файл указываю директорию куда сохранить
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы