Как реализовать параллельную работу Телеграм бота и приложения на customtkinter?

Есть приложении на customtkinter и бот на aiogram, оба реализованы через класс с функциями, в скрипте приложения используется экземпляр бота и 1 из его функций, а в самом боте помимо этой функции также имеется асинхронная обработка кнопок. Нужен способ параллельной работы обоих скриптов. Пытался через многопоточность или асинхрон но не получилось.

скрипт бота:

class ChatBot():
    def __init__(self, bot_token):
        self.bot = Bot(token=bot_token)
        self.dp = Dispatcher()
        self.setup_handlers()
        self.router = Router()
        print('bot initiated')

    async def start(self):
        print("Bot started.")
        await self.dp.start_polling(self.bot)

    async def stop(self):
        print("Bot stopped.")
        await asyncio.run(self.dp.stop_polling())

    def send_new_order_message(self, ID, Customer_name, Customer_phn, Service_name, master_id):
        message_text = f"Новая заявка! №{ID}\n" \
                       f"Тип услуги - {Service_name}\n" \
                       f"Клиент - {Customer_name}\n" \
                       f"Номер - {Customer_phn}"

        button = InlineKeyboardButton(text='Выполнено✅', callback_data=f"Order_succes_{ID}")
        keyboard = InlineKeyboardBuilder().add(button)

        asyncio.run(self.bot.send_message(chat_id=master_id, text=message_text, reply_markup=keyboard.as_markup()))

    def setup_handlers(self):

        @self.dp.callback_query(lambda callback: callback.data.startswith('Order_succes'))
        async def Order_succes(callback: types.CallbackQuery):

            print('buttonpressed')
            ID = int(callback.data.split('_')[2])
            data = {'ID': ID, 'CstmrID': '', 'SrvcID': '', 'Dt': '', 'Master': ''}

            for key, value in data.items():
                data[key] = (c.execute(f"SELECT {key} FROM Unfinished_Orders WHERE ID = {ID}")).fetchone()[0]
            c.execute(f"DELETE FROM Unfinished_Orders WHERE ID = {ID}")
            print(data)

            columns = ', '.join(data.keys())
            placeholders = ', '.join(['?' for _ in data])
            values = tuple(data.values())
            c.execute(f"INSERT INTO Finished_Orders ({columns}) VALUES ({placeholders})", values)

            conn.commit()

            await self.bot.edit_message_reply_markup(callback.message.chat.id, callback.message.message_id)


bot = ChatBot(bot_token)

попытка в многопоточность:

from app import App
from TBot import bot

async def run_customtkinter():
    app = App()
    app.mainloop()

async def start_bot():
    await bot.start()

if __name__ == "__main__":
    # Запуск бота в отдельном потоке
    bot_thread = threading.Thread(target=lambda: asyncio.run(start_bot()))
    bot_thread.start()
    bot_thread.join()

    # Запуск tkinter в основном потоке
    run_customtkinter()

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