Делайте простые вещи с роботом Google Wave

Я хотел добавить к роботу 3 функции из туториала: http://code.google.com/apis/wave/extensions/robots/python-tutorial.html

До добавления всех этих функций мой робот работает как положено. Теперь нечетные функции по-прежнему отображаются (с «v2» на заднем плане сообщения), но ни одна из новых функций не отображается! Пробовал уже разные способы, все равно не работает. Ниже приведен код, который, как мне кажется, выглядит более логично. Может кто-нибудь сказать мне, почему никто не работает?

Функция 1 — хотел попробовать AppendText
Функция 2 – хотел, чтобы робот обнаружил сообщение отправлено
Функция 3 – хотел, чтобы робот добавил сообщение с удаленным содержимым старого сообщения.

from waveapi import events
from waveapi import model
from waveapi import robot

def OnParticipantsChanged(properties, context):
  """Invoked when any participants have been added/removed."""
  added = properties['participantsAdded']
  for p in added:
    Notify(context)

def OnRobotAdded(properties, context):
  """Invoked when the robot has been added."""
  root_wavelet = context.GetRootWavelet()
  """feature 1"""
  root_wavelet.CreateBlip().GetDocument().SetText("I'm alive! v2").GetDocument().AppendText("xxx")

def Notify(context):
  root_wavelet = context.GetRootWavelet()
  root_wavelet.CreateBlip().GetDocument().SetText("Hi everybody! v2")

  """feature 2"""
def OnBlipSubmitted(properties, context):
  blip = context.GetBlipById(properties['blipId'])
  blip.GetDocument().AppendText("xxx")

  """feature 3"""
def OnBlipDeleted(properties, context):
  blip = context.GetBlipById(properties['blipId'])
  contents = blip.GetDocument().GetText()  
  root_wavelet = context.GetRootWavelet()
  root_wavelet.CreateBlip().GetDocument().SetText(contents)

if __name__ == '__main__':
  myRobot = robot.Robot('appName', 
      image_url='http://appName.appspot.com/icon.png',
      version='1',
      profile_url='http://appName.appspot.com/') 
  myRobot.RegisterHandler(events.WAVELET_PARTICIPANTS_CHANGED, OnParticipantsChanged)
  myRobot.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)   
  """myRobot.RegisterHandler(events.BLIP_SUMBITTED, OnBlipSubmitted)
  myRobot.RegisterHandler(events.BLIP_DELETED, OnBlipDeleted)"""
  myRobot.Run()

Изменить (важно)

Я только что заметил, что в обычном режиме он ведет себя иначе, чем в режиме песочницы. В обычном режиме я вижу оба сообщения "Я жив! v2" и "Привет всем! v2", но в режиме песочницы я вижу только 1-е. Ни в том, ни в другом случае я не вижу добавленного текста.

Причина, по которой я прокомментировал эту часть """myRobot.RegisterHandler(events.BLIP_SUMBITTED, OnBlipSubmitted) myRobot.RegisterHandler(events.BLIP_DELETED, OnBlipDeleted)""" заключается в том, что без комментариев робот вообще ничего не делает!


person yeeen    schedule 19.02.2010    source источник
comment
events.BLIP_SUMBITTED кажется мне ошибкой.   -  person Russell Borogove    schedule 07.07.2011
comment
Я проголосовал за то, чтобы закрыть это, так как решение состояло в том, чтобы исправить опечатку.   -  person halfer    schedule 01.12.2018


Ответы (1)


events.BLIP_SUMBITTED должно быть events.BLIP_SUBMITTED

person Bogdacutu    schedule 26.07.2011