gpt4 book ai didi

python - Discord.py:事件循环关闭后重启机器人

转载 作者:行者123 更新时间:2023-11-28 17:08:55 25 4
gpt4 key购买 nike

我有一个 discord.py 机器人,我目前正在本地托管它,直到它成熟。我想让它能够抵御互联网连接中的瞬间故障,但我遇到了困难。当连接失败时,代表正常机器人操作的阻塞 Client.run() 完成并关闭事件循环。我不能在几分钟后重新调用 Client.run(),因为事件循环已关闭。

我已经尝试重新声明 Client 对象,但这似乎没有使用新的事件循环。我正在浏览 discord.py 和 python 事件循环文档,但无法弄清楚如何获取新的事件循环并改为使用它。

我已经尝试了 asyncio.set_event_loop(asyncio.new_event_loop()) 的方法,但似乎没有任何区别 - 我仍然无法重新调用 Client.run() 因为事件循环已关闭。

最佳答案

在互联网连接中断的情况下,现有的事件循环没有任何问题。不要调用关闭事件循环的Client.run。由于 Client.run 无论如何都是 run_until_complete 的简单包装器,它关闭了事件循环,您可以自己编写不这样做的包装器。例如:

def run_client(client, *args, **kwargs):
loop = asyncio.get_event_loop()
while True:
try:
loop.run_until_complete(client.start(*args, **kwargs))
except Exception as e:
print("Error", e) # or use proper logging
print("Waiting until restart")
time.sleep(600)

关于python - Discord.py:事件循环关闭后重启机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49082031/

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