<p>根据discord.py的discord服务器及其文档,您需要在使用“bot.close()”后重新启动整个py文件,因为它与它们的api断开连接。不幸的是,我正在尝试创建一个启动器,而重启整个启动器来重启bot并不理想,有人知道在使用“bot.close()”之后启动discord.py bot的“黑客”方法吗?它不需要漂亮,只需要远程工作。如有任何建议/提示,将不胜感激</p>
<pre><code> @asyncSlot()
async def on_btnStartBot_clicked(self):
self.pushButton_startBot.setEnabled(False)
if self.isBotRunning == False:
self.statusbar.showMessage("Starting Bot...")
try:
if isinstance(cfg["bot"]["token"], str) and cfg["bot"]["token"] != "":
await bot.start(cfg["bot"]["token"])
elif isinstance(cfg["bot"]["token"], list) and not all(token == "" for token in cfg["bot"]["token"]):
def first_token():
for t in cfg["bot"]["token"]:
if t != "":
return t
await bot.start(first_token())
else:
terminal.log("CRITICAL", f"No token was provided in '{utils.config.CONFIG_PATH}'")
except Exception as e:
self.statusbar.showMessage(str(e))
else:
self.statusbar.showMessage("Stopping Bot...")
await bot.close()
self.plainTextEdit_botTerminal.clear()
while not bot.is_closed():
print('Not Yet Closed')
if bot.is_closed():
print("Closed")
self.statusbar.showMessage("Bot Has Been Stopped...")
self.pushButton_startBot.setText("Start Bot")
self.isBotRunning = False
await asyncio.sleep(1)
self.pushButton_startBot.setEnabled(True)
</code></pre>