Discord.py:如何修复“事件循环已关闭”

时间:2020-06-12 08:15:54

标签: python python-3.x discord discord.py

我是编程新手。我试图让我的Discord机器人打开命令提示符以确认它可以运行,但是出现此错误:

  File "C:\Users\---\AppData\Local\Programs\Python\Python38-32\lib\asyncio\proactor_events.py", line 116, in __del__
    self.close()
  File "C:\Users\---\AppData\Local\Programs\Python\Python38-32\lib\asyncio\proactor_events.py", line 108, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "C:\Users\---\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py", line 719, in call_soon
    self._check_closed()
  File "C:\Users\---\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py", line 508, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
[Finished in 0.871s]

代码:

import discord
from discord.ext import commands

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

@client.event
async def on_ready():
    print('ok')

client.run(token)

什么原因导致此错误,我该如何解决?

编辑:经过一些测试,我相信“ client.run(token)”是导致“事件循环关闭”的原因,不确定原因。

5 个答案:

答案 0 :(得分:1)

我猜你的机器人没有 function,所以它只是启动然后又关闭,但我不确定。您必须通过例如添加 async def on_message(message) 来测试这一点。

通常,Event loop is closed“错误”是由 client.close()client.logout()

引起的

答案 1 :(得分:1)

这是因为您没有设置“token”变量,在您的最后一行中您使用了它但未定义。

或者也许你设置了但没有写在这里?

答案 2 :(得分:0)

您需要进入Discord Bot的开发面板,单击Bot选项卡,然后在其中找到一个令牌,上面写着Reveal Token,您只需单击COPY。

然后,您需要在代码上像这样建立该令牌。

import discord
from discord.ext import commands

TOKEN = "here paste your token"

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

@client.event
async def on_ready():
    print('Connected')

client.run(TOKEN)

这将解决您的问题,喜欢编码!

答案 3 :(得分:0)

当我遇到同样的问题时,尝试在它对我有用的开发者门户上启用意图

答案 4 :(得分:-2)

我需要完整的代码。如我所见,由于asyncio而不是discord.py

当然,有可能是使用asyncio的discord.py。

但是我要重复,我需要完整的代码,否则-我不知道

抱歉,如果没有帮助