Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Python. Телеграмм бот для учета финансов (http://forum.oszone.net/showthread.php?t=354794)

daniil_im 13-01-2024 18:08 3022685

Python. Телеграмм бот для учета финансов
 
Всем доброго времени суток!
Возникла проблема с одной функцией телеграмм бота для учета расходов и доходов, а именно реализация удаления записи из БД. Я так полагаю проблема с обработчиком функции удаления, но не понимаю что конкретно не работает, т.к. в коде ошибок нет, а бот просто не понимает мою команду. При использовании кнопки /del ошибка: Извините, я вас не понял. Пожалуйста, воспользуйтесь клавиатурой с командами(текст сам печатал)
Подскажите пожалуйста, в чем я ошибся? Pycharm ошибок не выдает, код успешно запускается, другие функции работают без ошибок.

Кусок кода из файла обработчиков
Код:

async def show_expenses(msg: types.Message):
        operations_id = msg.from_user.id
        expenses = get_db().get_data_all_time(operations_id)
 
        if expenses:
            expense_text = ""
            for date, amount, reason, operations_id in expenses:
                expense_text += f" Дата: {date}\n Категория: {reason}\n Сумма: {amount} руб.\n\n"
                expense_text += f"/del{operations_id}\n"
                expense_text += f"➖➖➖➖➖➖➖➖➖➖➖➖\n\n"
            await msg.answer(("Все расходы:\n\n") + expense_text)
        else:
            await msg.answer("Расходы еще не добавлены", reply_markup=main_kb)
 
@dp.callback_query_handler(lambda c: c.data and c.data.startswith('del'))
async def process_delete_button(callback_query: types.CallbackQuery):
    operations_id = int(callback_query.data[4:])
    try:
        get_db().delete_operation(operations_id)
        await bot.send_message(chat_id=callback_query.message.chat.id, text="Расход успешно удален!")
        await bot.answer_callback_query(callback_query.id)
    except Exception as e:
        await bot.send_message(chat_id=callback_query.message.chat.id, text="Произошла ошибка при удалении расхода.")
        print(f"Ошибка: {e}")

Код:

def delete_operation(SELF, row_id):
        # формируем запрос на удаление выделенной записи по внутреннему порядковому номеру
        SELF.cursor.execute("DELETE FROM operations WHERE id=(?)", (row_id,))
        # сохраняем изменения
        SELF.connection.commit()



Время: 13:12.

Время: 13:12.
© OSzone.net 2001-