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

11

我是编程新手。我正在尝试让我的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)" 是导致 "event loop is closed" 的原因,不确定为什么。


你确定授权成功了吗? - Lumo
我相信是这样的,我没有看到任何关于它未经授权的内容。 - yungcoder
你是否在Windows上运行Python 3.8+? - Gerrit Geeraerts
6个回答

3

尝试在开发者门户上启用意向,当我遇到相同的问题时,这种方法对我有效。


2
我猜你的机器人没有功能,所以它只是启动然后再次关闭,但我不确定。你可以尝试通过添加“async def on_message(message)”来测试它。
通常,“事件循环已关闭”错误是由于“client.close()”或“client.logout()”引起的。

2
打开 Discord 开发者门户网站:https://discord.com/developers/applications 选择您的应用程序。
在设置中打开“Bot”部分。
启用“SERVER MEMBERS INTENT”。
现在保存更改并尝试使用 :)。

1
这是因为您没有设置"token"变量,在最后一行中使用它,但它未被定义。
或者也许您设置了它,但在这里没有写出来?

0
启用特权意图 添加以下行: intents = discord.Intents.default() intents.typing = False intents.presences = False

0

这是由于错误或无效的令牌引起的。 请尝试在开发者门户中重置您的令牌,并使用新令牌启动机器人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接