From 26afb54cb72af5b1c379a3da89ef2736054d7381 Mon Sep 17 00:00:00 2001 From: 0xDEAD10CC <0x@DEAD10.CC> Date: Thu, 27 Jul 2017 02:46:39 -0700 Subject: [PATCH] update --- src/Droid.py | 138 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 91 insertions(+), 47 deletions(-) diff --git a/src/Droid.py b/src/Droid.py index 629da8f..b4603f9 100644 --- a/src/Droid.py +++ b/src/Droid.py @@ -10,10 +10,16 @@ class DroidControllerTask(CoindroidAPITask): super(DroidControllerTask, self).__init__(**kwargs) self.logger = logging.getLogger(self.__class__.__name__) self.droidTuple = namedtuple("droidTuple", - ["block_height", "action_id", "action_type", "player_id", "player_username", - "droid_id", "droid_name", "targetID", "targetName", "healthChangedFrom", - "healthChangedTo", "netDamageTaken", "experienceEarned", "grossDamagePerformed", - "experienceChangedFrom", "experienceChangedTo", + ["block_height", "action_id", + "action_type", "player_id", + "player_username", + "droid_id", "droid_name", "targetID", + "targetName", "healthChangedFrom", + "healthChangedTo", "netDamageTaken", + "experienceEarned", + "grossDamagePerformed", + "experienceChangedFrom", + "experienceChangedTo", ]) twilioAccount = "ACdfcd2b529db83954e8a0041796072960" twilioToken = "ab9b98a0b3da8a728d14774192773af2" @@ -21,35 +27,42 @@ class DroidControllerTask(CoindroidAPITask): def getDroidStats(self, event): return { - "block_height" : event.get("block_height"), - "action_id" : event.get("action_id"), - "action_type" : event.get("action_type"), - "player_id" : event.get("player_id"), - "player_username" : event.get("player_username"), - "droid_id" : event.get("droid_id"), - "droid_name" : event.get("droid_name"), - "targetID" : event.get("target").get("id"), - "targetName" : event.get("target").get("name"), - "healthChangedFrom" : next( - (x.get("value_from") for x in event.get("outcomes") if x.get("outcome_type") == "Health changed"), - None), - "healthChangedTo" : next( - (x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Health changed"), - None), - "netDamageTaken" : next( - (x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Net damage taken"), - None), - "experienceEarned" : next( - (x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Experience earned"), - None), - "grossDamagePerformed" : next((x.get("value_to") for x in event.get("outcomes") if - x.get("outcome_type") == "Gross damage performed"), None), - "experienceChangedFrom": next((x.get("value_from") for x in event.get("outcomes") if - x.get("outcome_type") == "Experience changed"), None), - "experienceChangedTo" : next( - (x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Experience changed"), - None) - } + "block_height": event.get("block_height"), + "action_id": event.get("action_id"), + "action_type": event.get("action_type"), + "player_id": event.get("player_id"), + "player_username": event.get("player_username"), + "droid_id": event.get("droid_id"), + "droid_name": event.get("droid_name"), + "targetID": event.get("target").get("id"), + "targetName": event.get("target").get("name"), + "healthChangedFrom": next( + (x.get("value_from") for x in event.get("outcomes") if + x.get("outcome_type") == "Health changed"), + None), + "healthChangedTo": next( + (x.get("value_to") for x in event.get("outcomes") if + x.get("outcome_type") == "Health changed"), + None), + "netDamageTaken": next( + (x.get("value_to") for x in event.get("outcomes") if + x.get("outcome_type") == "Net damage taken"), + None), + "experienceEarned": next( + (x.get("value_to") for x in event.get("outcomes") if + x.get("outcome_type") == "Experience earned"), + None), + "grossDamagePerformed": next( + (x.get("value_to") for x in event.get("outcomes") if + x.get("outcome_type") == "Gross damage performed"), None), + "experienceChangedFrom": next( + (x.get("value_from") for x in event.get("outcomes") if + x.get("outcome_type") == "Experience changed"), None), + "experienceChangedTo": next( + (x.get("value_to") for x in event.get("outcomes") if + x.get("outcome_type") == "Experience changed"), + None) + } def sendSMS(self, from_="+14159037708", **kwargs): try: @@ -58,28 +71,59 @@ class DroidControllerTask(CoindroidAPITask): self.logger.exception("Unable to send SMS!!") pass + def genMessage(self, stats): + baseMessage = "{block_height}:{action_id} - " \ + "{player_username}({player_id}):{droid_name}(" \ + "{droid_id}) did {action_type} on " \ + "{targetName}({targetID})." + message = [baseMessage] + if stats["healthChangedFrom"] or stats["healthChangedTo"]: + message.append( + "Health changed from {healthChangedFrom} to " \ + "{healthChangedTo}.".format( + **stats)) + if stats["netDamageTaken"]: + message.append("{netDamageTaken} damage was taken.".format(**stats)) + if stats["experienceEarned"]: + message.append( + "{experienceEarned} experience was earned.".format(**stats)) + if stats["grossDamagePerformed"]: + message.append( + "{grossDamagePerformed} gross damage was performed.".format( + **stats)) + if stats["experienceChangedFrom"] or stats["experienceChangedTo"]: + message.append( + "Experience changed from {experienceChangedFrom} to " \ + "{experienceChangedTo}.".format( + **stats)) + message = "\n".join(message) + return message + def _run(self): self.logger.info("Running {}".format(self.__class__.__name__)) while True: if not self.droidControllerQueue.empty(): - self.logger.debug("{} woken up...".format(self.__class__.__name__)) + self.logger.debug( + "{} woken up...".format(self.__class__.__name__)) events = self.droidControllerQueue.get() for event in events: stats = self.getDroidStats(event) - message = "At block_height {block_height}, action_id {action_id} - " \ - "{player_username}({player_id}):{droid_name}({droid_id}) did {action_type} on " \ - "{targetName}({targetID}). Health changed from {healthChangedFrom} to " \ - "{healthChangedTo}.".format(**stats) + message = self.genMessage(stats) self.logger.info(message) - if stats["targetID"] or stats["targetName"]: - if (stats["targetID"] == 160) or (stats["targetName"] == "bob"): - self.logger.debug("bob's got an action!!! sending sms!!") - self.sendSMS(to="+14088963912", body=message) - if (stats["targetID"] == 165) or (stats["targetName"] == "Mabuhay"): - self.logger.debug("Mabuhay's got an action!!! sending sms!!") - self.sendSMS(to="+14086342295", body=message) - else: - self.logger.warning("Event has no target!") + if (stats["droid_name"] == "bob") or ( + stats["targetName"] == "bob") or ( + stats["droid_id"] == 160) or ( + stats["targetID"] == 160): + self.logger.debug( + "bob's got an action!!! sending sms!!") + self.sendSMS(to="+14088963912", body=message) + if (stats["droid_name"] == "Mabuhay") or ( + stats["targetName"] == "Mabuhay") or ( + stats["droid_id"] == 165) or stats[ + "targetID"] == 165: + self.logger.debug( + "Mabuhay's got an action!!! sending sms!!") + self.sendSMS(to="+14086342295", body=message) else: self.logger.debug("Queue is empty... No action to take...") sleep(self.pause)