def done(bot, update, user_data, chat_data):
    telegram_info = update._effective_user
    try:
        chat_id = update.callback_query.message.chat.id
    except Exception:
        chat_id = update.message.chat.id

    try:
        flogger.info(log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data='done'))
        bot.sendPhoto(
            chat_id=chat_id,
            photo=REDIS.direct_read('MAYDAY-BOT-CONFIG-GOODBYE_PHOTO_ID'),
            caption=conversations.MAIN_PANEL_DONE)
        return stages.END
    except Exception:
        bot.sendPhoto(
            chat_id=chat_id,
            photo=REDIS.direct_read('MAYDAY-BOT-CONFIG-GOODBYE_PHOTO_URL'),
            caption=conversations.MAIN_PANEL_DONE)
        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data='done_catch_miss',
            extra=str(update),
            trace_back=str(traceback.format_exc()))
        flogger.warning(msg)
        return stages.END
Beispiel #2
0
def fill_type_in_field(bot, update, user_data):
    try:
        telegram_info = update._effective_user
        text = update.message.text
        ticket = update_helper.update_cache(user_id=telegram_info.id,
                                            username=telegram_info.username,
                                            content=text)
        flatten_ticket = update_helper.flatten(ticket)

        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=text,
                                  rtn_ticket=ticket)
        flogger.info(msg)

        update.message.reply_text(
            text=conversations.UPDATE_YOURS.format_map(flatten_ticket),
            reply_markup=KEYBOARDS.update_ticket_keyboard_markup)
        return stages.UPDATE_SELECT_FIELD
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=text,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
def timeout(bot, update, chat_data):
    try:
        chat_id = update.callback_query.message.chat.id
    except Exception:
        chat_id = update.message.chat.id

    try:
        telegram_info = update._effective_user
        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data='timeout'
        )
        flogger.info(msg)
        bot.edit_message_text(
            chat_id=chat_id,
            message_id=update.callback_query.message.message_id,
            text=conversations.MAIN_PANEL_TIMEOUT)
        return stages.END

    except Exception:
        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data='timeout',
            extra=str(update)
        )
        flogger.warning(msg)
        bot.sendMessage(
            chat_id=chat_id,
            text=conversations.MAIN_PANEL_TIMEOUT
        )
        return stages.END
Beispiel #4
0
def fill_in_field(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        message = update.callback_query.message
        if message:
            telegram_info = update._effective_user
            ticket = update_helper.update_cache(
                user_id=telegram_info.id,
                username=telegram_info.username,
                content=callback_data)
            flatten_ticket = update_helper.flatten(ticket)

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data,
                                      rtn_ticket=ticket)
            flogger.info(msg)

            bot.edit_message_text(
                text=conversations.UPDATE_YOURS.format_map(flatten_ticket),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.update_ticket_keyboard_markup)
            return stages.UPDATE_SELECT_FIELD
        else:
            return stages.UPDATE_FILL_VALUE
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
def start(bot, update, user_data, chat_data):
    try:
        telegram_info = update._effective_user
        auth = authenticator.auth(telegram_info)
        flogger.info('user: {}, username:{}, auth:{}'.format(telegram_info.id, telegram_info.username, auth))

        if auth.is_username_valid is False:
            msg = log_util.get_ub_log(
                user_id=telegram_info.id,
                username=telegram_info.username,
                funcname=__name__,
                callback_data='auth',
                error='username is missing'
            )
            flogger.warning(msg)
            update.message.reply_text(conversations.MAIN_PANEL_USERNAME_MISSING)
            return stages.END

        if auth.is_admin:
            # TODO: Add Admin Panel
            pass

        if auth.is_banned:
            msg = log_util.get_ub_log(
                user_id=telegram_info.id,
                username=telegram_info.username,
                funcname=__name__,
                callback_data='auth',
                error='banned'
            )
            flogger.warning(msg)
            update.message.reply_text(conversations.MAIN_PANEL_YELLOWCOW)
            return stages.END

        if auth.status:
            msg = log_util.get_ub_log(
                user_id=telegram_info.id,
                username=telegram_info.username,
                funcname=__name__,
                callback_data='auth',
            )
            flogger.info(msg)
            update.message.reply_text(conversations.MAIN_PANEL_REMINDER)
            time.sleep(0.5)
            bot.sendMessage(
                chat_id=update.message.chat.id,
                text=conversations.MAIN_PANEL_START.format_map({'username': telegram_info.username}),
                reply_markup=KEYBOARDS.actions_keyboard_markup
            )
            return stages.MAIN_PANEL
    except Exception:
        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data='start',
            extra=str(update),
            trace_back=str(traceback.format_exc())
        )
        flogger.error(msg)
def start(bot, update, user_data):
    try:
        telegram_info = update._effective_user
        callback_data = update.callback_query.data
        ticket = quick_search_helper.init_cache(
            user_id=telegram_info.id, username=telegram_info.username)

        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data)
        flogger.info(msg)

        bot.edit_message_text(
            text=conversations.QUICK_SEARCH_START,
            chat_id=telegram_info.id,
            message_id=update.callback_query.message.message_id,
            reply_markup=KEYBOARDS.quick_search_start_keyboard_markup,
            parse_mode=telegram.ParseMode.MARKDOWN)
        return stages.QUICK_SEARCH_MODE_SELECTION
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
Beispiel #7
0
def fill_type_in_field(bot, update, user_data):
    try:
        telegram_info = update._effective_user
        text = update.message.text
        ticket = post_helper.update_cache(user_id=telegram_info.id,
                                          username=telegram_info.username,
                                          content=text)
        flatten_ticket = post_helper.flatten(ticket)
        category_id = post_helper.get_category_id_from_cache(
            user_id=telegram_info.id, username=telegram_info.username)
        flogger.info(
            log_util.get_ub_log(user_id=telegram_info.id,
                                username=telegram_info.username,
                                funcname=__name__,
                                callback_data=text,
                                rtn_ticket=ticket))
        update.message.reply_text(
            text=conversations.POST_TICKET_START.format_map(flatten_ticket),
            reply_markup=KEYBOARDS.post_ticket_keyboard_markup.get(
                category_id))
        return stages.POST_SELECT_FIELD
    except Exception:
        flogger.error(
            log_util.get_ub_log(user_id=telegram_info.id,
                                username=telegram_info.username,
                                funcname=__name__,
                                callback_data=text,
                                extra=str(update),
                                trace_back=str(traceback.format_exc())))
        return stages.END
