我正在尝试/使用波浪机器人python apiv2获得一点乐趣。
我为机器人做了一个小小的8ball应用程序,工作正常,现在我正在尝试制作一个琐事应用程序。
我从未用Python编程,但我很确定我的语法是正确的。以下是相关代码:
elif (bliptxt == "\n!strivia"):
reply = blip.reply()
if (triviaStatus != "playing"):
reply.append("Trivia Started!")
triviaStatus = "playing"
else:
reply.append("Trivia is already running!")
elif (bliptxt == "\n!etrivia"):
reply = blip.reply()
if (triviaStatus == "playing"):
reply.append("Trivia Ended!")
triviaStatus = "stopped"
else:
reply.append("Trivia is not running! To start trivia, type !strivia")
else: (snipped out)
好吧基本上我希望它能够工作,这样当有人眨眼“strivia”时,机器人会认识到有人想玩,所以它首先检查一个名为triviaStatus的变量,看看我们是否已经在玩并从那里开始。非常简单的东西。
为了使其工作(实际上,这段代码实际上是为了测试这个问题)变量需要有效地像php $ _SESSION变量 - 也就是说,它会记住每个变量的值时间有人眨眼,每次都不会重置。
然而,无论是否是这种情况(如果不是,那么我假设我可以通过在txt文件中保存变量设置来做同样的事情)我感到困惑,因为上面的代码根本不起作用。也就是说,机器人不回复!strivia或者!etrivia。如果变量没有保存,那么机器人应该只回复“Trivia Started”或“Trivia没有运行!”每一次。但它根本没有回复。
如果我删除了triviaStatus的检查,机器人会回复。但那时没有逻辑,我无法测试我的问题。
我也试过制作一个!trivstatus,用
回复"Trivia status is " + triviaStatus
但是这也引起了骚动。为什么每次我想使用triviaStatus时,机器人都会死掉?请注意,我能够设置triviaStatus(我只是不能通过回复来检查输出是什么......)
所以,总结一下......为什么上面的代码不起作用,但下面的代码可以工作:
elif (bliptxt == "\n!strivia"):
reply = blip.reply()
reply.append("Trivia Started!")
trivia_status = "playing"
elif (bliptxt == "\n!etrivia"):
reply = blip.reply()
reply.append("Trivia Ended!")
trivia_status = "stopped"
谢谢!
答案 0 :(得分:1)
您似乎应该将triviaStatus
重命名为trivia_status
,并确保trivia_status
具有某些价值,例如,在首次使用之前将其绑定到None
。否则,由于UnboundLocalError
/ NameError
未引用任何对象,您的代码可能会引发triviaStatus
或trivia_status
例外。