我是初学者不和谐的机器人制造商,并且使用python(对不起,如果我什么都不懂的话)。我见过很多解决此问题的线程和网站,但我听不懂,并且已经有几个月的问题了,所以我决定在此处发布。
代码:
@client.command()
async def work(ctx):
global profit, chance, money, percent
f= open(str(ctx.message.author.id)+".txt","a+")
f.close
f= open(str(ctx.message.author.id)+".txt","r")
f.seek(0)
money = str(f.read())
money = int(money)
f.close
#f = open("using.txt", "a+")
#f.write(",work - " + str(ctx.message.author) + " - " + str(ctx.message.author.id) + "\n")
#f.close
await ctx.send("Working")
percent = random.randint(1, 100)
profit = int(money) + int(percent)
f= open(str(ctx.message.author.id)+".txt","a+")
f.write(str(profit))
f.close
详细信息: 我正在尝试使我的discord机器人具有一个功能,该功能可以在每个玩家使用,work 时使用txt文件为每个玩家省钱。当他们再次工作时,机器人会读取txt文件,并将txt文件中的钱添加到他们的利润中,然后将其写回。
我不断遇到的错误是:
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: ValueError: invalid literal for int() with base 10: ''
如果您知道解决此问题的方法,请回复,并提前致谢。
答案 0 :(得分:0)
您需要回答的问题是,当您读取一个空文件时会发生什么-将没有任何信息可解析为整数(您的代码将尝试执行int('')
,这是不可能的)!您可以通过添加一些错误检查来解决它:
money = int(money) if money else 0
除此之外,我建议您浏览python的with
语句以处理文件操作,这将帮助您避免错误,例如函数调用周围的括号丢失(f.close
应该是{{1 }})。请参见链接的示例here。
最后,我建议您使用一个编辑器,该编辑器在编写代码时突出显示问题,例如PyCharm。您也可以join Python's discord,并在遇到问题时很好地问别人。