gpt4 book ai didi

python - 蜘蛛 : Cannot close a running event loop

转载 作者:行者123 更新时间:2023-12-04 15:33:21 25 4
gpt4 key购买 nike

我目前正在查看 Python discord 包装器 found here但由于上述错误,它似乎不起作用。我尝试在运行 client.run() 函数之前调用 nest_asyncio.apply(),但它似乎也没有像其他 question 中提到的那样工作.这个问题可能是重复的,但无法在前一个问题中添加评论。

我试过这个:

nest_asyncio.apply()
client = discord.Client()
client.run(bot_token)

还有这无济于事:

client = discord.Client()
nest_asyncio.apply(client.run(bot_token))

最佳答案

几个月前我遇到了一个类似的问题,如果不是同一个问题的话,我在 comment to a github issue 上发现了什么最终导致了以下结果:


class DiscordAccessor:
'''class to handle discord authentication and async loop handling
Attributes
----------
dc_coroutine
the coroutine to start the client
dc_thread
the thread to keep the coroutine alive
Methods
-------
start_loop
starts the async loop'''
dc_loop = asyncio.new_event_loop()
client = discord.Client(loop=dc_loop)

def __init__(self):
self.dc_coroutine = DiscordAccessor.client.start('YOUR_TOKEN')
self.dc_thread = threading.Thread(target=self.start_loop,
args=(self.dc_loop, self.dc_coroutine))
self.dc_thread.start()

def start_loop(self, loop, coro):
'''starts the async loop
Parameters
----------
loop
the asyncio loop
coro
the coroutine'''
loop.run_until_complete(coro)

此类将 discord 客户端包装到它自己的线程和事件循环中。你会这样称呼你的客户:

dc = DiscordAccessor()
dc.client.whatever_you_want_to_call()

关于python - 蜘蛛 : Cannot close a running event loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60630612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com