как запустить несколько юзер ботов в телеграмм без остановки основного процесса

я написал код чтобы запускать несколько ботов в один поток

import sqlite3
import requests
from threading import Thread
from pyrogram import Client, filters, enums

def create_bot(login):
    """Функция для создания и конфигурации бота из базы данных."""
    # Достаём данные из базы
    conn = sqlite3.connect('Bot_class/bot_config.db')
    cursor = conn.cursor()
    cursor.execute("SELECT api_id, api_hash, channel_id, promt FROM config WHERE login = ?", (login,))
    config = cursor.fetchone()
    conn.close()

    if not config:
        raise ValueError(f"Логин {login} не найден в базе данных.")
    
    api_id, api_hash, channel_id, prompt = config
    session_path = os.path.join("Bot_class/Session", login)
    os.makedirs(session_path, exist_ok=True)

    # Создание Pyrogram-клиента
    bot = Client(login, workdir=session_path, api_id=api_id, api_hash=api_hash)
    
    # Добавляем логику работы бота
    @bot.on_message(filters.text)
    def process_message(client, message):
        # логика бота
        print("работает")

    return bot

def run_bot(bot_login):
    """Функция для запуска бота в фоновом потоке."""
    try:
        bot_instance = create_bot(bot_login)
        bot_instance.run()
    except ValueError as ve:
        print(f"Ошибка: {ve}")

# Основной код
while True:
    bot_login = input("Введите логин бота для запуска (или 'выход' для завершения): ")
    if bot_login.lower() == "выход":
        break
    # Запускаем бота в новом потоке
    Thread(target=run_bot, args=(bot_login,)).start()

но выдает

Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\threading.py", line 1045, in _bootstrap_inner  
    self.run()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\threading.py", line 982, in run
    self._target(*self._args, **self._kwargs)
  File "d:\Visual Studia Project\UserBotTgCommentGPT\Bot_class\spizheno.py", line 63, in run_bot
    bot_instance = create_bot(bot_login)
                   ^^^^^^^^^^^^^^^^^^^^^
  File "d:\Visual Studia Project\UserBotTgCommentGPT\Bot_class\spizheno.py", line 24, in create_bot
    bot = Client(login, workdir=session_path, api_id=api_id, api_hash=api_hash)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Visual Studia Project\UserBotTgCommentGPT\.venv\Lib\site-packages\pyrogram\client.py", line 267, in __init__
    self.dispatcher = Dispatcher(self)
                      ^^^^^^^^^^^^^^^^
  File "D:\Visual Studia Project\UserBotTgCommentGPT\.venv\Lib\site-packages\pyrogram\dispatcher.py", line 58, in __init__
    self.loop = asyncio.get_event_loop()
                ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\events.py", line 681, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'Thread-1 (run_bot)'.

как я понял это не возможность запустить asyncio.get_event_loop() в Thread. можете предложить вообще иное решение или методы если я совсем не то делаю или будет проще


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