mirror of
https://gitlab.com/0xDEAD10CC/pycoindroid
synced 2025-07-06 04:51:08 -07:00
update
This commit is contained in:
parent
4a2fee0fd6
commit
26afb54cb7
1 changed files with 91 additions and 47 deletions
138
src/Droid.py
138
src/Droid.py
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue