def reply_handler(cls, action, response, from_): # Deep copy bomb action_c = Action() action_c.attacker = action.attacker action_c.action = action.action action_c.victim = from_.key.id() action_c.datetime = datetime.now() action_c.place = action.place if response == "Y" or response == "y": action_c.need_validation = False action_c.incorrect_kill = False action_c_key = action_c.put() victim = Player.get_by_id(action_c.victim) victim.state = "DEAD" victim.killed_by = str(action_c_key.id()) victim.put() attacker = Player.get_by_id(action_c.attacker) attacker.killed.append(str(action_c_key.id())) attacker.put() return [("*", "{} has been killed".format(victim.codename))] else: action_c.need_validation = True action_c.incorrect_kill = True return []
def setUp(self): super(TestDisarm, self).setUp() action = Action() action.attacker = "+4" action.action = "DISARM" action.victim = "+1" action.datetime = datetime.now() action.put() self.action = action
def setUp(self): super(TestKill, self).setUp() action = Action() action.attacker = "+1" action.action = "KILL" action.victim = "+4" action.datetime = datetime.now() action.put() self.action = action
def setUp(self): super(TestBomb, self).setUp() test_dt = Util.utc_to_chi(datetime.now()) + timedelta(minutes=1) self.default_params = ["Here", str(test_dt.month), str(test_dt.day),\ str(test_dt.hour), str(test_dt.minute)] action = Action() action.attacker = "+1" action.action = "BOMB" action.victim = "*" action.datetime = datetime.now() action.place = "Place" action.put() self.action = action
def handler(cls, attacker, victim_codename): logging.info("SNIPE start.") victim = Util.get_victim(victim_codename) logging.info("Attacker {}".format(attacker)) logging.info("Victim {}".format(victim)) """ validation """ outgoing = [] try: Kill.validate_kill(attacker, victim) if attacker.role != "SNIPER": raise MeError("not SNIPER") except (TeamError, MeError, TargetError) as message: outgoing.append((WEI_HAN, message.message)) outgoing.append((attacker.key.id(), message.message)) return outgoing except: message = "[ERR] Unknown Error in SNIPE" outgoing.append((WEI_HAN, message)) outgoing.append((attacker.key.id(), message)) return outgoing action = Action() action.attacker = attacker.key.id() action.action = "SNIPE" action.victim = victim.key.id() action.datetime = datetime.now() action_key = action.put() attacker = Player.get_by_id(action.attacker) attacker.killed.append(str(action_key.id())) attacker.put() victim.state = "DEAD" victim.killed_by = str(action_key.id()) victim.put() message = "{} has been SNIPED.".format(victim_codename) outgoing.append((victim.key.id(), "You have been SNIPED. (Ref {}).".\ format(action_key.id()))) outgoing.append(("*", message)) outgoing += Team.push(Team.get_by_id(victim.team)) return outgoing
def handler(cls, attacker, params): if len(params) == 0: raise CommandError("Parameter {}".format(params)) victim = Util.get_victim(params[0]) Disarm.validate_disarm(attacker, victim) action = Action() action.attacker = attacker.key.id() action.action = "DISARM" action.victim = victim.key.id() action.datetime = datetime.now() action.need_validation = True action_key = action.put() return [(action.victim, "{} claimed to have disarm you. " "[REPLY {}] Y/N.".format(attacker.realname, action_key.id()))]
def handler(cls, attacker, params): logging.info("KILL start") victim = Util.get_victim(params[0]) Kill.validate_kill(attacker, victim) action = Action() action.attacker = attacker.key.id() action.action = "KILL" action.victim = victim.key.id() action.datetime = datetime.now() action.need_validation = True action_key = action.put() logging.info("KILL finish") return [(action.victim, "{} claimed to have killed you. " "[REPLY {}] Y/N.".format(attacker.realname, action_key.id()))]
def handler(cls, attacker, params): logging.info("KILL start") victim = Util.get_victim(params[0]) Kill.validate_kill(attacker, victim) action = Action() action.attacker = attacker.key.id() action.action = "KILL" action.victim = victim.key.id() action.datetime = datetime.now() action.need_validation = True action_key = action.put() logging.info("KILL finish") return [ ( action.victim, "{} claimed to have killed you. " "[REPLY {}] Y/N.".format(attacker.realname, action_key.id()), ) ]
def bomb_worker(): ''' Get bomb id ''' req_key = request.form.get('id', "") bomb = Bomb.get_by_id(int(req_key)) ''' ERROR: no bomb found by id ''' if not bomb: logging.error("BOMB Worker: No bomb found by key {}".format(req_key)) raise Exception() ''' Bomb deprecated no action ''' if bomb.deprecated: logging.info("BOMB Worker: Bomb with key {} deprecated. No explosion".format(req_key)) return "BOMB Worker: Deprecated Bomb" ''' Trigger bomb ''' logging.info("BOMB: triggered at {} UTC {} Chicago".format( datetime.now(), Util.utc_to_chi(datetime.now().replace(tzinfo=pytz.utc)))) client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) attacker = Player.get_by_id(bomb.attacker) attacker.can_set_after = Util.next_day() attacker.put() bomb.trigger = True bomb_key = bomb.put() action = Action() action.attacker = bomb.attacker action.action = "BOMB" action.victim = "*" action.datetime = datetime.now() action.place = bomb.place action_key = action.put() response_num_list = [key.id() for key in Player.query(ndb.AND(Player.state=="ALIVE",\ Player.invul==False) ).fetch(keys_only=True)] response = "{} has been bombed at {}. If you were there, [REPLY {}] Y.".format( action.place, Util.utc_to_chi(action.datetime).strftime("%m-%d %I:%M%p"), action_key.id()) for response_number in response_num_list: logging.info("Making message {} for {} with num_list {}".format( response, response_number, response_num_list)) '''Make message''' outgoing_message = Message(From=SERVER_NUMBER, To=response_number, Body=response) outgoing_message.put() '''Send message''' client.messages.create( to=response_number, from_=SERVER_NUMBER, body=response) return "Bomb triggered at {}".format(bomb.place)