You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python搭建Discord bot无法连接,os.getenv报错缺少key参数如何解决?

问题修复方案

TypeError: getenv() missing 1 required positional argument: 'key' 报错的核心原因是os.getenv()方法必须传入你.env文件中存储Discord令牌的变量名作为参数,不能留空。

步骤1:确认.env文件格式

打开你命名为---.env的文件,确保内部存储令牌的行格式如下(变量名可自定义,常用DISCORD_TOKEN):

DISCORD_TOKEN=你实际的bot令牌字符串

注意:等号前后不要加引号,也不要留多余空格

步骤2:修正代码两处错误

第一处:补全os.getenv()参数

把TOKEN = os.getenv()改成TOKEN = os.getenv("DISCORD_TOKEN"),括号内的字符串要和你.env文件里的变量名完全一致,区分大小写。

第二处:修正on_ready函数缩进

你当前代码里async def on_ready():前面多了一个多余空格,discord.py要求被事件装饰器修饰的函数必须和装饰器缩进对齐,否则会触发缩进错误。

修正后完整代码示例

import os
import discord
from dotenv import load_dotenv

# 加载指定名称的.env文件
load_dotenv("---.env")
# 传入.env中对应的令牌变量名,需和.env里的变量名完全一致
TOKEN = os.getenv("DISCORD_TOKEN")

# discord.py v2.0及以上版本需显式声明intents,v1.x版本可直接写 client = discord.Client()
intents = discord.Intents.default()
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'{client.user} has connected to Discord!')

client.run(TOKEN)

额外注意事项

  • 如果你使用的是discord.py 2.0以上版本,除了代码中声明Intents外,还需要在Discord开发者后台的Bot设置页开启对应的Privileged Gateway Intents权限。
  • 确保---.env文件和你当前运行的Python脚本在同一个文件夹下,否则load_dotenv()需要传入.env文件的绝对路径才能正常读取。
  • 若运行后提示传入的TOKEN为None,优先检查.env文件路径是否正确,文件内的变量名是否和os.getenv()传入的参数大小写完全匹配。

内容的提问来源于stack exchange,提问作者Puppers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:57:04