RobotでBlipを消す

テストで色々発言したりさせたりするとどんどんゴチャゴチャしてくるので。

#/usr/bin/env python

from waveapi import events 
from waveapi import robot

def deleteAll(context):
    for blip in context.GetBlips():
        if not blip.IsRoot():
            blip.Delete()

def blipSubmitted(properties, context):
    blip = context.GetBlipById(properties['blipId'])
    text = blip.GetDocument().GetText()
    if text == '!delete\n':
        deleteAll(context)
        return

if __name__ == '__main__':
    sugyan_robot = robot.Robot(
        'sugyan_robot', 1.0,
        image_url = 'http://sugi1982.appspot.com/icon.png')
    sugyan_robot.RegisterHandler(events.BLIP_SUBMITTED, blipSubmitted)
    sugyan_robot.Run()

誰かが'!delete'と書いて'Done'を押すと、その発言を含むTreeをRoot以外削除する。
どうやら送信されるデータには必ず改行が入ってしまうようで、GetTextとマッチさせるには'!delete\n'と書かないと動かなかった。
contextからとったBlipsを全部削除するとホントにすべてなくなってしまって、そうすると新たに何か書いてもRobotが反応しなくなってしまった。
とりあえずRootのものを残すようにしたんだけど、このRootってなんだろう?いまだにWaveの中でのBlipsの構造というか階層がよく理解できてない。。