Discord机器人启动报错(TypeError: Token为NoneType)求助
Discord机器人Token加载失败问题排查
问题描述
开发Discord机器人时,已配置intents:
intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents)
尝试启动机器人时触发如下错误:
Traceback (most recent call last): File "main.py", line 21, in <module> client.run(os.getenv('TOKEN')) File "/home/runner/WhopperBot/venv/lib/python3.10/site-packages/discord/client.py", line 860, in run asyncio.run(runner()) File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/asyncio/runners.py", line 44, in run return loop.run_until_complete(main) File "/nix/store/hd4cc9rh83j291r5539hkf6qd8lgiikb-python3-3.10.8/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete return future.result() File "/home/runner/WhopperBot/venv/lib/python3.10/site-packages/discord/client.py", line 849, in runner await self.start(token, reconnect=reconnect) File "/home/runner/WhopperBot/venv/lib/python3.10/site-packages/discord/client.py", line 777, in start await self.login(token) File "/home/runner/WhopperBot/venv/lib/python3.10/site-packages/discord/client.py", line 609, in login raise TypeError(f'expected token to be a str, received {token.__class__.__name__} instead') TypeError: expected token to be a str, received NoneType instead
已重置机器人Token,但错误仍持续出现。
解决方法
- 检查环境变量配置:
错误核心是os.getenv('TOKEN')返回None,说明系统中未配置名为TOKEN的环境变量:- 在线运行平台(如Replit):找到项目的「Secrets」或「环境变量」选项,添加键为
TOKEN、值为机器人Token的条目。 - 本地运行:创建
.env文件(需先安装python-dotenv包),写入TOKEN=你的机器人Token,并在代码开头添加:from dotenv import load_dotenv load_dotenv()
- 在线运行平台(如Replit):找到项目的「Secrets」或「环境变量」选项,添加键为
- 验证环境变量名:确保代码中
os.getenv的参数与你设置的环境变量名称完全一致(大小写敏感),比如不要写成token或TOKEN_1。 - 临时测试(不推荐生产环境):若仅用于测试,可直接将Token以字符串形式传入
client.run,但注意不要将代码上传至公开仓库,避免Token泄露:client.run('你的机器人Token') - 确认Token完整性:重置Token后,复制时不要包含多余空格或换行符,确保内容完整无遗漏。
内容的提问来源于stack exchange,提问作者bruh
相关产品推荐
相关产品推荐