Beispiel #8
0
def start(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        telegram_info = update._effective_user
        ticket = post_helper.init_cache(user_id=telegram_info.id,
                                        username=telegram_info.username)
        category_id = post_helper.get_category_id_from_cache(
            user_id=telegram_info.id, username=telegram_info.username)
        flogger.info(
            log_util.get_ub_log(user_id=telegram_info.id,
                                username=telegram_info.username,
                                funcname=__name__,
                                callback_data=callback_data))
        bot.edit_message_text(
            text=conversations.POST_TICKET_START.format_map(
                post_helper.flatten(ticket)),
            chat_id=telegram_info.id,
            message_id=update.callback_query.message.message_id,
            reply_markup=KEYBOARDS.post_ticket_keyboard_markup.get(
                category_id))
        return stages.POST_SELECT_FIELD
    except Exception:
        flogger.error(
            log_util.get_ub_log(user_id=telegram_info.id,
                                username=telegram_info.username,
                                funcname=__name__,
                                callback_data=callback_data,
                                extra=str(update),
                                trace_back=str(traceback.format_exc())))
Beispiel #9
0
def fill_in_field(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        message = update.callback_query.message
        telegram_info = update._effective_user
        category_id = post_helper.get_category_id_from_cache(
            user_id=telegram_info.id, username=telegram_info.username)
        if re.match(r'\d+||^([A-Z0-9]){2}$', callback_data):
            ticket = post_helper.update_cache(user_id=telegram_info.id,
                                              username=telegram_info.username,
                                              content=callback_data)
            flatten_ticket = post_helper.flatten(ticket)
            flogger.info(
                log_util.get_ub_log(user_id=telegram_info.id,
                                    username=telegram_info.username,
                                    funcname=__name__,
                                    callback_data=callback_data,
                                    rtn_ticket=ticket))
            bot.edit_message_text(
                text=conversations.POST_TICKET_START.format_map(
                    flatten_ticket),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.post_ticket_keyboard_markup.get(
                    category_id))
            return stages.POST_SELECT_FIELD
        else:
            ticket = post_helper.get_cache(user_id=telegram_info.id,
                                           username=telegram_info.username)
            choice = post_helper.get_last_choice(user_id=telegram_info.id)
            keyboard = KEYBOARDS.conditions_keyboard_mapping.get(choice)
            flatten_ticket = post_helper.flatten(ticket)
            text = '\n\n'.join([
                conversations.TYPE_IN_ERROR,
                conversations.POST_TICKET_INFO.format_map(
                    {'message': TICKET_MAPPING.get(choice)})
            ])
            bot.edit_message_text(text=text,
                                  chat_id=telegram_info.id,
                                  message_id=message.message_id,
                                  reply_markup=keyboard)
            flogger.warning(
                log_util.get_ub_log(user_id=telegram_info.id,
                                    username=telegram_info.username,
                                    funcname=__name__,
                                    callback_data=callback_data,
                                    rtn_ticket=ticket,
                                    extra=str(update)))
    except Exception:
        flogger.error(
            log_util.get_ub_log(user_id=telegram_info.id,
                                username=telegram_info.username,
                                funcname=__name__,
                                callback_data=callback_data,
                                extra=str(update),
                                trace_back=str(traceback.format_exc())))
        return stages.END
Beispiel #10
0
def select_ticket(bot, update, user_data):
    try:
        telegram_info = update._effective_user
        callback_data = update.callback_query.data

        if callback_data == 'mainpanel':

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)

            bot.edit_message_text(
                chat_id=telegram_info.id,
                message_id=update.callback_query.message.message_id,
                text=conversations.MAIN_PANEL_START.format_map(
                    {'username': telegram_info.username}),
                reply_markup=KEYBOARDS.actions_keyboard_markup)
            return stages.MAIN_PANEL

        if re.match(r'\d+', callback_data):
            ticket = request_helper.send_search_ticket_by_ticket_id(
                ticket_id=callback_data)
            update_helper.set_cache(user_id=telegram_info.id,
                                    content=ticket['info'])
            flatten_ticket = update_helper.flatten(ticket['info'])

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data,
                                      rtn_ticket=ticket)
            flogger.info(msg)

            bot.edit_message_text(
                text=conversations.UPDATE_YOURS.format_map(flatten_ticket),
                chat_id=telegram_info.id,
                message_id=update.callback_query.message.message_id,
                reply_markup=KEYBOARDS.update_ticket_keyboard_markup)
            return stages.UPDATE_SELECT_FIELD
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
def start(bot, update, user_data):
    telegram_info = update._effective_user
    message = update.callback_query.message
    callback_data = update.callback_query.data
    events = request_helper.get_sp_events().get('info')
    keyboard = sp_helper.generate_keyboard(events)

    msg = log_util.get_ub_log(
        user_id=telegram_info.id,
        username=telegram_info.username,
        funcname=__name__,
        callback_data=callback_data,
        rtn_query=events
    )
    flogger.info(msg)

    if events:
        bot.edit_message_text(
            text=conversations.SUPPORT_LIST_EVENTS,
            chat_id=telegram_info.id,
            message_id=message.message_id,
            reply_markup=keyboard
        )
    else:
        bot.edit_message_text(
            text=conversations.SUPPORT_NONE_EVENTS,
            chat_id=telegram_info.id,
            message_id=message.message_id,
            reply_markup=KEYBOARDS.return_main_panal
        )
    return stages.SUPPORT_EVENT_LIST
