• Как запустить синхронную функцию параллельно телеграм боту на aiogram?

    @serverworm
    Justa Gain, хз мб ты ещё на второй версии его сидишь, а тебе ответил мой бот который возможно тебе бы помог
  • Как запустить синхронную функцию параллельно телеграм боту на aiogram?

    @serverworm
    Для запуска синхронной функции background_func() параллельно с асинхронным выполнением телеграм-бота на aiogram, вам потребуется использовать многопоточность.

    Вот пример кода, который объясняет, как это можно сделать:

    import asyncio
    import time
    import threading
    from aiogram import Bot, Dispatcher, types
    
    # Создание бота и диспетчера aiogram
    bot = Bot(token='YOUR_TELEGRAM_TOKEN')
    dp = Dispatcher(bot)
    
    # Функция-обработчик команды /start
    @dp.message_handler(commands=['start'])
    async def start(message: types.Message):
        await message.reply("Привет! Я бот!")
    
    # Асинхронная функция для запуска aiogram
    async def main():
        await dp.start_polling()
    
    # Синхронная функция для выполнения фоновых задач
    def background_func():
        while True:
            print('Hi')
            time.sleep(60)
    
    # Запуск фоновой функции в отдельном потоке
    def run_background_func():
        threading.Thread(target=background_func).start()
    
    # Запуск асинхронной функции main() в отдельном потоке
    def run_aiogram():
        asyncio.run(main())
    
    # Запуск обоих функций параллельно
    if __name__ == '__main__':
        run_background_func()
        run_aiogram()


    В этом примере run_background_func() и run_aiogram() запускаются одновременно в отдельных потоках. run_background_func() запускает синхронную функцию background_func(), которая выводит "Hi" каждые 60 секунд. run_aiogram() запускает асинхронную функцию main(), которая обрабатывает сообщения и команды в телеграм-боте.

    Обратите внимание, что потоки работают параллельно и могут взаимодействовать с общими ресурсами. Поэтому, если ваша синхронная функция background_func() взаимодействует с ресурсами, которые используются aiogram (например, базой данных), вам может потребоваться синхронизация доступа к этим ресурсам.