Пример #1
0
def check_off_tasks(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is None:
        bot.send_message(id, config.unknown_error)
        return
    if was_help_cmd(message):
        help_cmd(message)
        return
    num = user.curr_off_task
    l = message.text.split(' ')
    code = offtxt.final_ans[num]
    if len(l) > 1:
        bot.send_message(id, config.offline_too_much_words_in_code_error)
        bot.register_next_step_handler(message, server)
        return
    if len(message.text) != len(code):
        bot.send_message(id, config.offline_mismatch_len_code_error)
        bot.register_next_step_handler(message, server)
        return

    if message.text == code:
        user.curr_off_task += 1
        saver.save_users(players.users)
        if user.curr_off_task >= config.offline_num_final_tasks:
            final(message)
        else:
            bot.send_message(id, 'Верный ответ!')
            tasks(message)
    else:
        bot.send_message(id, config.offline_wrong_code_error)
        bot.register_next_step_handler(message, check_off_tasks)
Пример #2
0
def server(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is None:
        bot.send_message(id, config.unknown_error)
        return
    if was_help_cmd(message):
        help_cmd(message)
        return
    user.check_point = config.offline_check_points[4]
    logger.log_event(user.uid, 'Server', user.name)
    saver.save_users(players.users)
    code = offtxt.server_code
    l = message.text.split(' ')
    if len(l) > 1:
        bot.send_message(id, config.offline_too_much_words_in_code_error)
        bot.register_next_step_handler(message, server)
        return
    if len(l[0]) != len(code):
        bot.send_message(id, config.offline_mismatch_len_code_error)
        bot.register_next_step_handler(message, server)
        return

    if message.text == code:
        bot.send_message(id, 'Осталось уже совсем немного...')
        tasks(message)
    else:
        bot.send_message(id, config.offline_wrong_code_error)
        bot.register_next_step_handler(message, server)
Пример #3
0
def traf(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is None:
        bot.send_message(id, config.unknown_error)
        return
    if message.text == '/continue':
        bot.send_message(id, 'Введите код с трафарета')
        bot.register_next_step_handler(message, traf)
        return
    if was_help_cmd(message):
        help_cmd(message)
        return
    user.check_point = config.offline_check_points[3]
    logger.log_event(user.uid, 'Traf', user.name)
    saver.save_users(players.users)
    code = offtxt.traf_codes[user.uid]
    l = message.text.split(' ')
    if len(l) > 1:
        bot.send_message(id, config.offline_too_much_words_in_code_error)
        bot.register_next_step_handler(message, traf)
        return
    if len(l[0]) != len(code):
        bot.send_message(id, config.offline_mismatch_len_code_error)
        bot.register_next_step_handler(message, traf)
        return

    if message.text == code:
        bot.send_photo(id, offtxt.traf_photo_id, caption='Найдите его...')
        bot.register_next_step_handler(message, server)
    else:
        bot.send_message(id, config.offline_wrong_code_error)
        bot.register_next_step_handler(message, traf)
Пример #4
0
def check_task(message):
    user = players.users.get(message.chat.id)
    func = 'nope'
    if check_task_format(user.curr_online_task, message.text):
        if message.text.lower() == text.ans[user.curr_online_task]:
            prev_task = user.curr_online_task
            reset_user_attempts(user)
            user.add_points(config.points_for_task)
            if user.curr_online_task == user.online_start_task:
                bot.send_message(message.chat.id, config.online_task_ending)
                pass  # Здесь будет переход к оффлайн части квеста
            else:
                bot.send_message(message.chat.id, config.online_task_accepted)
                send_text(message.chat.id, prev_task)
                func = 'send_task'
        else:
            user.online_attempt -= 1
            if user.online_attempt > 0:
                bot.send_message(
                    message.chat.id,
                    config.online_task_wrong_answer + str(user.online_attempt))
                func = 'check_task'
            else:
                prev_task = user.curr_online_task
                reset_user_attempts(user)
                bot.send_message(message.chat.id,
                                 config.online_task_end_of_attempts)
                send_text(message.chat.id, prev_task)
                func = 'send_task'
        saver.save_users(players.users)
    else:
        bot.send_message(message.chat.id, config.online_task_wrong_format)
        func = 'check_task'
    return func
Пример #5
0
def final(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is None:
        bot.send_message(id, config.unknown_error)
        return
    user.check_point = config.offline_check_points[6]
    logger.log_event(user.uid, 'Final', user.name)
    saver.save_users(players.users)
    bot.send_message(id, config.offline_final_txt)
    bot.register_next_step_handler(message, check_final)
Пример #6
0
def tasks(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is None:
        bot.send_message(id, config.unknown_error)
        return
    user.check_point = config.offline_check_points[5]
    logger.log_event(user.uid, 'Tasks', user.name)
    saver.save_users(players.users)
    num = user.curr_off_task
    bot.send_message(id, offtxt.final_tasks[num])
    bot.register_next_step_handler(message, check_off_tasks)
Пример #7
0
def book_code(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is None:
        bot.send_message(id, config.unknown_error)
        return
    user.check_point = config.offline_check_points[1]
    logger.log_event(user.uid, 'Books', user.name)
    saver.save_users(players.users)
    task = offtxt.books_names[user.uid]
    bot.send_message(id, config.offline_books_text1 + task + config.offline_books_text2)
    bot.register_next_step_handler(message, check_books)
Пример #8
0
def del_user(message):
    words = message.text.split(' ')
    i = 0
    if words[0] == 'NOPE':
        return
    while words[i] != 'ChatID:':
        i += 1
    if int(words[i + 1]) >= 0:
        deleted = players.users.pop(int(words[i + 1]), None)
        bot.send_message(message.chat.id, 'Пользователь успешно удален!')
        logger.log_text('Successful', 'Delete')
        saver.save_users(players.users)
Пример #9
0
def anti_photo(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is None:
        bot.send_message(id, config.unknown_error)
        return
    user.check_point = config.offline_check_points[2]
    logger.log_event(user.uid, 'Anti-photo', user.name)
    saver.save_users(players.users)
    a = offtxt.photocross_tasks[user.uid]
    bot.send_message(id, config.offline_photocross_text)
    for i in range(len(a)):
        bot.send_photo(id, offtxt.photocross_id[a[i]])
    bot.register_next_step_handler(message, check_photos)
Пример #10
0
def set_name(message):
    id = message.chat.id
    user = players.users.get(id)
    if user is not None:
        if message.text.find('ChatID:') == -1 and message.text.find('NOPE') == -1:
            logger.log_event(message.chat.id, 'Changed name to "' + message.text + '"', get_user_name(message.chat.id))
            players.users[id].name = message.text
            saver.save_users(players.users)
            bot.send_message(id, 'Приятно познакомиться, ' + message.text)
        else:
            bot.send_message(id, config.set_name_error)
            bot.register_next_step_handler(message, set_name)
    else:
        players.users[id] = players.User(id, players.number_of_users)
        players.number_of_users += 1
        players.users[id].name = message.text
        players.users[id].is_running = True
        saver.save_users(players.users)
        bot.send_message(id, 'Приятно познакомиться, ' + message.text)
        bot.send_message(id, 'Если готовы начать - отправьте любое сообщение!')
        bot.register_next_step_handler(message, online_start)
Пример #11
0
def get_token(message):
    if players.verify_token(message.text, 'user'):
        bot.send_message(message.chat.id, 'Отлично! Теперь давайте знакомиться, скажите название вашей команды')
        bot.register_next_step_handler(message, set_name)
    elif players.verify_token(message.text, 'admin'):
        players.users[message.chat.id] = players.Admin(message.chat.id)
        saver.save_users(players.users)
        bot.send_message(message.chat.id, "Вы успешно повышены до администратора!")
        set_name_cmd(message)
    elif players.verify_token(message.text, 'kp'):
        players.users[message.chat.id] = players.KP(message.chat.id)
        offtxt.locker_kp.append(players.users[message.chat.id])
        saver.save_users(players.users)
        bot.send_message(message.chat.id, "Вы успешно повышены до КПшника!")
        set_name_cmd(message)
    elif players.verify_token(message.text, 'super'):
        players.users[message.chat.id] = players.Admin(message.chat.id, is_super=True)
        saver.save_users(players.users)
        bot.send_message(message.chat.id, "Вы теперь мой царь и бог!")
        set_name_cmd(message)
    else:
        logger.log_text('Unsuccessful promotion!', 'Verify_token')
        bot.send_message(message.chat.id, config.token_error)
        bot.send_message(message.chat.id, 'Попробуйте еще раз')
        bot.register_next_step_handler(message, get_token)