当前位置: 首页 > 知识库问答 >
问题:

(Python)Discord bot代码返回“RuntimeError:无法关闭正在运行的事件循环”

蔡鹏程
2023-03-14

我试图在Spyder中创建代码以启动discord bot,但遇到以下错误:

回溯(最近一次呼叫最后一次):

文件“”,第1行,在runfile中('C:/Users/Nathan/Desktop/HW/Python stuff/my_discord\u bot.py',wdir='C:/Users/Nathan/Desktop/HW/Python stuff')

文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\u kernels\customize\spydercustomize.py”,第827行,在runfile execfile(文件名,命名空间)中

文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\u kernels\customize\spydercustomize.py”,第110行,在execfile exec中(compile(f.read(),文件名,'exec'),命名空间)

html" target="_blank">客户端第17行的文件“C:/Users/Nathan/Desktop/HW/Python stuff/my_discord_bot.py”。运行('我的应用程序令牌')

在运行_cleanup_loop(循环)中,文件"C:\Program Data\Anaconda3\lib\site-包\discord\client.py",第705行

文件“C:\ProgramData\Anaconda3\lib\site packages\discord\client.py”,第98行,在\u cleanup\u循环中。关闭()

文件“C:\ProgramData\Anaconda3\lib\asyncio\selector\u events.py”,第83行,在close raise RuntimeError(“无法关闭正在运行的事件循环”)中

无法关闭正在运行的事件循环

我在网上搜过,有人告诉我用一个叫“nest_asyncio”的套餐。我pip安装了包,导入了它,并在控制台中运行了nest_asyncio.apply(),但是代码在再次运行后仍然给出了同样的错误。

这是我的密码:

import discord
from discord.ext import commands

client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():
    print ('Bot is ready.')
    
client.run('my application token')

顺便说一下,我用“我的应用程序令牌”替换了我的实际令牌,因为我不想与任何人共享它。

请帮忙。如何消除此错误并使其正常运行?

共有2个答案

姬英武
2023-03-14

我找到了解决办法。我没有使用Spyder的内置控制台,而是使用命令提示符来运行我的代码,这绕过了运行时错误。

公孙成仁
2023-03-14

为了在Spyder中运行异步代码,您需要安装一个名为nest-asyncio的包,并将这两行添加到代码的第一行:

import nest_asyncio
nest_asyncio.apply()
 类似资料:
  • 问题内容: 我正在尝试解决此错误:在我的异步过程中。我相信这是因为在任务仍未完成时发生故障,然后尝试关闭事件循环。我以为我需要在关闭事件循环之前等待其余的响应,但是我不确定如何在我的特定情况下正确完成该操作。 我该如何处理错误并正确关闭事件循环,以便可以启动一个新程序并从本质上重新启动整个程序并继续。 编辑: 根据这个答案,这就是我现在正在尝试的方法。不幸的是,这种错误很少发生,因此,除非我可以强

  • 每当我运行下面的代码,尝试了许多解决方案,但都没有成功时,我总是会遇到这样的错误“RuntimeError:无法关闭正在运行的事件循环”。 我正在使用jupyter笔记本,-- 提前谢谢。 代码输出: 以后从未检索到任务异常: 上述异常是以下异常的直接原因:

  • 问题内容: 对于他的项目,他正在模拟天空中一群鸟。他得到了大部分他写的代码,它工作得很好,但鸟儿需要移动的每一刻。 然而,Tkinter浪费了自己的事件循环的时间,因此他的代码无法运行。这样运行,运行,并保持运行,并且它运行的唯一事情是事件处理程序。 有没有一种方法可以让他的代码与一起运行(没有多线程,这很令人困惑,应该保持简单),如果这样,那是什么? 现在,他想出了一个丑陋的方法,将其功能绑定到

  • 编辑问题以包括所需的行为、特定问题或错误,以及重现问题所需的最短代码。这将有助于其他人回答这个问题。 代码不返回值,而是返回“?”。编译时我没有遇到任何错误。请协助。 代码需要返回需要支付的剩余金额。输出代码1代码2代码3代码4

  • 问题内容: 当使用win32api.setConsoleCtrlHandler()时,我能够从Windows接收shutdown / logoff / etc事件,并干净地关闭我的应用程序。 但是,这仅在python.exe(即具有控制台窗口)下运行应用程序时有效,而在pythonw.exe(无控制台窗口)下运行应用程序时有效。 当您没有控制台且没有窗口接收这些事件时,Windows中是否有一种等

  • 问题内容: 当我运行以下脚本时,两个lambda都在同一文件junk.txt上运行os.startfile()。我希望每个Lambda都使用创建Lambda时设置的值“ f”。有没有办法让它按我的预期运行? 问题答案: 一种方法是执行此操作: 否则,在调用该函数时将进行查找,因此您将获得当前(循环后)的值。 我更喜欢的方式: 甚至(在python 2.5+中):