我试图在Spyder中创建代码来启动我的Discord机器人,但是遇到以下错误:
回溯(最近通话最近一次):
文件“”,第1行,在 runfile('C:/ Users / Nathan / Desktop / HW / Python的东西/my_discord_bot.py',wdir ='C:/ Users / Nathan / Desktop / HW / Python的东西')
文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”,行827,在运行文件中 execfile(文件名,命名空间)
exec文件中的第110行,文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py” exec(compile(f.read(),文件名,'exec'),命名空间)
文件“ C:/ Users / Nathan / Desktop / HW / Python stuff / my_discord_bot.py”,第17行, client.run('我的应用程序令牌')
文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ discord \ client.py”,第705行,正在运行 _cleanup_loop(loop)
文件“ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ discord \ client.py”,第98行,在_cleanup_loop中 loop.close()
文件“ C:\ ProgramData \ Anaconda3 \ lib \ asyncio \ selector_events.py”,第83行,关闭 引发RuntimeError(“无法关闭正在运行的事件循环”)
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')
顺便说一下,我将实际的令牌替换为“我的应用程序令牌”,因为我不想与任何人共享它。
请帮助。如何摆脱该错误,使其正常运行?
答案 0 :(得分:0)
(此处为 Spyder维护程序)为了在Spyder中运行异步代码,您需要安装一个名为nest-asyncio的软件包,并将这两行添加为代码中的第一行:
import nest_asyncio
nest_asyncio.apply()
答案 1 :(得分:0)
我找到了解决方案。我没有使用Spyder的内置控制台,而是使用命令提示符运行我的代码,并且绕过了RuntimeError。