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)
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"
@ -31,23 +37,30 @@ class DroidControllerTask(CoindroidAPITask):
"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"),
(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"),
(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"),
(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"),
(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
"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
"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"),
(x.get("value_to") for x in event.get("outcomes") if
x.get("outcome_type") == "Experience changed"),
None)
}
@ -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!!")
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["targetID"] == 165) or (stats["targetName"] == "Mabuhay"):
self.logger.debug("Mabuhay's got an action!!! sending sms!!")
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.warning("Event has no target!")
else:
self.logger.debug("Queue is empty... No action to take...")
sleep(self.pause)