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

如何解决Discord机器人的AttributeError: 'NoneType'无strip属性问题

解决Discord Bot启动时的AttributeError: 'NoneType' object has no attribute 'strip'

嘿,我来帮你搞定这个问题!这个报错的根源很明确:你传给client.run()的是None,而Discord的库尝试对这个None调用strip()方法,自然就触发了错误。

看你的代码和回溯信息,问题出在环境变量的读取上:你的代码里写的是client.run(os.getenv('discord api')),但回溯里显示你实际传入的是os.getenv('NzkzNzczNDUwODQ5NDE5Mjk2.X-xJIg.MoKUA7czhrWtFvu4FEc6M3JAQQM')——你把Bot的token本身当成了环境变量的名字,这肯定找不到对应的环境变量,所以os.getenv()返回了None。

给你几个可行的解决方案:

方案1:正确使用环境变量(推荐)

这是最安全的做法,能避免token泄露:

  • 先在你的系统里设置一个环境变量,比如叫DISCORD_BOT_TOKEN,把你的Bot token作为它的值:
    • Windows:打开命令提示符,输入setx DISCORD_BOT_TOKEN "你的完整token",然后重启你的代码编辑器/命令行窗口。
    • macOS/Linux:在终端里输入export DISCORD_BOT_TOKEN="你的完整token",如果想永久生效,就把这行添加到~/.bashrc或~/.zshrc文件里。
  • 然后修改代码里的client.run行:
client.run(os.getenv('DISCORD_BOT_TOKEN'))

方案2:直接传入token(仅测试用)

如果你只是临时测试,不想折腾环境变量,可以直接把token字符串传进去,但千万不要把这个代码上传到GitHub之类的公共仓库,不然你的Bot会被别人盗用:

client.run("NzkzNzczNDUwODQ5NDE5Mjk2.X-xJIg.MoKUA7czhrWtFvu4FEc6M3JAQQM")

额外提醒

如果你的discord.py版本是2.x及以上,别忘了开启消息内容意图,不然你的on_message事件可能不会触发:

import discord
import os

# 添加这两行开启意图
intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

client.run(os.getenv('DISCORD_BOT_TOKEN')) # 或者直接传token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:27:08