Google Wave Robot / Python Variable вопрос - PullRequest
1 голос
/ 19 мая 2010

Я экспериментирую / немного развлекаюсь с волновым роботом 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)

Хорошо, в общем, я хочу, чтобы он работал так, чтобы, когда кто-то нажимал «стривиа», бот распознавал, что кто-то хочет играть, поэтому он сначала проверяет переменную с именем triviaStatus, чтобы увидеть, играем ли мы уже, и идет ли оттуда. Довольно простые вещи.

Для того, чтобы это работало (и, фактически, этот код действительно предназначен для проверки этого вопроса), переменные должны были бы эффективно походить на переменные php $ _SESSION - то есть, они запоминают значение переменной каждый время кто-то мигает и не сбрасывается каждый раз.

Тем не менее, так ли это (если это не так, я предполагаю, что могу сделать то же самое, сохранив настройки переменных в текстовом файле или что-то в этом роде), я озадачен, потому что приведенный выше код не работает вообще , То есть робот не отвечает ни на стривию, ни на этривию. Если переменные не были сохранены, то если робот что-то должен просто ответить «Trivia Started» или «Trivia not running!» каждый раз. Но он просто не отвечает вообще.

Если я уберу проверку на 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 Ответ

1 голос
/ 19 мая 2010

Кажется, вам следует переименовать triviaStatus в trivia_status и убедиться, что trivia_status имеет какое-то значение, например, связать его с None перед первым использованием. В противном случае ваш код может вызвать исключения UnboundLocalError или NameError, поскольку triviaStatus / trivia_status не ссылается ни на один объект.

...