当前位置: 首页 > 知识库问答 >
问题:

不和谐机器人-"属性错误:'NoneType'对象没有属性'条。'

王建华
2023-03-14

我是一个新的程序员,我一直在学习如何创建一个不和谐机器人的教程,下面的代码实际上是直接从教程中复制出来的,我已经创建了一个. env文件来存储我的AuthToken。每次我运行代码,我得到的错误低于上述代码。有什么提示吗?提前感谢!

代码:

import os 

import discord

from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')

client = discord.Client()

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

错误:

Traceback (most recent call last):   File "/Users/XXXXXXXXXXXX/scratch/discordbot/app.py", line 16, in <module>
    client.run(TOKEN)   File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 640, in run
    return future.result()   File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 621, in runner
    await self.start(*args, **kwargs)   File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 584, in start
    await self.login(*args, bot=bot)   File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 442, in login
    await self.http.static_login(token.strip(), bot=bot) AttributeError: 'NoneType' object has no attribute 'strip' 

共有3个答案

林富
2023-03-14

错误是由于TOKEN被设置为,这是os.getenv('DISCORD_TOKEN')返回如果变量不存在或它存在并设置为

确保你的安全。env文件位于同一目录中,例如:

.
├── .env
└── bot.py

令牌是一个环境变量,而不是python变量。环境变量的赋值遵循您正在使用的shell的语法。这意味着=符号周围没有空格。

请注意使用dotenv将变量导出到shell时的操作顺序(请参见此处的自述):

Python-dotenv可以使用POSIX变量扩展插值变量。

变量的值是以下列表中定义的第一个值:

  • 环境中变量的值。
  • . env文件中变量的值。
  • 默认值,如果提供。
  • 空字符串。

确保变量被类似{}的${HOME}包围,因为诸如$HOME之类的裸变量不会展开。

给出的例子是:

CONFIG_PATH=${HOME}/.config/foo
DOMAIN=example.org
EMAIL=admin@${DOMAIN}
DEBUG=${DEBUG:-false

因此,您可能需要在继续之前清除相关的shell变量,因为dotenv将尝试的第一件事是使用已定义的变量,它可能在初始设置时被设置为空字符串(例如,unset DISCORD_TOKEN,或者使用类似于source~/.bashrc的东西重新启动shell)。

出于调试目的,我建议使用print(os.getenv('DISCORD_-TOKEN'))查看此变量的确切设置。您还可以尝试在环境设置期间查看load_dotenv(verbose=True)的输出。

裴昕
2023-03-14

此错误是由于在中获取令牌值失败引起的。可通过以下方式解析的环境文件:-

from dotenv import load_dotenv
load_dotenv('---.env')

它为我工作!!!

姚实
2023-03-14

我遵循相同的教程,遇到了相同的错误。我的问题是我创建的“.env”文件不正确。在教程中,它说“在与bot.py相同的目录中创建一个名为.env的文件”-这是我的问题。如果您创建了一个新的文本文档,请粘贴到代码中,然后用名称“.env”保存它,实际上您将创建一个名为“.env.txt”的文本文件。

要解决这个问题,请转到保存python脚本的目录(对我来说,这是C:\Thonny\DiscordBots),然后右键单击该文件夹并选择“新建”

如果您这样做是正确的,您应该在文件资源管理器中看到您的“. env”文件,并且“类型”列现在将显示“ENV文件”而不是“文本文档”。尝试再次运行代码。

这就是帮助我的地方。我的理解是load_dotenv()是寻找一个ENV类型的文件,而不仅仅是任何称为. env(任何类型)的文档。只要这个文件与您正在运行的脚本放在同一个目录中,它就可以工作。

 类似资料:
  • 我正在使用Python开发一个Discord机器人。并获取以下错误(AttributeError:'NoneType'对象没有属性'strip')。这是我的密码。

  • 我遇到了这个错误,它不允许我在表单中保存信息。初始数据在表单中显示良好,但保存起来很困难。希望有人能帮忙,我真的被困了 追踪: 内部 41 中的文件“C:\程序文件\Python35\lib\site-packages\django\core\处理程序\exception.py”。响应 = get_response(请求) 文件"C:\Program Files\Python35\lib\site

  • 我是硒网络驱动程序的新手,目前使用Python来编写脚本。现在我想应用参数,我使用Excel应用了数据驱动方法。基本上只有第一个循环ok,它可以读取和写入第一行的数据,但之后不能。 首先,我在Python文件中创建它(作为新模块): 接下来,我编写以下代码以在登录和注销过程中包含数据驱动测试: 我得到了错误属性错误:“NoneType”对象没有属性“send_keys”,所以我认为包括等待/睡眠可

  • 如果pk_col值为空,则应打印未定义的主键。但我得到了这个错误。“NoneType”对象没有属性“rdd”。

  • 问题内容: 下面的代码给出了错误: 码: 问题答案: 从代码中,我可以看到你希望允许用户下载pdf。 现在开始 去 http://localhost:5000

  • 问题内容: 我的程序看起来像 当我运行它时,它会抛出我 不知道为什么会这样?当我已经在每个列表的开头创建列表时 问题答案: 实际上,您存储在此处: 更改列表并返回 例: