RuntimeError:连接python discord bot时关闭事件循环

时间:2021-02-07 23:23:00

标签: python discord bots discord.py

我刚开始用 python 编写一个 discord bot,虽然代码很简单,但我在尝试连接时以某种方式不断收到 RuntimeError

我多次检查令牌

如果有人能告诉我我做错了什么,我将不胜感激

python 脚本:

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix=':')


@bot.event
async def on_ready():
    print('bot is ready')


bot.run('my_token')

这里是回溯:

Traceback (most recent call last):
  File "C:\Users\orang\Projects\PythonProjects\discord_lyrics_bot\venv\lib\site-packages\discord\http.py", line 293, in static_login
    data = await self.request(Route('GET', '/users/@me'))
  File "C:\Users\orang\Projects\PythonProjects\discord_lyrics_bot\venv\lib\site-packages\discord\http.py", line 247, in request
    raise HTTPException(r, data)
discord.errors.HTTPException: 401 Unauthorized (error code: 0): 401: Unauthorized

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File ".\main.py", line 12, in <module>
    bot.run('Bxb-8dRGeYHYLFD5-IXGhNfY1TnX3kKA')
  File "C:\Users\orang\Projects\PythonProjects\discord_lyrics_bot\venv\lib\site-packages\discord\client.py", line 718, in run
    return future.result()
  File "C:\Users\orang\Projects\PythonProjects\discord_lyrics_bot\venv\lib\site-packages\discord\client.py", line 697, in runner
    await self.start(*args, **kwargs)
  File "C:\Users\orang\Projects\PythonProjects\discord_lyrics_bot\venv\lib\site-packages\discord\client.py", line 660, in start
    await self.login(*args, bot=bot)
  File "C:\Users\orang\Projects\PythonProjects\discord_lyrics_bot\venv\lib\site-packages\discord\client.py", line 509, in login
    await self.http.static_login(token.strip(), bot=bot)
  File "C:\Users\orang\Projects\PythonProjects\discord_lyrics_bot\venv\lib\site-packages\discord\http.py", line 297, in static_login
    raise LoginFailure('Improper token has been passed.') from exc
discord.errors.LoginFailure: Improper token has been passed.
Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x00000217D658C670>
Traceback (most recent call last):
  File "C:\Users\orang\AppData\Local\Programs\Python\Python38\lib\asyncio\proactor_events.py", line 116, in __del__
    self.close()
  File "C:\Users\orang\AppData\Local\Programs\Python\Python38\lib\asyncio\proactor_events.py", line 108, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "C:\Users\orang\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 719, in call_soon
    self._check_closed()
  File "C:\Users\orang\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 508, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

2 个答案:

答案 0 :(得分:0)

您使用了错误的不和谐令牌。首先,你泄露了你的机器人令牌

bot.run('Bxb-8dRGeYHYLFD5-IXGhNfY1TnX3kKA')

尽快恢复您的脚趾。其次,确保您在 Bot 选项卡中获取了令牌,并且您没有获得任何其他令牌。我可以看出令牌太短并且是错误的令牌。

答案 1 :(得分:0)

我很确定您使用的是 client secret 代码,它不是您的机器人的令牌。您需要做的是转到 Discord 开发者门户中的 applications。到达那里后,单击您的机器人应用程序,然后转到左侧的 Bot 选项卡(它旁边会有一个小拼图)。在那里,您应该会在 Click to Reveal Token 下看到 Build-A-Bot。您可以单击它并复制显示的内容,或者您​​可以简单地单击 Copy 按钮,它会自动为您复制机器人的令牌。请不要与任何人共享您的令牌,因为如果其他人有权访问它,它可用于运行其他人的代码。如果您已经泄露了它,请继续点击 Regenerate 按钮,这将为您的机器人提供一个新令牌,并且它将使旧令牌无效,以便没有人可以再使用您的机器人。