我想从这里的教程中为机器人添加 3 个功能: http ://code.google.com/apis/wave/extensions/robots/python-tutorial.html
在添加所有这些功能之前,我的机器人正在按预期工作。现在奇怪的功能仍然出现(在 blip 内容的后面带有“v2”),但没有一个新功能出现!我已经尝试了不同的方法,仍然不起作用。下面是我认为看起来更合乎逻辑的代码。有人能告诉我为什么似乎没有一个工作吗?
功能 1 - 想要试用 AppendText
功能 2 - 想要机器人检测到 blip 已提交
Feature 3 - 想要机器人添加一个 blip 并删除旧 blip 的内容。
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”,但在沙盒模式下,我只能看到第一个。在这两种情况下,我都看到了附加的文本。
我之所以评论这部分“”“myRobot.RegisterHandler(events.BLIP_SUMBITTED, OnBlipSubmitted) myRobot.RegisterHandler(events.BLIP_DELETED, OnBlipDeleted)""" 是因为不评论它,机器人根本不做任何事情!