我正在尝试使用 python 制作一个 Discord 机器人,但是当我运行它时出现此错误:
TypeError: token must be of type str, not NoneType
如果你想查看我的代码,这里是:
import discord
import os
import random
from dotenv import load_dotenv
load_dotenv()
client = discord.Bot()
token = os.getenv('Token')
@client.event
async def on_ready():
print("Logged in as a bot {0.user}".format(client))
@client.event
async def on_message(message):
username = str(message.author).split("#")[0]
channel = str(message.channel.name)
user_message = str(message.content)
print(f'Message {user_message} by {username} on {channel}')
if message.author == client.user:
return
if channel == "random":
if user_message.lower() == "hello" or user_message.lower() == "hi":
await message.channel.send(f'Hello {username}')
return
elif user_message.lower() == "bye":
await message.channel.send(f'Bye {username}')
elif user_message.lower() == "tell me a joke":
jokes = [" Can someone please shed more\
light on how my lamp got stolen?",
"Why is she called llene? She\
stands on equal legs.",
"What do you call a gazelle in a \
lions territory? Denzel."]
await message.channel.send(random.choice(jokes))
client.run(token)
我的机器人令牌是假的,因为我不想让任何人知道它是令牌。请帮我解决这个问题。非常感谢!
如果您的 Discord 机器人托管在本地,无需公开共享或在线托管,您只需将 token 变量直接设置为您的 token 字符串即可。
token = 'MTAwNjA1NTQ4NTg3MjUzNzcwMQ.GcPn03.xeIRE4c1W0OF8aNtkA4hj1Nl2V6mowLV1BqWuU'
如果您想利用环境变量来保证您的机器人令牌的安全(通常当您想在线运行您的不和谐机器人时),传递给 os.getenv() 的参数应该是您在环境变量。
您的令牌值应该从环境变量名称中获取:
如果 token 为 None,那么不要做任何其他事情,因为你的程序没有 token 就无法运行
token = os.getenv('MY_TOKEN_VAR')
if not token:
print('ERROR: Token var is missing: MY_TOKEN_VAR')
sys.exit(-1)
如果您有“load-dotenv”依赖项,请验证“pip list”, 如果没有安装: pip install load-dotenv