我刚开始用 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
答案 0 :(得分:0)
您使用了错误的不和谐令牌。首先,你泄露了你的机器人令牌
bot.run('Bxb-8dRGeYHYLFD5-IXGhNfY1TnX3kKA')
尽快恢复您的脚趾。其次,确保您在 Bot 选项卡中获取了令牌,并且您没有获得任何其他令牌。我可以看出令牌太短并且是错误的令牌。
答案 1 :(得分:0)
我很确定您使用的是 client secret
代码,它不是您的机器人的令牌。您需要做的是转到 Discord 开发者门户中的 applications。到达那里后,单击您的机器人应用程序,然后转到左侧的 Bot
选项卡(它旁边会有一个小拼图)。在那里,您应该会在 Click to Reveal Token
下看到 Build-A-Bot
。您可以单击它并复制显示的内容,或者您可以简单地单击 Copy
按钮,它会自动为您复制机器人的令牌。请不要与任何人共享您的令牌,因为如果其他人有权访问它,它可用于运行其他人的代码。如果您已经泄露了它,请继续点击 Regenerate
按钮,这将为您的机器人提供一个新令牌,并且它将使旧令牌无效,以便没有人可以再使用您的机器人。>