discord.ext.commands.errors.CommandInvokeError:命令引发了一个异常:ValueError:int()以10为底的无效文字:''

时间:2020-07-20 16:02:49

标签: python discord

我是初学者不和谐的机器人制造商,并且使用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: ''

如果您知道解决此问题的方法,请回复,并提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要回答的问题是,当您读取一个空文件时会发生什么-将没有任何信息可解析为整数(您的代码将尝试执行int(''),这是不可能的)!您可以通过添加一些错误检查来解决它:

money = int(money) if money else 0

除此之外,我建议您浏览python的with语句以处理文件操作,这将帮助您避免错误,例如函数调用周围的括号丢失(f.close应该是{{1 }})。请参见链接的示例here

最后,我建议您使用一个编辑器,该编辑器在编写代码时突出显示问题,例如PyCharm。您也可以join Python's discord,并在遇到问题时很好地问别人。