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

如何修复Python Discord Bot报错:'NoneType'对象无'strip'属性

报错根因

从报错栈可以直接定位到两个核心问题:

  1. 环境变量读取失败,os.getenv('DISCORD_TOKEN')返回了None,Discord库尝试对空值调用strip方法触发报错
  2. on_message回调未添加@client.event装饰器,即使登录成功也无法响应用户消息

分步解决方案

1. 修复环境变量读取问题

  • 确认项目根目录下存在.env文件,文件名仅为.env,不要带.txt等后缀
  • 打开.env文件,确保内容格式为DISCORD_TOKEN=你的机器人令牌,等号两侧不要加多余空格,令牌前后不要加引号
  • 可在读取环境变量后添加校验逻辑,提前识别配置问题:
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
# 新增校验逻辑
if not TOKEN:
    raise ValueError("未读取到DISCORD_TOKEN,请检查.env文件配置")

2. 修复消息回调注册问题

给on_message函数添加@client.event装饰器,让客户端注册这个事件回调:

@client.event # 补充该装饰器
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

3. 优化代码冗余部分

你已经将读取到的TOKEN存入了变量,client.run直接调用变量即可,不需要重复读取环境变量:
将client.run(os.getenv('DISCORD_TOKEN'))修改为client.run(TOKEN)

4. 高版本discord.py适配(v2.0及以上)

如果使用的是最新版discord.py,需要显式声明消息读取意图,否则无法正常接收消息内容:

  • 初始化Client时添加意图配置:
intents = discord.Intents.default()
intents.message_content = True # 开启消息内容读取权限
client = discord.Client(intents=intents)
  • 前往Discord开发者后台的Bot设置页面,打开「Message Content Intent」开关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:36:00