我是一个新的程序员,我一直在学习如何创建一个不和谐机器人的教程,下面的代码实际上是直接从教程中复制出来的,我已经创建了一个. 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'
错误是由于TOKEN
被设置为无
,这是os.getenv('DISCORD_TOKEN')
返回如果变量不存在或它存在并设置为无
。
确保你的安全。env文件位于同一目录中,例如:
.
├── .env
└── bot.py
令牌是一个环境变量,而不是python变量。环境变量的赋值遵循您正在使用的shell的语法。这意味着=
符号周围没有空格。
请注意使用dotenv
将变量导出到shell时的操作顺序(请参见此处的自述):
Python-dotenv可以使用POSIX变量扩展插值变量。
变量的值是以下列表中定义的第一个值:
确保变量被类似{}的${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)
的输出。
我遵循相同的教程,遇到了相同的错误。我的问题是我创建的“.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
问题内容: 我的程序看起来像 当我运行它时,它会抛出我 不知道为什么会这样?当我已经在每个列表的开头创建列表时 问题答案: 实际上,您存储在此处: 更改列表并返回 例: