使用Discord官方应用令牌登录机器人时触发"Improper token has been passed"错误的排查求助
Discord官方应用令牌登录机器人时触发"Improper token has been passed"错误的排查求助
我最近在开发Discord机器人时遇到了一个棘手的问题:每次运行代码,程序都会先提示正在登录,接着显示找到用户代理,但之后就直接抛出错误了。更奇怪的是,完全相同的代码用普通Discord账号的令牌运行时一切正常,可换成我自己在Discord开发者门户创建的官方应用的令牌就不行。
以下是我使用的代码:
import discord from discord.ext import commands # in player.py I have commented out import audioop in line 28 prefix = ["Yombot, ", "YomBot, ", "Yb, ", "YB, "] token = "token from bot tab in discord developer portal" client = commands.Bot(command_prefix=prefix, bot=True) @client.event async def on_ready(): print(f'Yombot has connected to Discord!') client.run(token)
我期望的结果:
机器人成功登录并处于可运行状态
实际发生的情况:
我遇到了如下错误:
E:\yombot\venv\Scripts\python.exe E:\yombot\main.py 2025-02-10 00:23:55 INFO discord.client Logging in using static token. 2025-02-10 00:23:56 INFO discord.http Found user agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36, build number 366955. Traceback (most recent call last): File "C:\Users\me\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\discord\http.py", line 994, in static_login data = await self.get_me() ^^^^^^^^^^^^^^^^^^^ File "C:\Users\me\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\discord\http.py", line 838, in request raise HTTPException(response, 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 "E:\yombot\main.py", line 19, in <module> client.run(token) ~~~~~~~~~~^^^^^^^ File "C:\Users\me\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\discord\client.py", line 938, in run asyncio.run(runner()) ~~~~~~~~~~~^^^^^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.752.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 195, in run return runner.run(main) ~~~~~~~~~~^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.752.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.752.0_x64__qbz5n2kfra8p0\Lib\asyncio\base_events.py", line 725, in run_until_complete return future.result() ~~~~~~~~~~~~~^^ File "C:\Users\me\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\discord\client.py", line 927, in runner await self.start(token, reconnect=reconnect) File "C:\Users\me\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\discord\client.py", line 857, in start await self.login(token) File "C:\Users\me\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\discord\client.py", line 698, in login data = await state.http.static_login(token.strip()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\me\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\discord\http.py", line 998, in static_login raise LoginFailure('Improper token has been passed') from exc discord.errors.LoginFailure: Improper token has been passed
备注:内容来源于stack exchange,提问作者Waffles




