как запустить несколько юзер ботов в телеграмм без остановки основного процесса
я написал код чтобы запускать несколько ботов в один поток
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. можете предложить вообще иное решение или методы если я совсем не то делаю или будет проще