Beispiel #12
0
def backward(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        message = update.callback_query.message
        telegram_info = update._effective_user
        ticket = update_helper.get_cache(user_id=telegram_info.id,
                                         username=telegram_info.username)

        if callback_data == 'backward':

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)
            bot.edit_message_text(
                text=conversations.UPDATE_YOURS.format_map(
                    update_helper.flatten(ticket)),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.search_ticket_keyboard_markup)
            return stages.UPDATE_SELECT_TICKET

        if callback_data == 'mainpanel':

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)

            bot.edit_message_text(
                chat_id=telegram_info.id,
                message_id=message.message_id,
                text=conversations.MAIN_PANEL_START.format_map(
                    {'username': telegram_info.username}),
                reply_markup=KEYBOARDS.actions_keyboard_markup)
            return stages.MAIN_PANEL
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
Beispiel #13
0
def start(bot, update, user_data):
    try:
        telegram_info = update._effective_user
        message = update.callback_query.message
        callback_data = update.callback_query.data
        tickets = request_helper.send_search_my_ticket(userid=telegram_info.id)
        if tickets['status'] and tickets['info']:
            tickets = tickets['info']
            ticket_ids = update_helper.extract_ticket_ids(tickets)

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data,
                                      rtn_ticket=tickets)
            flogger.info(msg)

            bot.edit_message_text(
                text=update_helper.tickets_tostr(tickets),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=update_helper.list_tickets_on_reply_keyboard(
                    ticket_ids))
            return stages.UPDATE_SELECT_TICKET
        else:
            flogger.debug(tickets)
            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)
            bot.edit_message_text(chat_id=telegram_info.id,
                                  message_id=message.message_id,
                                  text=conversations.NONE_RECORD,
                                  reply_markup=KEYBOARDS.return_main_panal)
            return stages.MAIN_PANEL
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
Beispiel #14
0
def stats(bot, update, user_data):
    telegram_info = update._effective_user
    message = update.callback_query.message

    msg = log_util.get_ub_log(
        user_id=telegram_info.id,
        username=telegram_info.username,
        funcname=__name__,
        callback_data='stats',
    )
    flogger.info(msg)
    stmt = pf_helper.get_stat()
    bot.edit_message_text(text=stmt,
                          chat_id=telegram_info.id,
                          message_id=message.message_id,
                          reply_markup=KEYBOARDS.return_main_panal,
                          parse_mode=telegram.ParseMode.MARKDOWN)
    return stages.TICKET_STAT_LIST
Beispiel #15
0
def backward(bot, update, user_data):
    callback_data = update.callback_query.data
    message = update.callback_query.message
    telegram_info = update._effective_user

    if callback_data == 'mainpanel':

        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data)
        flogger.info(msg)

        bot.edit_message_text(chat_id=telegram_info.id,
                              message_id=message.message_id,
                              text=conversations.MAIN_PANEL_START.format_map(
                                  {'username': telegram_info.username}),
                              reply_markup=KEYBOARDS.actions_keyboard_markup)
        return stages.MAIN_PANEL
