Google Wave Robot / Python变量问题

时间:2010-05-18 20:01:16

标签: python scope google-wave

我正在尝试/使用波浪机器人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"

谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎应该将triviaStatus重命名为trivia_status,并确保trivia_status具有某些价值,例如,在首次使用之前将其绑定到None。否则,由于UnboundLocalError / NameError未引用任何对象,您的代码可能会引发triviaStatustrivia_status例外。