def analyze(self): """消息分析处理 """ print "#############start analyze##################" msgtype = self.getXmlArgs("MsgType") print "msgtype:%s" % msgtype ToUserName = self.getXmlArgs("ToUserName") FromUserName = self.getXmlArgs("FromUserName") #如果是事件消息 if msgtype == "event": event = self.getXmlArgs("Event") #关注事件 if event == "subscribe": response = wservice.call("subscribe", FromUserName, "") return pushmsg.produceResponsedMsg(FromUserName, ToUserName, response.get("data")) #取消关注事件 elif event == "unsubscribe": response = wservice.call("unsubscribe", FromUserName, "") return pushmsg.produceResponsedMsg(FromUserName, ToUserName, response.get("data")) #菜单事件 else: msg = self.getXmlArgs("EventKey") #如果是发送消息 elif msgtype == "text": msg = self.getXmlArgs("Content") #如果是语音消息 elif msgtype == "voice": msg = self.getXmlArgs("Recognition") try: #检测用户是否存在 weiuser = Role.objects.get(openid=FromUserName) except DoesNotExist, e: #如果不存在,则关注 response = wservice.call("subscribe", FromUserName, "") return pushmsg.produceResponsedMsg(FromUserName, ToUserName, response.get("data"))
def subscribe(openid,request): """生成用户,用户关注 """ try: weiuser = role.Role.objects.get(openid=openid) except: weiuser = None #如果已经关注过 if weiuser: #if weiuser.nickname:#如果已经取名 #player = Charater(weiuser) #player.addRoleMessage(["欢迎回来!!!"]) #player.model.save() return wservice.call("nowplot",openid,request) else: #如果没关注过 weiuser = role.Role(openid=openid,subscribe_time=datetime.datetime.now()) weiuser.save() player = Charater(weiuser) player.plot.notice("subscribe") player.model.save() return {"result":True,"data":""}
def changeFormation(openid, request): """更换阵法 """ weiuser = Role.objects.get(openid=openid) player = Charater(weiuser) plist = request.split('@') ps = [int(p) for p in plist[1:] if p.isdigit()] if not ps: player.formation.reset() else: try: ps.append(0) #加入主角 partners = [player.partners.getPartnerBySeqno(p + 1) for p in ps] except IndexError: return {"result": True, "data": "伙伴序号有误,请重新选择"} player.formation.reset() partners.sort(key=operator.attrgetter("formationSerial")) for i, p in enumerate(partners, start=1): player.formation.setFormation(i, p.template) player.model.save() return wservice.call("formation_info", openid, request)
def property_skill_choice(openid, request): try: return wservice.call(_PS[int(request) - 1][1], openid, request) except (ValueError, IndexError): return {"result": True, "data": "功能序号有误"}
def formation_tavern_choice(openid, request): try: return wservice.call(_FT[int(request) - 1][1], openid, request) except (ValueError, IndexError): return {"result": True, "data": "功能序号有误"}
else: msg = self.getXmlArgs("EventKey") #如果是发送消息 elif msgtype == "text": msg = self.getXmlArgs("Content") #如果是语音消息 elif msgtype == "voice": msg = self.getXmlArgs("Recognition") try: #检测用户是否存在 weiuser = Role.objects.get(openid=FromUserName) except DoesNotExist, e: #如果不存在,则关注 response = wservice.call("subscribe", FromUserName, "") return pushmsg.produceResponsedMsg(FromUserName, ToUserName, response.get("data")) except Exception, e: response = error_msg() return pushmsg.produceResponsedMsg(FromUserName, ToUserName, response.get("data")) #用户操作行为分析 action = self.actionGuess(FromUserName, msg) print "################actionGuess:[%s]#############:" % (action) ########################## try: response = wservice.call(action, FromUserName, msg) except Exception, e: #发送错误信息 response = error_msg() ########################## return pushmsg.produceResponsedMsg(FromUserName, ToUserName, response.get("data"))