def select_mode(bot, update, user_data):
    try:
        telegram_info = update._effective_user
        callback_data = update.callback_query.data
        message = update.callback_query.message

        if callback_data == 'mainpanel':

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)

            bot.edit_message_text(
                chat_id=telegram_info.id,
                message_id=message.message_id,
                text=conversations.MAIN_PANEL_START.format_map(
                    {'username': telegram_info.username}),
                reply_markup=KEYBOARDS.actions_keyboard_markup,
                parse_mode=telegram.ParseMode.MARKDOWN)
            return stages.MAIN_PANEL

        if callback_data == 'cached_condition':

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)

            search.quick_search_start(bot, update, user_data)
            return stages.QUICK_SEARCH_LIST

        if callback_data == 'matching_my_ticket':
            if quick_search_helper.get_lastest_auth(telegram_info) is False:
                msg = log_util.get_ub_log(user_id=telegram_info.id,
                                          username=telegram_info.username,
                                          funcname=__name__,
                                          callback_data='auth',
                                          error='banned')
                flogger.warning(msg)

                update.message.reply_text(conversations.MAIN_PANEL_YELLOWCOW)
                return stages.END

            bot.send_chat_action(chat_id=telegram_info.id,
                                 action=chataction.ChatAction.TYPING)
            result = quick_search_helper.get_my_ticket_matching(
                user_id=telegram_info.id)

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data,
                                      rtn_ticket=result)
            flogger.info(msg)

            if result.get('status'):
                tickets = result.get('info')
                if (tickets and len(tickets) <= 25):
                    bot.send_message(text=conversations.SEARCH_WITH_RESULTS,
                                     chat_id=telegram_info.id,
                                     message_id=message.message_id)
                    traits = quick_search_helper.generate_tickets_traits(
                        tickets)
                    for trait in traits:
                        bot.send_message(
                            text=quick_search_helper.tickets_tostr(trait),
                            chat_id=telegram_info.id,
                            message_id=message.message_id)
                elif len(tickets) > 25:
                    bot.edit_message_text(
                        text=conversations.SEARCH_TOO_MUCH_TICKETS,
                        chat_id=telegram_info.id,
                        message_id=message.message_id)
                else:
                    bot.edit_message_text(
                        text=conversations.SEARCH_WITHOUT_TICKETS,
                        chat_id=telegram_info.id,
                        message_id=message.message_id)
                bot.send_message(
                    text=conversations.AND_THEN,
                    chat_id=telegram_info.id,
                    message_id=message.message_id,
                    reply_markup=KEYBOARDS.quick_search_start_keyboard_markup,
                )
            else:

                msg = log_util.get_ub_log(user_id=telegram_info.id,
                                          username=telegram_info.username,
                                          funcname=__name__,
                                          callback_data=callback_data,
                                          rtn_ticket=result)
                flogger.error(msg)

                bot.send_message(text=conversations.SEARCH_TICKET_ERROR,
                                 chat_id=telegram_info.id,
                                 message_id=message.message_id)
                query = quick_search_helper.get_cache(
                    user_id=telegram_info.id, username=telegram_info.username)
                bot.send_message(
                    text=conversations.QUICK_SEARCH_START,
                    chat_id=telegram_info.id,
                    message_id=update.callback_query.message.message_id,
                    reply_markup=KEYBOARDS.quick_search_start_keyboard_markup,
                    parse_mode=telegram.ParseMode.MARKDOWN)
            return stages.QUICK_SEARCH_MODE_SELECTION
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
Beispiel #17
0
def submit(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        message = update.callback_query.message
        telegram_info = update._effective_user
        category_id = post_helper.get_category_id_from_cache(
            user_id=telegram_info.id, username=telegram_info.username)

        if callback_data == 'reset':
            ticket = post_helper.reset_cache(user_id=telegram_info.id,
                                             username=telegram_info.username)
            flogger.info(
                log_util.get_ub_log(user_id=telegram_info.id,
                                    username=telegram_info.username,
                                    funcname=__name__,
                                    callback_data=callback_data))
            bot.edit_message_text(
                text=conversations.POST_TICKET_START.format_map(
                    post_helper.flatten(ticket)),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.post_ticket_keyboard_markup.get(
                    category_id))
            return stages.POST_SELECT_FIELD

        if callback_data == 'submit':
            # Kick banned user out!
            if post_helper.get_lastest_auth(telegram_info) is False:
                update.message.reply_text(conversations.MAIN_PANEL_YELLOWCOW)
                return stages.END
            ticket = post_helper.get_cache(user_id=telegram_info.id,
                                           username=telegram_info.username)
            flogger.info(
                log_util.get_ub_log(user_id=telegram_info.id,
                                    username=telegram_info.username,
                                    funcname=__name__,
                                    callback_data=callback_data,
                                    extra=ticket))
            result = request_helper.send_ticket_insert(ticket)
            if result.get('status'):
                flogger.info(
                    log_util.get_ub_log(user_id=telegram_info.id,
                                        username=telegram_info.username,
                                        funcname=__name__,
                                        callback_data=callback_data,
                                        rtn_ticket=result))
                bot.edit_message_text(text=conversations.POST_TICKET_INTO_DB,
                                      chat_id=telegram_info.id,
                                      message_id=message.message_id)
            else:
                flogger.warning(
                    log_util.get_ub_log(user_id=telegram_info.id,
                                        username=telegram_info.username,
                                        funcname=__name__,
                                        callback_data=callback_data,
                                        error=result))
                bot.edit_message_text(text=conversations.POST_TICKET_ERROR,
                                      chat_id=telegram_info.id,
                                      message_id=message.message_id)
            bot.send_message(text=conversations.AND_THEN,
                             chat_id=telegram_info.id,
                             message_id=message.message_id,
                             reply_markup=KEYBOARDS.after_submit_keyboard)
            return stages.POST_SUBMIT
    except Exception:
        flogger.error(
            log_util.get_ub_log(user_id=telegram_info.id,
                                username=telegram_info.username,
                                funcname=__name__,
                                callback_data=callback_data,
                                extra=str(update),
                                trace_back=str(traceback.format_exc())))
def list_events(bot, update, user_data):
    telegram_info = update._effective_user
    message = update.callback_query.message
    callback_data = update.callback_query.data
    events = request_helper.get_sp_events().get('info')
    keyboard = sp_helper.generate_keyboard(events)
    event_mapping = sp_helper.generate_event_mapping(events)

    if callback_data == 'mainpanel':
        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data=callback_data,
            rtn_query=events
        )
        flogger.info(msg)
        bot.edit_message_text(
            text=conversations.MAIN_PANEL_START.format_map(
                {'username': telegram_info.username}),
            chat_id=telegram_info.id,
            message_id=message.message_id,
            reply_markup=KEYBOARDS.actions_keyboard_markup
        )
        return stages.MAIN_PANEL

    elif re.match(r'\d+', callback_data):
        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data=callback_data,
            rtn_query=events
        )
        flogger.info(msg)

        event = event_mapping.get(int(callback_data))
        if event:
            if event.get('type') == 'photo':
                bot.send_photo(
                    chat_id=telegram_info.id,
                    photo=event.get('attachment_id'),
                    caption=event.get('description'),
                    reply_markup=keyboard,
                    parse_mode=telegram.ParseMode.MARKDOWN
                )
            elif event.get('type') == 'document':
                bot.send_document(
                    chat_id=telegram_info.id,
                    document=event.get('attachment_id'),
                    caption=event.get('description'),
                    reply_markup=keyboard,
                    parse_mode=telegram.ParseMode.MARKDOWN
                )
            else:
                bot.edit_message_text(
                    text=event.get('description'),
                    chat_id=telegram_info.id,
                    message_id=message.message_id,
                    reply_markup=keyboard
                )
            return stages.SUPPORT_EVENT_LIST
