您好,我目前正在尝试使用MongoDB在线服务为我的Discord机器人制作一个带有经济系统的机器人,但是我似乎无法让我的代码使用这两个工具!平衡或平衡!“工作”命令,因为它不断出现以下错误:
错误:
2020-12-24T20:04:16.360587+00:00 app[worker.1]: Ignoring exception in command balance:
2020-12-24T20:04:16.362250+00:00 app[worker.1]: Traceback (most recent call last):
2020-12-24T20:04:16.362335+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.6/site-packages/discord/ext/commands/core.py", line 85, in wrapped
2020-12-24T20:04:16.362336+00:00 app[worker.1]: ret = await coro(*args, **kwargs)
2020-12-24T20:04:16.362369+00:00 app[worker.1]: File "bot.py", line 43, in balance
2020-12-24T20:04:16.362369+00:00 app[worker.1]: await open_account(ctx.author)
2020-12-24T20:04:16.362445+00:00 app[worker.1]: File "bot.py", line 79, in open_account
2020-12-24T20:04:16.362447+00:00 app[worker.1]: discorduserid = ctx.author
2020-12-24T20:04:16.362498+00:00 app[worker.1]: AttributeError: 'Member' object has no attribute 'author'
代码:
@bot.command()
async def balance(ctx):
await open_account(ctx.author)
discorduserid = str(member.id)
results = collection.find({"userid":discorduserid})
for result in results:
wallet_amt = result["points"]
em = discord.Embed(title = f"{ctx.author.name}'s balance", colour = discord.Colour.red())
em.add_field(name = "Wallet", value = wallet_amt)
await ctx.send(embed = em)
@bot.command()
@commands.cooldown(1, 43200, commands.BucketType.user)
async def work(ctx):
await open_account(ctx.author)
discorduserid = ctx.message.author
earnings = random.randrange(500)
await ctx.send(f"You went to work and earned {earnings} coins!")
results = collection.update_many({"userid":discorduserid}, {"$inc":{"points":earnings}})
@work.error
async def work_error(ctx, error):
if isinstance(error, commands.CommandOnCooldown):
timerem = str(timedelta(error.retry_after/28800)).split(".")[0]
msg1 = 'This command is on cooldown, please try again in '
msg2 = msg1 + timerem
await ctx.send(msg2)
else:
raise error
async def open_account(ctx):
discorduserid = ctx.author
if collection.find({"userid":discorduserid}):
return False
else:
newentry = {"userid":discorduserid, "points":0}
我阅读了您的代码,发现了一些问题,请尝试我从您的代码中修改的代码
@bot.command()
async def balance(ctx):
await open_account(ctx.author)
discorduserid = ctx.author.id
document = collection.find_one({"userid":discorduserid})
print(document)
wallet_amt = document["points"]
em = discord.Embed(title = f"{ctx.author.name}'s balance", colour = discord.Colour.red())
em.add_field(name = "Wallet", value = wallet_amt)
await ctx.send(embed = em)
@bot.command()
@commands.cooldown(1, 43200, commands.BucketType.user)
async def work(ctx):
await open_account(ctx.author)
discorduserid = ctx.author.id
earnings = random.randrange(500)
await ctx.send(f"You went to work and earned {earnings} coins!")
doc = collection.find_one({"userid":discorduserid}})
total_earnings = doc["points] + earnings
results = collection.update_one({"userid":discorduserid}, {"$set":{"points":total_earnings}})
@work.error
async def work_error(ctx, error):
if isinstance(error, commands.CommandOnCooldown):
timerem = str(timedelta(error.retry_after/28800)).split(".")[0]
msg1 = 'This command is on cooldown, please try again in '
msg2 = msg1 + timerem
await ctx.send(msg2)
else:
raise error
async def open_account(user: discord.User):
discorduserid = user.id
doc = collection.find_one({"userid": discorduserid})
if doc != None:
print(doc)
else:
print(doc)
newentry = {"userid":discorduserid, "points":0}
collection.insert_one(new_entry)
我希望这有帮助。祝你有美好的一天!
问题内容: 我正在尝试制作一个游戏,希望用户更改其输入键,例如,他们按A键,然后将变量更改为A键,以便在游戏中按A键时它们向上移动。任何帮助或建议,将不胜感激。 这段代码的当前问题是,它给了我一个与按下的键相对应的列表,我需要一个键标识符,以便以后可以用来移动精灵。 问题答案: 当您收到事件时,您已经按了 顺便说一句:每个事件可能有不同的字段。您可以在文档的黄色列表中看到所有内容:事件
问题内容: 我有一个程序,可以从我的代码成功执行cmd命令,但我希望能够从cmd命令获取输出。我怎样才能做到这一点? 到目前为止,我的代码是: Second.java: 和Main.java 我可以通过检查Second.class来检查第一个命令是否正常工作,但是如果该类产生了一些错误,我将如何看到该错误呢? 问题答案: 您需要流程的OutputStream(InputStream)(并且应该使用
我有一个文件,它有一个到.sh文件的路由列表,但是要执行脚本,需要一个日期,该文件的日期是。当我运行执行脚本列表的脚本时,我会用命令提示用户输入日期。
问题内容: 在Python中,通过而不是打扰其输出来调用命令的最短和标准方法是什么。 我尝试了,但是似乎返回了输出。我对此并不感到烦恼,我只需要在不使输出混乱的情况下静默运行程序即可。 如果有帮助,我正在打电话给我,我的意图只是打电话给我。 问题答案: p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
问题内容: 你知道在Linux中尝试使用Sudo时会如何提示你输入密码,并且在键入时在终端窗口中什么也不显示(未显示密码)吗? 有没有办法在Python中做到这一点?我正在编写一个脚本,该脚本需要非常敏感的信息,并希望在键入时将其隐藏。 换句话说,我想从用户那里获取密码而不显示密码。 问题答案: 用途: 可以将可选提示作为参数传递;默认值为” “。 请注意,此功能需要正确的终端,因此它可以关闭键入
所以在我的应用程序中,我显然想为用户提供重置密码的方法。我遇到的问题是,用户池的新留档在这个主题上非常模糊。以下是他们告诉你忘记密码流要做的事情,你可以在以下链接找到: http://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-javascript-exampl