(Python)不一致bot代码返回"运行错误:无法关闭正在运行的事件循环"

问题描述

我尝试在Spyder中创建代码以启动Discord机器人,但遇到以下错误:

回溯(最近一次调用):

文件第1行,第1行,中 Runfile(‘C:/USERS/Nathan/Desktop/hw/Python Stuff/my_discord_bot.py’,wdir=‘C:/USERS/Nathan/Desktop/hw/Python Stuff’)

在运行文件中保存";C:ProgramDataAnaconda3libsite-packagesspyder_kernelscustomizespydercustomize.py";,第827行 Execfile(文件名,命名空间)

文件";C:ProgramDataAnaconda3libsite-packagesspyder_kernelscustomizespydercustomize.py";,第110行,在EXECFILE中 Exec(编译(f.read(),文件名,‘exec’),命名空间)

文件C:/USERS/Nathan/Desktop/hw/PythonStuff/my_discord_bot.py&;第17行,in Client.run(‘我的应用程序令牌’)

文件";C:ProgramDataAnaconda3libsite-packagesdiscordclient.py";,第705行,在运行中 _CLEANUP_LOOP(LOOP)

文件清理循环第98行,in_";C:ProgramDataAnaconda3libsite-packagesdiscordclient.py";,_loop Loop.lose()

将";C:ProgramDataAnaconda3libasyncioselector_events.py";,第83行归档到结尾处 引发运行错误(";无法关闭正在运行的事件循环)

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

我在网上搜索过,有人告诉我使用一个名为&Nest_asyncio&qot;的包。我通过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')

顺便说一句,我将实际令牌替换为";我的应用程序令牌&,因为我不想与任何人共享它。

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

Spyder

(推荐答案Maintainer Here)为了在Spyder中运行异步代码,您需要安装一个名为nest-asyncio的包,并将以下两行添加到代码中的第一行:

import nest_asyncio
nest_asyncio.apply()

相关文章