def route(bot, update, user_data, chat_data):
    try:
        telegram_info = update._effective_user
        callback_data = update.callback_query.data
        flogger.info("user_data: {}, update: {}".format(user_data, update))

        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data=callback_data,
        )
        flogger.info(msg)

        if callback_data == 'info':
            telegram_info = update._effective_user
            bot.edit_message_text(
                text=conversations.INFO,
                chat_id=telegram_info.id,
                message_id=update.callback_query.message.message_id,
                reply_markup=KEYBOARDS.actions_keyboard_markup
            )
            return stages.MAIN_PANEL

        if callback_data == 'post':
            post_ticket.start(bot, update, user_data)
            return stages.POST_SELECT_FIELD

        if callback_data == 'search':
            search.start(bot, update, user_data)
            return stages.SEARCH_SELECT_FIELD

        if callback_data == 'stats':
            platform_stats.stats(bot, update, user_data)
            return stages.TICKET_STAT_LIST

        if callback_data == 'my_ticket':
            update_ticket.start(bot, update, user_data)
            return stages.UPDATE_SELECT_TICKET

        if callback_data == 'events':
            support.start(bot, update, user_data)
            return stages.SUPPORT_EVENT_LIST

        if callback_data == 'quick_search':
            quick_search.start(bot, update, user_data)
            return stages.QUICK_SEARCH_MODE_SELECTION

        if callback_data == 'bye':
            done(bot, update, user_data, chat_data)
            return stages.END
    except Exception:
        msg = log_util.get_ub_log(
            user_id=telegram_info.id,
            username=telegram_info.username,
            funcname=__name__,
            callback_data='done',
            extra=str(update),
            trace_back=str(traceback.format_exc())
        )
        flogger.error(msg)
