예제 #1
0
def add_quest_flow(bot_in, message_in):
    """Основной поток маршрутизации для квестовой части бота.

    @Можно добавить в словарь проверку на типы ответа. Или вынести в функции
    Принимает объекты bot, message
    Если это первый вызов, то выдаст список квестов, """
    status_dic = {
        'need_quest_name': take_quest_name,
        'need_quest_desc': take_quest_desc,
        'need_quest_photo': take_quest_photo,
        'need_question_desc': take_question_desc,
        'need_question_photo': take_question_photo,
        'need_question_type': take_question_type,
        'need_question_answer': ask_take_question_answer,
        'need_more_questions': answer_more_questions,
    }
    global operation, status, additional_info, bot, message
    bot = bot_in
    message = message_in
    (operation, status,
     additional_info) = db_connector.get_user_operation(message.from_user.id)
    if additional_info:
        additional_info = json.loads(additional_info)
    else:
        additional_info = dict()
    if not operation or operation != opAddQest:
        ask_quest_name()
    elif utils.text_lower_wo_command(message) in ('cancel', 'отмена'):
        cancel_adding()
    else:
        status_dic[status]()
예제 #2
0
def quest_flow(bot_in, message_in):
    """Основной поток маршрутизации для квестовой части бота.

    @Можно добавить в словарь проверку на типы ответа. Или вынести в функции
    Принимает объекты bot, message
    Если это первый вызов, то выдаст список квестов, """
    status_dic = {
        'neead_quest_choice': give_quest,
        'need_question': give_question,
        'need_answer': check_answer,
    }
    global operation, status, additional_info, bot, message
    bot = bot_in
    message = message_in
    (operation, status,
     additional_info) = db_connector.get_user_operation(message.from_user.id)
    if additional_info:
        additional_info = json.loads(additional_info)
    else:
        additional_info = dict()
    if not operation or operation != opDoQest:
        show_quest_list()
    elif utils.text_lower_wo_command(message) in ('cancel', 'отмена'):
        cancel_quest()
    else:
        status_dic[status]()
예제 #3
0
def register_flow(bot, message):
    global operation, status, additional_info
    (operation, status, additional_info) = db_connector.get_user_operation(message.from_user.id)
    if not operation or operation != opRegister:
        if not procedure: db_connector.register_user(message.from_user.id, registrationDone=1)
        else:
            bot.send_message(message.chat.id, "Для начала работы необходимо зарегестрироваться", reply_markup=types.ReplyKeyboardHide())
            next_step(bot, message)
    elif status is not None:
        procedure[status][2](bot, message)
예제 #4
0

@bot.message_handler(commands=admin_functions.admin_commands)
def handle_admin_com(message):
    """Функции админской "панели управления".

    Детали смотри в admin_functions.py
    Для правильной работы необходим заполненный admin_id в config
    По умолчанию менть не надо.
    """
    db_connector.save_to_log('user', message)
    admin_functions.admin_flow(bot, message)


@bot.message_handler(content_types=['text', 'photo', 'document', 'location'],
                     func=lambda message: db_connector.get_user_operation(
                         message.from_user.id)[0] in (do_quest.opDoQest, ))
@bot.message_handler(
    content_types=['text'],
    func=lambda message: utils.text_lower_wo_command(message) in
    (standard.start_quest_command.lower(), ))
def handle_do_quest(message):
    #Тут перенаправление на корневую функцию файла do_quest.py
    db_connector.save_to_log('user', message)
    do_quest.quest_flow(bot, message)


@bot.message_handler(content_types=['text'],
                     func=lambda message: utils.text_lower_wo_command(message)
                     in standard.add_quest_command)
@bot.message_handler(content_types=['text', 'photo', 'document', 'location'],
                     func=lambda message: db_connector.get_user_operation(