RuntimeError: в потоке нет текущего события l oop ... DiscordPy MultiThreading - PullRequest
0 голосов
/ 17 июня 2020

, значит, у меня есть сценарий python, в котором я хочу запускать несколько ботов Discord одновременно. Они определяются количеством пользователей в базе данных (Firebase). Что я сейчас делаю, так это то, что у меня есть l oop для каждого пользователя в базе данных, который он добавляет в массив. Затем для каждого пользователя в этом массиве он запускает сценарий:

def main(user):

        client = discord.Client()

        token = db.child("users").child(user).child("token").get().val()
        print(user + ": " + token)

        applicationId = db.child("users").child(user).child("appid").get().val()

        discordId = user

        @client.event
        async def on_ready():
                print('Online')

        @client.event
        async def on_message(message):
                print(message)
        client.start(token, bot=False)

def testFunction(some_args):
        print(some_args)
        discord_thread = threading.Thread(target=main, args=(some_args,))
        discord_thread.start()

for user in usersArray:
        testFunction(user)

Когда я запускаю сценарий, он работает до тех пор, пока не будет выполнена часть client.start. Затем я получаю сообщение об ошибке для каждого потока. Ошибка:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:\Users\jonah\AppData\Local\Programs\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "C:\Users\jonah\AppData\Local\Programs\Python\Python37\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "discordnotify.py", line 39, in main
    client = discord.Client()
  File "C:\Users\jonah\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\client.py", line 206, in __init__
    self.loop = asyncio.get_event_loop() if loop is None else loop
  File "C:\Users\jonah\AppData\Local\Programs\Python\Python37\lib\asyncio\events.py", line 644, in get_event_loop
    % threading.current_thread().name)
RuntimeError: There is no current event loop in thread 'Thread-2'.

Кто-нибудь может мне как-то помочь? Это сводит меня с ума!

...