Beispiel #20
0
def select_field(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        message = update.callback_query.message
        telegram_info = update._effective_user
        post_helper.set_last_choice(user_id=telegram_info.id,
                                    content=callback_data)
        category_id = post_helper.get_category_id_from_cache(
            user_id=telegram_info.id, username=telegram_info.username)
        flogger.info(callback_data)
        if callback_data == 'reset':
            ticket = post_helper.reset_cache(user_id=telegram_info.id,
                                             username=telegram_info.username)
            flogger.info(
                log_util.get_ub_log(
                    user_id=telegram_info.id,
                    username=telegram_info.username,
                    funcname=__name__,
                    callback_data=callback_data,
                ))
            bot.edit_message_text(
                text=conversations.POST_TICKET_START.format_map(
                    post_helper.flatten(ticket)),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.post_ticket_keyboard_markup.get(
                    category_id),
                parse_mode=telegram.ParseMode.MARKDOWN)
            return stages.POST_SELECT_FIELD
        elif callback_data == 'check':
            ticket = post_helper.get_cache(user_id=telegram_info.id,
                                           username=telegram_info.username)
            check_result = TicketValidator(ticket).check_ticket()
            check_wishlist_result = WishlistValidator(ticket).check_wishlist()
            category_id = post_helper.get_category_id_from_cache(
                user_id=telegram_info.id, username=telegram_info.username)
            if check_result.status:
                if check_wishlist_result.status is False:
                    ticket = post_helper.fill_in_wishlist(
                        ticket, check_wishlist_result.info)
                flatten_ticket = post_helper.flatten(ticket)
                flogger.info(
                    log_util.get_ub_log(user_id=telegram_info.id,
                                        username=telegram_info.username,
                                        funcname=__name__,
                                        callback_data=callback_data,
                                        rtn_ticket=ticket))
                bot.edit_message_text(
                    text=conversations.POST_TICKET_CHECK.format_map(
                        flatten_ticket),
                    chat_id=telegram_info.id,
                    message_id=message.message_id,
                    reply_markup=KEYBOARDS.before_submit_post_keyboard_markup)
                return stages.POST_BEFORE_SUBMIT
            else:
                flogger.info(
                    log_util.get_ub_log(user_id=telegram_info.id,
                                        username=telegram_info.username,
                                        funcname=__name__,
                                        callback_data=callback_data,
                                        error=check_result['info']))
                bot.send_message(text=conversations.TYPE_IN_WARNING.format_map(
                    {'error_message': check_result['info']}),
                                 chat_id=telegram_info.id,
                                 message_id=message.message_id)
                bot.send_message(
                    text=conversations.POST_TICKET_START.format_map(
                        post_helper.flatten(ticket)),
                    chat_id=telegram_info.id,
                    message_id=message.message_id,
                    reply_markup=KEYBOARDS.post_ticket_keyboard_markup.get(
                        category_id))
                return stages.POST_SELECT_FIELD
        elif callback_data == 'section':
            ticket = post_helper.get_cache(user_id=telegram_info.id,
                                           username=telegram_info.username)
            category_id = post_helper.get_category_id_from_cache(
                user_id=telegram_info.id, username=telegram_info.username)
            if ticket.get('price_id'):
                bot.edit_message_text(
                    text=conversations.POST_TICKET_INFO.format_map(
                        {'message': TICKET_MAPPING.get(callback_data)}),
                    chat_id=telegram_info.id,
                    message_id=message.message_id,
                    reply_markup=KEYBOARDS.conditions_keyboard_mapping.get(
                        callback_data).get(ticket.get('price_id')))
                return stages.POST_FILL_VALUE
            else:
                bot.edit_message_text(
                    text=conversations.POST_TICKET_SECTION,
                    chat_id=telegram_info.id,
                    message_id=message.message_id,
                    reply_markup=KEYBOARDS.post_ticket_keyboard_markup.get(
                        category_id))
                return stages.POST_SELECT_FIELD
        elif callback_data == 'mainpanel':
            flogger.info(
                log_util.get_ub_log(user_id=telegram_info.id,
                                    username=telegram_info.username,
                                    funcname=__name__,
                                    callback_data=callback_data))
            bot.edit_message_text(
                chat_id=telegram_info.id,
                message_id=message.message_id,
                text=conversations.MAIN_PANEL_START.format_map(
                    {'username': telegram_info.username}),
                reply_markup=KEYBOARDS.actions_keyboard_markup)
            return stages.MAIN_PANEL
        else:
            flogger.info(
                log_util.get_ub_log(user_id=telegram_info.id,
                                    username=telegram_info.username,
                                    funcname=__name__,
                                    callback_data=callback_data))
            bot.edit_message_text(
                text=conversations.POST_TICKET_INFO.format_map(
                    {'message': TICKET_MAPPING.get(callback_data)}),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.conditions_keyboard_mapping.get(
                    callback_data))
            return stages.POST_FILL_VALUE
    except Exception:
        flogger.error(
            log_util.get_ub_log(user_id=telegram_info.id,
                                username=telegram_info.username,
                                funcname=__name__,
                                callback_data=callback_data,
                                extra=str(update),
                                trace_back=str(traceback.format_exc())))
Beispiel #21
0
def select_field(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        message = update.callback_query.message
        telegram_info = update._effective_user
        update_helper.set_last_choice(user_id=telegram_info.id,
                                      content=callback_data)
        flogger.info(callback_data)
        if callback_data == 'mainpanel':

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)

            bot.edit_message_text(
                chat_id=telegram_info.id,
                message_id=update.callback_query.message.message_id,
                text=conversations.MAIN_PANEL_START.format_map(
                    {'username': telegram_info.username}),
                reply_markup=KEYBOARDS.actions_keyboard_markup)
            return stages.MAIN_PANEL
        elif callback_data == 'check':
            ticket = update_helper.get_cache(user_id=telegram_info.id,
                                             username=telegram_info.username)
            flatten_ticket = update_helper.flatten(ticket)

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data,
                                      rtn_ticket=ticket)
            flogger.info(msg)

            bot.edit_message_text(
                text=conversations.UPDATE_CHECK.format_map(flatten_ticket),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.before_submit_post_keyboard_markup)
            return stages.UPDATE_BEFORE_SUBMIT
        else:

            msg = log_util.get_ub_log(
                user_id=telegram_info.id,
                username=telegram_info.username,
                funcname=__name__,
                callback_data=callback_data,
            )
            flogger.info(msg)

            bot.edit_message_text(
                text=conversations.UPDATE_INFO.format_map(
                    {'message': TICKET_MAPPING.get(callback_data)}),
                chat_id=telegram_info.id,
                message_id=message.message_id,
                reply_markup=KEYBOARDS.conditions_keyboard_mapping.get(
                    callback_data))
            return stages.UPDATE_FILL_VALUE
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)
Beispiel #22
0
def submit(bot, update, user_data):
    try:
        callback_data = update.callback_query.data
        message = update.callback_query.message
        telegram_info = update._effective_user

        if callback_data == 'mainpanel':

            msg = log_util.get_ub_log(user_id=telegram_info.id,
                                      username=telegram_info.username,
                                      funcname=__name__,
                                      callback_data=callback_data)
            flogger.info(msg)

            bot.edit_message_text(
                chat_id=telegram_info.id,
                message_id=update.callback_query.message.message_id,
                text=conversations.MAIN_PANEL_START.format_map(
                    {'username': telegram_info.username}),
                reply_markup=KEYBOARDS.actions_keyboard_markup)
            return stages.MAIN_PANEL

        if callback_data == 'submit':
            # Kick banned user out!
            if update_helper.get_lastest_auth(telegram_info) is False:
                update.message.reply_text(conversations.MAIN_PANEL_YELLOWCOW)
                return stages.END

            ticket = update_helper.get_cache(user_id=telegram_info.id,
                                             username=telegram_info.username)
            result = request_helper.send_ticket_update(ticket)
            if result.get('status'):
                msg = log_util.get_ub_log(user_id=telegram_info.id,
                                          username=telegram_info.username,
                                          funcname=__name__,
                                          callback_data=callback_data,
                                          rtn_ticket=result)
                flogger.info(msg)
                bot.edit_message_text(text=conversations.UPDATE_INTO_DB,
                                      chat_id=telegram_info.id,
                                      message_id=message.message_id)
            else:
                msg = log_util.get_ub_log(user_id=telegram_info.id,
                                          username=telegram_info.username,
                                          funcname=__name__,
                                          callback_data=callback_data,
                                          rtn_ticket=result)
                flogger.warning(msg)
                bot.edit_message_text(
                    text=conversations.UPDATE_ERROR,
                    chat_id=telegram_info.id,
                    message_id=message.message_id,
                )
            bot.send_message(text=conversations.AND_THEN,
                             chat_id=telegram_info.id,
                             message_id=message.message_id,
                             reply_markup=KEYBOARDS.after_submit_keyboard)
            return stages.UPDATE_SUBMIT
    except Exception:
        msg = log_util.get_ub_log(user_id=telegram_info.id,
                                  username=telegram_info.username,
                                  funcname=__name__,
                                  callback_data=callback_data,
                                  extra=str(update),
                                  trace_back=str(traceback.format_exc()))
        flogger.error(msg)