python - Python Discord 机器人问题
问题描述
这是一篇很长的文章。所以基本上我试图编写一个基于哈利波特的 Python 机器人,在我的电脑上我使用 repl.it,在我的笔记本电脑上我使用 PyCharm CE。我的笔记本电脑没有检测到任何类型的不和谐(如导入不和谐),我的电脑出现错误“AttributeError:'NoneType'对象没有属性'strip'”。加上 repl.it 不允许我创建 .env 文件,我无法弄清楚如何使用 Secrets(环境变量)。我的笔记本电脑也不会让我重新安装/卸载不和谐,并出现很多错误(当我尝试强制重新安装时出现错误,权限被拒绝等。我不知道如何更改权限)以下是麻烦的代码。请注意,它们在两个平台上完全相同
import os
client = discord.Client()
@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('TOKEN'))'''
解决方案
简短的回答:
在最后一行中,只需更改client.run(os.getenv('TOKEN'))
为字符串格式的实际机器人令牌所在的client.run('<bot-token>')
位置。'<bot-token>'
(如果您不确定在哪里可以找到您的机器人的机器人令牌,此链接可能会有所帮助)
长答案:
该client.run()
函数需要您的机器人令牌作为字符串格式的参数。从您提到的错误消息来看,它似乎os.getenv('TOKEN')
正在返回None
值,并且似乎在内部它试图剥离给定的令牌并且未能剥离它,因为None
值不像字符串值那样具有剥离属性。您是否将您的机器人令牌存储在字符串格式的密钥'TOKEN'
中?os.environ
除非你这样做,否则我认为你根本不应该使用os.getenv('TOKEN')
。只需将机器人令牌作为字符串输入,直接作为client.run()
. (如果您不确定在哪里可以找到您的机器人的机器人令牌,此链接可能会有所帮助)
顺便说一句,我假设'''
最后是一个错字,如果不是,请删除它!
因此,新代码如下所示:
import os
import discord
client = discord.Client()
@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('<your bot token>')
推荐阅读
- python - 如何使用 var.split
- excel - Excel VBA,如何实现这种格式化?Nmbr 带逗号并四舍五入到小数点后 2 位
- math - 在计算机上计算 tan 的最快方法是什么?
- c# - 如何访问 Authors 中的值?
- riscv - gem5模拟器上的RISCV 32位架构
- android - 颤振字符串在未来为空
- google-cloud-platform - 谷歌云 NLP API (documents.analyzeEntities) 的 Json 格式
- json - 使用 JOLT 需要使用 If Then Else 条件转换 JSON 对象
- sql-server - Microsoft SQL Server 的 JDBC 驱动程序:在从属和主控之间自动切换读取和写入
- php - SSH 和 exec() 用户不同