This commit is contained in:
0xDEAD10CC 2017-07-27 02:46:39 -07:00 committed by Steve Bouché
parent 4a2fee0fd6
commit 26afb54cb7

View file

@ -10,10 +10,16 @@ class DroidControllerTask(CoindroidAPITask):
super(DroidControllerTask, self).__init__(**kwargs) super(DroidControllerTask, self).__init__(**kwargs)
self.logger = logging.getLogger(self.__class__.__name__) self.logger = logging.getLogger(self.__class__.__name__)
self.droidTuple = namedtuple("droidTuple", self.droidTuple = namedtuple("droidTuple",
["block_height", "action_id", "action_type", "player_id", "player_username", ["block_height", "action_id",
"droid_id", "droid_name", "targetID", "targetName", "healthChangedFrom", "action_type", "player_id",
"healthChangedTo", "netDamageTaken", "experienceEarned", "grossDamagePerformed", "player_username",
"experienceChangedFrom", "experienceChangedTo", "droid_id", "droid_name", "targetID",
"targetName", "healthChangedFrom",
"healthChangedTo", "netDamageTaken",
"experienceEarned",
"grossDamagePerformed",
"experienceChangedFrom",
"experienceChangedTo",
]) ])
twilioAccount = "ACdfcd2b529db83954e8a0041796072960" twilioAccount = "ACdfcd2b529db83954e8a0041796072960"
twilioToken = "ab9b98a0b3da8a728d14774192773af2" twilioToken = "ab9b98a0b3da8a728d14774192773af2"
@ -21,35 +27,42 @@ class DroidControllerTask(CoindroidAPITask):
def getDroidStats(self, event): def getDroidStats(self, event):
return { return {
"block_height" : event.get("block_height"), "block_height": event.get("block_height"),
"action_id" : event.get("action_id"), "action_id": event.get("action_id"),
"action_type" : event.get("action_type"), "action_type": event.get("action_type"),
"player_id" : event.get("player_id"), "player_id": event.get("player_id"),
"player_username" : event.get("player_username"), "player_username": event.get("player_username"),
"droid_id" : event.get("droid_id"), "droid_id": event.get("droid_id"),
"droid_name" : event.get("droid_name"), "droid_name": event.get("droid_name"),
"targetID" : event.get("target").get("id"), "targetID": event.get("target").get("id"),
"targetName" : event.get("target").get("name"), "targetName": event.get("target").get("name"),
"healthChangedFrom" : next( "healthChangedFrom": next(
(x.get("value_from") for x in event.get("outcomes") if x.get("outcome_type") == "Health changed"), (x.get("value_from") for x in event.get("outcomes") if
None), x.get("outcome_type") == "Health changed"),
"healthChangedTo" : next( None),
(x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Health changed"), "healthChangedTo": next(
None), (x.get("value_to") for x in event.get("outcomes") if
"netDamageTaken" : next( x.get("outcome_type") == "Health changed"),
(x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Net damage taken"), None),
None), "netDamageTaken": next(
"experienceEarned" : next( (x.get("value_to") for x in event.get("outcomes") if
(x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Experience earned"), x.get("outcome_type") == "Net damage taken"),
None), None),
"grossDamagePerformed" : next((x.get("value_to") for x in event.get("outcomes") if "experienceEarned": next(
x.get("outcome_type") == "Gross damage performed"), None), (x.get("value_to") for x in event.get("outcomes") if
"experienceChangedFrom": next((x.get("value_from") for x in event.get("outcomes") if x.get("outcome_type") == "Experience earned"),
x.get("outcome_type") == "Experience changed"), None), None),
"experienceChangedTo" : next( "grossDamagePerformed": next(
(x.get("value_to") for x in event.get("outcomes") if x.get("outcome_type") == "Experience changed"), (x.get("value_to") for x in event.get("outcomes") if
None) 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): def sendSMS(self, from_="+14159037708", **kwargs):
try: try:
@ -58,28 +71,59 @@ class DroidControllerTask(CoindroidAPITask):
self.logger.exception("Unable to send SMS!!") self.logger.exception("Unable to send SMS!!")
pass 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): def _run(self):
self.logger.info("Running {}".format(self.__class__.__name__)) self.logger.info("Running {}".format(self.__class__.__name__))
while True: while True:
if not self.droidControllerQueue.empty(): 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() events = self.droidControllerQueue.get()
for event in events: for event in events:
stats = self.getDroidStats(event) stats = self.getDroidStats(event)
message = "At block_height {block_height}, action_id {action_id} - " \ message = self.genMessage(stats)
"{player_username}({player_id}):{droid_name}({droid_id}) did {action_type} on " \
"{targetName}({targetID}). Health changed from {healthChangedFrom} to " \
"{healthChangedTo}.".format(**stats)
self.logger.info(message) self.logger.info(message)
if stats["targetID"] or stats["targetName"]: if (stats["droid_name"] == "bob") or (
if (stats["targetID"] == 160) or (stats["targetName"] == "bob"): stats["targetName"] == "bob") or (
self.logger.debug("bob's got an action!!! sending sms!!") stats["droid_id"] == 160) or (
self.sendSMS(to="+14088963912", body=message) stats["targetID"] == 160):
if (stats["targetID"] == 165) or (stats["targetName"] == "Mabuhay"): self.logger.debug(
self.logger.debug("Mabuhay's got an action!!! sending sms!!") "bob's got an action!!! sending sms!!")
self.sendSMS(to="+14086342295", body=message) self.sendSMS(to="+14088963912", body=message)
else: if (stats["droid_name"] == "Mabuhay") or (
self.logger.warning("Event has no target!") 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: else:
self.logger.debug("Queue is empty... No action to take...") self.logger.debug("Queue is empty... No action to take...")
sleep(self.pause) sleep(self.pause)