【问题标题】:Trying to make a discord bot, but it won't connect to discord试图制作一个不和谐的机器人,但它不会连接到不和谐
【发布时间】:2021-08-19 05:19:24
【问题描述】:

我已经摸索了好几个小时,但我似乎无法让我的机器人连接到不和谐,我正在为机器人使用此代码:

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)

还有这个用于 .env 文件

DISCORD_TOKEN = "token here"

然而,这个错误一直在运行:

    Traceback (most recent call last):
  File "C:\Users\amber\OneDrive\Desktop\Python39\MemeBot\MemeBot.py", line 16, in <module>
    client.run(TOKEN)
  File "C:\Users\amber\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\client.py", line 723, in run
    return future.result()
  File "C:\Users\amber\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\client.py", line 702, in runner
    await self.start(*args, **kwargs)
  File "C:\Users\amber\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\client.py", line 665, in start
    await self.login(*args, bot=bot)
  File "C:\Users\amber\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\client.py", line 511, in login
    await self.http.static_login(token.strip(), bot=bot)
AttributeError: 'NoneType' object has no attribute 'strip'

我很难过,任何帮助将不胜感激:)

【问题讨论】:

  • DISCORD_TOKEN 未在环境中找到,因此 os.getenv('DISCORD_TOKEN') 返回 None。
  • 我试图通过删除 os.getenv('DISCORD_TOKEN') 代码中的引号来修复它,所以它将是 os.getenv(DISCORD_TOKEN) 但得到了这个:( Traceback (most recent call last): File "C:\Users\amber\OneDrive\Desktop\Python39\MindfulBot\MindfulBot.py", line 8, in &lt;module&gt; TOKEN = os.getenv(DISCORD_TOKEN) NameError: name 'DISCORD_TOKEN' is not defined跨度>

标签: python discord bots


【解决方案1】:

TL;DR:将 .env 文件放在与脚本相同或更高的目录中


问题在于 discord 库试图剥离您的令牌,但它是 None 类型。所以你的环境变量没有正确加载。

确保您的.env 文件位于目录结构中的正确位置并且加载正确。来自文档:https://pypi.org/project/python-dotenv/

默认情况下,load_dotenv 不会覆盖现有环境 变量。

要配置开发环境,在根目录下添加 .env 项目目录:

├── .env
└── foo.py

只需将 .env 文件和 python 脚本放在同一目录中,我就能让您的代码正常工作。

【讨论】:

  • 在哪里可以找到我的根目录?你能给我一个更好的例子吗?我是使用 dotenv 的新手
  • 所以你只想把它放在与脚本相同或更高的目录中。因为如果我理解正确,dotenv 只会搜索目录树以找到最近的 .env 文件。
  • 是的,但是我如何找到并编辑它并将 .env 文件放在比脚本更高的目录中
  • 我正在使用 Python 3.9 顺便说一句,如果这会影响任何事情
  • 所以看看包含代码的文件在哪里: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) 将您编写的.env 文件放在与该文件相同的目录中。你的代码文件。
猜你喜欢
  • 2021-09-11
  • 2018-03-20
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 2021-01-17
  • 2019-05-06
相关资源
最近更新 更多