Esempio n. 1
0
 def test_user(self):
     user = utils.User()
     with pytest.raises(AssertionError):
         user.user_id()
     user = utils.User(data={
         "id": u"ID",
         u"locale": u"ja"
     },
                       provider="google")
     assert user._provider is None
     assert user.nickname() is None
     assert user.email() is None
     assert user.user_id() == u"ID"
     user._provider = "test"
     assert user.user_id() == u"test:ID"
     assert user.locale == u"ja"
     with pytest.raises(AttributeError):
         user.gender
     with pytest.raises(AttributeError):
         del user.gender
     user.gender = "female"
     assert user.gender == "female"
     del user.gender
     with pytest.raises(AttributeError):
         user.gender
     del user._id
Esempio n. 2
0
    def determine_user(self):
        if self.callee is None:
            # If callee is now known and we have unsecure connection
            user = self.user

            try:
                self.callee = utils.User(name=user)
            except Exception:
                # self.log.debug("Can't switch to user %s" % user, exc_info=True)
                self.callee = utils.User(name='nobody')

        assert self.callee is not None
Esempio n. 3
0
def load(path):
    if not os.path.ispath(path):
        raise OSError("path '{}' is not a file.".format(path))
    with serializer_lock:
        with open(path, 'r') as f:
            reader = csv.DictReader(f)
            for row in reader:
                user = utils.User(ip=row[FIELD_NAMES[0]],
                                  id=row[FIELD_NAMES[1]])
                if user not in users:
                    users.append(user)
def new_player():
    """
    Get player name and confirm not already in loadfile.

    Output:
    user - the new User object created for the player.
    """
    print("Who is playing? \n")
    player_name = input('>')
    print()
    with shelve.open('myfile') as loadfile:
        try:
            ################
            ##  FIX THIS  ##
            ################
            if loadfile[player_name] == None:
                pass  # return User(player_name)
            else:
                print("I already have a player with that name.")
                print("Please try a different name:\n")
                return new_player()
        except KeyError:
            return utils.User(player_name)
Esempio n. 5
0
        return False


def m_play_again(user, deck):
    """
    Ask user to play again, then restart or quit.

    This function asks the user if they want to play again
    if yes, restart memory, if no then exit. Name is such to distinguish
    from play_again normally run through menu.py.

    Input:
    User: user
    Output:
    No output, but can restart the game
    """
    print(f"{user.name},\n\tWould you like to play again?")
    print("Enter 'y' or 'n'")
    if input('>')[0].lower() != 'n':
        memory(user, deck)


if __name__ == '__main__':
    # user = mu.get_player()
    user = utils.User('Player')
    deck_prompt = "What deck would you like to play?"
    deck = utils.choose_list(utils.DECKLIST, deck_prompt)
    os.system('clear')
    memory(user, deck)
    m_play_again(user, deck)
Esempio n. 6
0
 def post(self):
   assert utils.User.load_from_session(self.session) is None
   user = utils.User(data={"id": u"ID", u"locale": u"ja"})
   assert user is not None
   user.set_to_session(self.session)
