Esempio n. 1
0
def is_unique(conversation, func):
    msg_id = func(conversation)
    if r.exists("msg:" + msg_id):
        return False
    else:
        r.set("msg:" + msg_id, True)
        return True
Esempio n. 2
0
def normal_response(user_response, user_id):
    response = advent.respond(user_id, user_response).strip()
    logging.info("user={0} game reply={1}".format(user_id, response.replace("\n", " ")))
    if advent.yes_no_question(user_id):
        split_response = response.split("\n")
        question = split_response[-1]
        del split_response[-1]
        respond(user_id, "\n".join(split_response))
        smooch.send_postbacks(user_id, question,
                              [("Yes", "yes"),
                               ("No", "no")])
        r.set("yesno:" + user_id, "game")
        return True

    elif re.search("You scored \d+ out of a possible \d+ using \d+ turns.", response):
        respond(user_id, response)
        advent.new_game(user_id)
        r.set("yesno:" + user_id, "new_game")
        smooch.send_postbacks(user_id, "Do you want to play again?",
                              [("Yes", "start_new_yes"),
                               ("No", "start_new_no")])
        return True
    else:
        respond(user_id, response)
        return True
Esempio n. 3
0
def is_unique(conversation, func):
    msg_id = func(conversation)
    if r.exists("msg:" + msg_id):
        return False
    else:
        r.set("msg:" + msg_id, True)
        return True
Esempio n. 4
0
def respond(user_id, user_response):
    """Gets the game response for a specific user_id and user_response"""
    game = Game.resume(r.get("save:" + user_id))
    user_tupl_resp = tuple(user_response.lower().split(" "))
    response = format_response(game.do_command(user_tupl_resp))
    r.set("save:" + user_id, game.t_suspend())
    return response
Esempio n. 5
0
def normal_response(user_response, user_id):
    response = advent.respond(user_id, user_response).strip()
    logging.info("user={0} game reply={1}".format(user_id,
                                                  response.replace("\n", " ")))
    if advent.yes_no_question(user_id):
        split_response = response.split("\n")
        question = split_response[-1]
        del split_response[-1]
        respond(user_id, "\n".join(split_response))
        smooch.send_postbacks(user_id, question, [("Yes", "yes"),
                                                  ("No", "no")])
        r.set("yesno:" + user_id, "game")
        return True

    elif re.search("You scored \d+ out of a possible \d+ using \d+ turns.",
                   response):
        respond(user_id, response)
        advent.new_game(user_id)
        r.set("yesno:" + user_id, "new_game")
        smooch.send_postbacks(user_id, "Do you want to play again?",
                              [("Yes", "start_new_yes"),
                               ("No", "start_new_no")])
        return True
    else:
        respond(user_id, response)
        return True
Esempio n. 6
0
def new_game(user_id, seed=None):
    """Create new game"""
    logging.debug("creating new came for {}".format(user_id))
    game = Game(seed)
    load_advent_dat(game)
    game.start()
    response = format_response(game.output)
    r.set("save:" + user_id, game.t_suspend())
    return response
Esempio n. 7
0
def new_user(user_response, user_id):
    logging.info("CREATING NEW USER={}".format(user_id))
    advent.new_game(user_id).strip()
    split_response = ["Welcome to Adventure!!",
                      "Adventure is a text based game, and a port of the classic terminal game Advent."]
    question = "Would you like instructions?"
    logging.debug("split_response={} question={}".format(split_response, question))
    respond(user_id, "\n".join(split_response))
    smooch.send_postbacks(user_id, question,
                          [("Yes", "yes"),
                           ("No", "no")])
    r.set("yesno:" + user_id, "game")
    return True
Esempio n. 8
0
def new_user(user_response, user_id):
    logging.info("CREATING NEW USER={}".format(user_id))
    advent.new_game(user_id).strip()
    split_response = [
        "Welcome to Adventure!!",
        "Adventure is a text based game, and a port of the classic terminal game Advent."
    ]
    question = "Would you like instructions?"
    logging.debug("split_response={} question={}".format(
        split_response, question))
    respond(user_id, "\n".join(split_response))
    smooch.send_postbacks(user_id, question, [("Yes", "yes"), ("No", "no")])
    r.set("yesno:" + user_id, "game")
    return True
Esempio n. 9
0
 def register_handler(self):
     username = self.jdata.get("username")
     password = self.jdata.get("password")
     nickname = self.jdata.get("nickname")
     if not all([username, password, nickname]):
         return {"code": "REGISTER_FAIL", "message": "You need send username, password and nickname"}
     else:
         try:
             if r.exists("user:"******":password"):
                 return {"code":"REGISTER_FAIL", "message": "Username is registered"}
             r.set("user:"******":password", password)
             r.set("user:"******":nickname", nickname)
             return {"code": "REGISTER_SUCCESS", "message": "success"}
         except Exception, e:
             print "Error:",e.message,traceback.format_exc()
             return {"code": "SERVER_ERROR", "message": "Server Error"}
Esempio n. 10
0
def game_fallback(postback_payload, user_id):
    if postback_payload.endswith("yes"):
        response = advent.respond(user_id, "yes")

        # Checking if user has asked to end the game.
        if re.search("You scored \d+ out of a possible \d+ using \d+ turns.", response):
            respond(user_id, response)
            advent.new_game(user_id)
            r.set("yesno:" + user_id, "new_game")
            smooch.send_postbacks(user_id, "Do you want to play again?",
                                  [("Yes", "start_new_yes"),
                                   ("No", "start_new_no")])
            return True
        respond(user_id, response)
        r.delete("yesno:" + user_id)
        return True
    elif postback_payload.endswith("no"):
        response = advent.respond(user_id, "no")
        respond(user_id, response)
        r.delete("yesno:" + user_id)
        return True
    else:
        logging.error("Invalid postback={}".format(postback_payload))
        return False
Esempio n. 11
0
def restart(user_response, user_id):
    r.set("yesno:" + user_id, "restart")
    smooch.send_postbacks(user_id, "Do you want to restart?\n I cannot undo this.",
                          [("Yes", "restart_yes"),
                           ("No", "restart_no")])
    return True
Esempio n. 12
0
def a_set(k, v):
    r.set(k, v)
Esempio n. 13
0
def a_set(k, v):
    r.set(k, v)
Esempio n. 14
0
def restart(user_response, user_id):
    r.set("yesno:" + user_id, "restart")
    smooch.send_postbacks(user_id,
                          "Do you want to restart?\n I cannot undo this.",
                          [("Yes", "restart_yes"), ("No", "restart_no")])
    return True