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

Мне это нужно для того, чтобы измененные данные из эксель можно было внести обратно в postgreSQL Я уже много способов попробовал: и через dp.message_handler(content_types=...) и так без этого. Я чего-то не понимаю однозначно...

@dp.callback_query_handler(text="redact")
async def redact_ex(message: types.Message):
    markup_redact = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True, 
one_time_keyboard=True)
red_del = types.InlineKeyboardButton('Удалить данные')
red_last = types.InlineKeyboardButton('Перезаписать последние данные')
red_excel = types.InlineKeyboardButton('Внести Excel')
markup_redact.add(red_del, red_last, red_excel)
await bot.send_message(message.from_user.id, '''✍️*В редактировании можно выполнить 
несколько команд:*
❌Удалить данные - удаляются все данные
?Перезаписать последние данные - последние данные, которые вы ввели можно изменить, 
если допустили ошибку
?Внести Excel - вытекающее из функции "Выслать", если вы самостоятельно редатировали 
xlsx, xsl файлы, их можно внести обратно''', parse_mode='Markdown', 
reply_markup=markup_redact)
await Statess.red_set.set()

@dp.message_handler(state=Statess.red_set)
async def red_del_func(message: types.Message, state: FSMContext):
    db =  psycopg2.connect(dbname='TelegramFinanseBot', user='postgres', # ноутбук
        password='KokoRari-23', host='localhost', port='5432')
  # db =  psycopg2.connect(dbname='TelegramFinanseBot', user='postgres', #Комп
  #         password='Ghg3500pol', host='localhost', port='5432')
    cur = db.cursor()
async with state.proxy() as delete_dt:
    user_red = str(message.from_user.id)
    print(user_red)
    if message.text == 'Удалить данные':
        markup_del_red = types.InlineKeyboardMarkup(row_width=2)
        btn_del_red = types.InlineKeyboardButton("Вернуться в главное меню", callback_data="helpmsg")
        markup_del_red.add(btn_del_red)
        cur.execute(f'''DELETE FROM "{user_red}"''')
        db.commit()
        db.close()
        await bot.send_message(message.from_user.id, '''Данные были полностью удалены из базы!''', reply_markup=markup_del_red)
        await state.finish()
    if message.text == 'Перезаписать последние данные':
        markup_vvod = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True, one_time_keyboard=True)
        btn_vvod = types.InlineKeyboardButton('Ввод')
        markup_vvod.add(btn_vvod)
        await bot.send_message(message.from_user.id, '''Введите любое сообщение для подтверждения''', reply_markup=markup_vvod)
        await Statess.red_enter.set()
    if message.text == 'Внести Excel':
        await bot.send_message(message.from_user.id, '''Внесите Excel файл:''')
        # msg = await bot.send_document(message.from_user.id, file_msg)
        file_info = await bot.get_file(message.document.file_id)
        print(file_info)
        file = await bot.download_file(file_info.file_path)
        df = pd.read_excel(file)
# @dp.message_handler(content_types=types.ContentType.DOCUMENT)
# async def excel_form(message: types.Message):
        print("Сюда переходит, ты просто лошара")
        markup_del_red = types.InlineKeyboardMarkup(row_width=2)
        btn_del_red = types.InlineKeyboardButton("Вернуться в главное меню", callback_data="helpmsg")
        markup_del_red.add(btn_del_red)
        db =  psycopg2.connect(dbname='TelegramFinanseBot', user='postgres', # ноутбук
                password='KokoRari-23', host='localhost', port='5432')
        # db =  psycopg2.connect(dbname='TelegramFinanseBot', user='postgres', #Комп
        #         password='Ghg3500pol', host='localhost', port='5432')
        cur = db.cursor()
        user_xls = str(message.from_user.id)
        # doc = message.document
        # file_name = doc.file_name
        # file_id = doc.file_id
        # # file_path = await message.download_file_by_id(message.document.file_id)
        # file_info = await bot.get_file(file_id)
        # file_path = file_info.file_path
        # download_f = await bot.download_file(file_path)
        # wb = openpyxl.load_workbook(filename=download_f)
        # ws = wb.active
        # rows_xls = ws.rows
        for row_xls in df.itertuples():
            # values_xls = [cell.value for cell in  row_xls]
            cur.execute(f'''INSERT INTO "{user_xls}" (Категория, Примечания, ЗП_РС, Размер, Карта_Нал, time) VALUES(%s, %s, %s, %s, %s, %s)''', (row_xls[0], row_xls[1], row_xls[2], row_xls[3], row_xls[4]))
            db.commit() 
            db.close()
        bot.send_message(message.from_user.id, '''Данные из Excel файла были успешно внесены в базу!''', reply_markup=markup_del_red)
# await state.finish()

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