Esempio n. 7
0
def handle_text(message):
    uid = message.from_user.id
    if message.from_user.id not in USERS:
        USERS[message.from_user.id] = u.User()

    if message.text == "Отмена" and uid in ADMINS:

        if uid in INADMINMENU:
            if INADMINMENU[uid] != '':
                INADMINMENU[uid] = ''
                markup = u.get_keyboard(["Существующие вопросы", "Добавить вопрос", "Отмена"])
                bot.send_message(message.from_user.id, "Меню администратора \n"
                                                       "(Визуальное представление меню, "
                                                       "логика и способы взаимодействия c ботом являются "
                                                       "демо-вариантами и могут быть изменены)", reply_markup=markup)
                return

            bot.send_message(message.from_user.id, "Чтобы начать "
                                                   "опрос введите команду /start", reply_markup=u.get_keyboard([]))
        return

    if message.text == "Существующие вопросы" and uid in ADMINS:
        msg = "Текущие вопросы в боте: \n\n"
        print(Questions)
        for i in range(0, len(Questions)):
            q = Questions[i]
            msg += "(№ {}) ".format(i)
            msg += '{} \n Ответы: {}\n\n'.format(q.text, ", ".join(q.answers))
        msg += "Для удаления вопроса отправьте его номер."
        INADMINMENU[uid] = "Существующие вопросы"
        markup = u.get_keyboard(["Отмена"])
        print(msg)
        bot.send_message(uid, msg, reply_markup=markup)
        return

    if message.text == "Добавить вопрос" and uid in ADMINS:
        INADMINMENU[uid] = "Добавить вопрос"
        msg = "Для добавления вопроса введите текст нового вопроса, " \
              "затем в скобках варианты через запятую, если требуется. \n\n" \
              "Пример: Введите ваш возраст (12 лет, 21 год, 45, более 50-ти)\n\n" \
              "(строгие требования к написанию вопроса относятся лишь к существующему "\
                "прототипу и в дальнейшем ввод вопросов будет упрощен)"
        markup = u.get_keyboard(["Отмена"])
        print(msg)
        bot.send_message(uid, msg, reply_markup=markup)
        return

    if uid in INADMINMENU:
        if INADMINMENU[uid] == "Существующие вопросы":
            if u.isint(message.text):
                id = int(message.text)
                Questions.remove(Questions[id])
                msg = "Вопрос удален"
                bot.send_message(uid, msg)
                # markup = u.get_keyboard(["/start"])
                # bot.send_message(message.from_user.id, "Нажмите на кнопку старт чтоб начать "
                #                                        "опрос или введите команду /start", reply_markup=markup)
                markup = u.get_keyboard(["Существующие вопросы", "Добавить вопрос", "Отмена"])
                bot.send_message(message.from_user.id, "Меню администратора \n"
                                                       "(Визуальное представление меню, "
                                                       "логика и способы взаимодействия c ботом являются "
                                                       "демо-вариантами и могут быть изменены)", reply_markup=markup)
                # INADMINMENU[uid] = ""
                return
            else:
                msg = "Для удаления вопроса отправьте его номер."
                bot.send_message(uid, msg)
                return
        if INADMINMENU[uid] == "Добавить вопрос":
            try:
                t = message.text
                tq = t.split(' (')[0]
                if len(t.split(' (')) > 1:
                    ta = t.split(' (')[1][:-1]
                    ta_arr = ta.split(', ')
                    if len(ta_arr[0]) > 0:
                        Questions.append(u.Question(tq, ta_arr))
                    else:
                        Questions.append(u.Question(tq))
                else:
                    Questions.append(u.Question(tq))
                markup = u.get_keyboard(["/start"])
                bot.send_message(uid, "Вопрос добавлен", reply_markup=markup)
                INADMINMENU[uid] = ""
            except Exception:
                bot.send_message(uid, "Пожалуйста следуйте требованиям при написании вопроса "
                                      "(строгие требования относятся лишь к существующему "
                                      "прототипу и в дальнейшем ввод вопросов будет упрощен)")
                return

    if message.text.lower() == "да":
        if len(Questions) > 0:
            USERS[message.from_user.id].question = Questions[0]
            markup = u.get_keyboard(USERS[uid].question.answers)
            bot.send_message(uid, USERS[uid].question.text, reply_markup=markup)
        else:
            markup = u.get_keyboard([])
            bot.send_message(uid, "В боте еще не заданы вопросы", reply_markup=markup)
        if len(Questions) > 1:
            USERS[uid].question = Questions[1]
            USERS[uid].q_index = 1
        else:
            USERS[uid].is_last_quest = True
        return

    if not USERS[uid].is_last_quest and USERS[message.from_user.id].question is not None:
        USERS[uid].answs.append(message.text)
        # if USERS[uid].question is None:
        #     USERS[uid].question = Questions[0]
        #     USERS[uid].q_index = 0
        markup = u.get_keyboard(USERS[uid].question.answers)
        bot.send_message(uid, USERS[uid].question.text, reply_markup=markup)
        if len(Questions) > USERS[uid].q_index + 1:
            USERS[uid].q_index += 1
            USERS[uid].question = Questions[USERS[uid].q_index]
        else:
            USERS[uid].is_last_quest = True
        return

    if USERS[uid].is_last_quest:
        USERS[uid].answs.append(message.text)
        # markup = u.get_keyboard(["/start"])
        markup = types.ReplyKeyboardRemove(selective=False)
        bot.send_message(message.from_user.id, "Спасибо, за пройденный опрос", reply_markup=u.get_keyboard([]))
        send_to_admins(USERS[message.from_user.id])
        USERS[message.from_user.id] = u.User()

    if message.text.lower() == "нет":
        markup = u.get_keyboard(["/start"])
        bot.send_message(message.from_user.id, "Нажмите на кнопку старт чтоб начать "
                                               "опрос или введите команду /start", reply_markup=markup)
        return
Esempio n. 8
0
def handle_start_help(message):
    bot.send_message(message.from_user.id, "Здравствуйте, вас приветствует тестовый бот, "
                                           "который поможет вам опросить клиентов. ")
    markup = u.get_keyboard(["Да", "Нет"])
    bot.send_message(message.from_user.id, "Вам будет задан ряд вопросов, вы готовы?", reply_markup=markup)
    USERS[message.from_user.id] = u.User()