Пример #1
0
def cmd_magic(message):
    bot.send_chat_action(message.chat.id, 'typing')
    if str(message.from_user.id) in BANNED:
        log_text(message.chat.id, message.message_id,
                 '--- BANIDO --- ' + message.text)
        bot.send_message(message.chat.id, msgs.banned)
        return 0
    log_text(message.chat.id, message.message_id, message.text)
    user = str(message.chat.id)
    code = (str(message.text.strip().replace(
        '/start ', '').replace('\n', ' ').replace('/', '').upper().replace(
            '@RASTREIOBOT', '').replace('📮 ', '').replace('📮',
                                                          '').split(' ')[0]))
    try:
        desc = (str(
            message.text.replace('\n', ' ').split(
                ' ', 1)[1].split('Data:')[0].replace('  ', '')))
    except Exception:
        desc = code
    if check_type(code) is not None:
        sleep(random.randrange(500, 2000, 100) / 1000)
        exists = check_package(code)
        if exists:
            exists = check_user(code, user)
            if not exists:
                add_user(code, user)
            statts = status_package(code)
            message = ''
            system = check_system()
            for stat in statts:
                message = message + '\n\n' + stat
            if not system:
                message = (message + msgs.error_sys)
            if int(user) > 0:
                bot.send_message(user,
                                 message,
                                 parse_mode='HTML',
                                 reply_markup=markup_btn,
                                 disable_web_page_preview=True)
            else:
                send_clean_msg(bot, user, message)
            if desc != code:
                set_desc(str(code), str(user), desc)
        else:
            stat = add_package(str(code), str(user))
            if stat == status.OFFLINE:
                bot.reply_to(message, 'Correios fora do ar')
            elif stat == status.TYPO:
                bot.reply_to(message, msgs.typo)
            elif stat == status.NOT_FOUND:
                bot.reply_to(message, msgs.not_found)
            elif stat == status.OK:
                set_desc(str(code), str(user), desc)
                if int(message.chat.id) > 0:
                    bot.reply_to(message,
                                 'Pacote cadastrado.',
                                 reply_markup=markup_btn)
                    if desc == code:
                        send_clean_msg(bot, user, msgs.desc)
                else:
                    bot.reply_to(message,
                                 'Pacote cadastrado.',
                                 reply_markup=markup_clean)
                sttus = status_package(code)
                last = len(sttus) - 1
                if int(user) > 0:
                    bot.send_message(user,
                                     status_package(code)[last],
                                     parse_mode='HTML',
                                     reply_markup=markup_btn,
                                     disable_web_page_preview=True)
                else:
                    send_clean_msg(bot, user, status_package(code)[last])
    elif code == 'START':
        if int(message.chat.id) > 0:
            send_clean_msg(bot, message.chat.id, msgs.user)
            # bot.send_document(message.chat.id, 'CgADAQADhgAD45bBRvd9d-3ACM-cAg')
            # bot.send_document(message.chat.id, 'CgADAQADTAAD9-zRRl9s8doDwrMmAg')
            # bot.send_document(message.chat.id, 'CgADAQADPgADBm7QRkzGU7UpR3JzAg')
            bot.send_document(message.chat.id,
                              'CgADAQADWQADGu_QRlzGc4VIGIYaAg')
        else:
            send_clean_msg(bot, message.chat.id, msgs.group)
    else:
        if int(user) > 0:
            bot.reply_to(message, msgs.typo)
        if int(user) > 0 and len(message.text) > 25:
            send_clean_msg(bot, message.from_user.id,
                           msgs.invalid.format(message.from_user.id))
Пример #2
0
def cmd_magic(message):
    bot.send_chat_action(message.chat.id, 'typing')
    log_text(message.chat.id, message.message_id, message.text)
    user = str(message.chat.id)
    code = (
        str(message.text.replace('/start ', '').split(' ')[0])
        .replace('/', '').upper().replace('@RASTREIOBOT', '')
    )
    try:
        desc = str(message.text.split(' ', 1)[1])
    except Exception:
        desc = code
    if check_type(code) is not None:
        exists = check_package(code)
        if exists:
            exists = check_user(code, user)
            if not exists:
                add_user(code, user)
            statts = status_package(code)
            message = ''
            system = check_system()
            for stat in statts:
                message = message + '\n\n' + stat
            if not system:
                message = (message + msgs.error_sys)
            if int(user) > 0:
                bot.send_message(
                    user,
                    message,
                    parse_mode='HTML',
                    reply_markup=markup_btn
                )
            else:
                send_clean_msg(bot, user, message)
            if desc != code:
                set_desc(str(code), str(user), desc)
        else:
            stat = add_package(str(code), str(user))
            if stat == status.OFFLINE:
                bot.reply_to(message, 'Correios fora do ar')
            elif stat == status.TYPO:
                bot.reply_to(message, msgs.typo)
            elif stat == status.NOT_FOUND:
                bot.reply_to(message, msgs.not_found)
            elif stat == status.OK:
                set_desc(str(code), str(user), desc)
                if int(message.chat.id) > 0:
                    bot.reply_to(
                        message,
                        'Pacote cadastrado.',
                        reply_markup=markup_btn
                    )
                else:
                    bot.reply_to(
                        message,
                        'Pacote cadastrado.',
                        reply_markup=markup_clean
                    )
                sttus = status_package(code)
                last = len(sttus) - 1
                if int(user) > 0:
                    bot.send_message(
                        user,
                        status_package(code)[last],
                        parse_mode='HTML',
                        reply_markup=markup_btn
                    )
                else:
                    send_clean_msg(bot, user, status_package(code)[last])
    elif code == 'START':
        if int(message.chat.id) > 0:
            send_clean_msg(bot, message.chat.id, msgs.user)
        else:
            send_clean_msg(bot, message.chat.id, msgs.group)
    else:
        if int(user) > 0:
            bot.reply_to(message, msgs.typo)
Пример #3
0
def cmd_magic(message):
    bot.send_chat_action(message.chat.id, 'typing')
    if str(message.from_user.id) in BANNED:
        log_text(message.chat.id, message.message_id,
                 '--- BANIDO --- ' + message.text)
        bot.send_message(message.chat.id, msgs.banned)
        return 0
    log_text(message.chat.id, message.message_id, message.text)
    user = str(message.chat.id)
    message_text = (message.text.replace('/start ', '').replace(
        '/', '').replace('📮', '').strip().split())

    code = code_type = None
    for word in message_text:
        if word.lower() == '@rastreiobot':
            message_text.remove(word)

        code_type = check_type(word)
        if code_type:
            code = word.upper()
            message_text.remove(word)
            break

    message_text = ' '.join(message_text)

    try:
        desc = message_text.split('Data:')[0].replace('  ', '')
        if desc == '':
            desc = code
    except Exception:
        desc = code

    if code_type:
        if code_type != correios and user not in PATREON:
            bot.reply_to(message, msgs.premium, parse_mode='HTML')
            log_text(message.chat.id, message.message_id,
                     'Pacote chines. Usuario nao assinante.')
            return 0
        exists = check_package(code)
        if exists:
            if not db.package_has_user(code, user):
                db.add_user_to_package(code, user)
            stats = db.package_status(code)
            message = ''
            system = check_system_correios()
            for stat in stats:
                message = message + '\n\n' + stat
            if not system:
                message = (message + msgs.error_sys)
            if int(user) > 0:
                bot.send_message(user,
                                 message,
                                 parse_mode='HTML',
                                 reply_markup=markup_btn,
                                 disable_web_page_preview=True)
            else:
                send_clean_msg(bot, user, message)
            if desc != code:
                db.set_package_description(code, user, desc)
        else:
            stat = add_package(str(code), str(user))
            if stat == status.OFFLINE:
                bot.reply_to(message, 'Sistema fora do ar')
            elif stat == status.TYPO:
                bot.reply_to(message, msgs.typo)
            elif stat == status.NOT_FOUND:
                bot.reply_to(message, msgs.not_found)
            elif stat == status.NOT_FOUND_TM:
                bot.reply_to(message, msgs.not_found_tm)
            elif stat == status.OK:
                db.set_package_description(code, user, desc)
                if int(message.chat.id) > 0:
                    bot.reply_to(message,
                                 'Pacote cadastrado.',
                                 reply_markup=markup_btn)
                    if desc == code:
                        send_clean_msg(bot, user, msgs.desc)
                else:
                    bot.reply_to(message,
                                 'Pacote cadastrado.',
                                 reply_markup=markup_clean)
                sttus = db.package_status(code)
                last = len(sttus) - 1
                if int(user) > 0:
                    bot.send_message(user,
                                     db.package_status(code)[last],
                                     parse_mode='HTML',
                                     reply_markup=markup_btn,
                                     disable_web_page_preview=True)
                else:
                    send_clean_msg(bot, user, db.package_status(code)[last])
    elif message.text.upper() == '/START':
        if int(message.chat.id) > 0:
            send_clean_msg(bot, message.chat.id, msgs.user)
            # bot.send_document(message.chat.id, 'CgADAQADhgAD45bBRvd9d-3ACM-cAg')
            # bot.send_document(message.chat.id, 'CgADAQADTAAD9-zRRl9s8doDwrMmAg')
            # bot.send_document(message.chat.id, 'CgADAQADPgADBm7QRkzGU7UpR3JzAg')
            bot.send_document(message.chat.id,
                              'CgADAQADWQADGu_QRlzGc4VIGIYaAg')
        else:
            send_clean_msg(bot, message.chat.id, msgs.group)
    else:
        if int(user) > 0:
            bot.reply_to(message, msgs.typo)
        if int(user) > 0 and len(message.text) > 25:
            send_clean_msg(bot, message.from_user.id,
                           msgs.invalid.format(message.from_user.id))
Пример #4
0
def check_update(code, max_retries=3):
    api_type = check_type(code)
    # TODO: add suport to more api's
    if api_type is trackingmore:
        return trackingmore.get(code, max_retries)
    if api_type is not (correios or trackingmore):
        return status.TYPO
    stats = []
    try:
        response = api_type.get(code, max_retries)
        if response in status.types:
            return response
        result = json.loads(response)
        tabela = result['objeto'][0]['evento']
    except Exception:
        print(api_type)
        if api_type is correios:
            return status.NOT_FOUND
        elif api_type is trackingmore:
            return status.NOT_FOUND_TM
    if len(tabela) < 1:
        return status.NOT_FOUND
    stats.append(str(u'\U0001F4EE') + ' <b>' + code + '</b>')
    for evento in reversed(tabela):
        try:
            dia0 = int(tabela[len(tabela) - 1]['data'].split('/')[0])
            mes0 = int(tabela[len(tabela) - 1]['data'].split('/')[1])
            ano0 = int(tabela[len(tabela) - 1]['data'].split('/')[2])
            data0 = date(ano0, mes0, dia0)
            dia1 = int(evento['data'].split('/')[0])
            mes1 = int(evento['data'].split('/')[1])
            ano1 = int(evento['data'].split('/')[2])
            data1 = date(ano1, mes1, dia1)
            delta = data1 - data0
        except Exception:
            delta = 0
            pass
        data = evento['data'] + ' ' + evento['hora']
        if delta.days == 1:
            data = data + ' (' + str(delta.days) + ' dia)'
        elif delta.days > 1:
            data = data + ' (' + str(delta.days) + ' dias)'
        try:
            local = evento['unidade']['local']
        except Exception:
            local = False
        situacao = evento['descricao']
        if 'endereço indicado' in evento['descricao']:
            try:
                situacao = (
                    situacao + '\n</b>' +
                    evento['unidade']['endereco']['numero'] + ' ' +
                    evento['unidade']['endereco']['logradouro'] + '\n' +
                    evento['unidade']['endereco']['bairro'] + '<b>'
                )
            except Exception:
                pass
        try:
            observacao = str(evento['destino'][0]['local'])
        except Exception:
            observacao = False
        mensagem = 'Data: ' + data.strip()
        if local:
            mensagem = mensagem + '\nLocal: ' + local.strip().title()
        if situacao:
            mensagem = (
                mensagem + '\nSituação: <b>' +
                situacao.strip() + '</b>'
            )
            if 'objeto entregue ao' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F381')
            elif 'encaminhado' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U00002197')
            elif 'postado' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F4E6')
            elif 'saiu para entrega' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F69A')
            elif 'recebido pelos correios' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F4E5')
            elif 'aguardando retirada' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F3E2')
            elif 'objeto apreendido' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F46E')
            elif 'aguardando confirmação de pagamento' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F554')
            elif 'objeto pago' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F4B8')
            elif 'aduaneira finalizada' in situacao.lower():
                mensagem = (mensagem + '\n<i>Acesse o ambiente </i>' +
                '<a href="https://apps.correios.com.br/cas/login?service=https%3A%2F%2Fapps.correios.com.br%2Fportalimportador%2Fpages%2FpesquisarRemessaImportador%2FpesquisarRemessaImportador.jsf">Minhas Importações</a>')
            elif 'aguardando pagamento' in situacao.lower():
                mensagem = (mensagem + ' ' + str(u'\U0001F52B') + 
                '\n<i>Links para efetuar pagamentos aos Correios:</i>' + 
                '\n<a href="https://www2.correios.com.br/sistemas/rastreamento/">Rastreamento</a>' +
                '\n<a href="https://apps.correios.com.br/portalimportador/">Portal Importador</a>')
            elif 'liberado sem' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F389')
        if observacao:
            mensagem = mensagem + '\nObservação: ' + observacao.strip().title()
            if 'liberado sem' in observacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F389')
            elif 'pagamento' in observacao.lower():
                mensagem = (mensagem + 
                '\nhttps://www2.correios.com.br/sistemas/rastreamento/')
        stats.append(mensagem)
    return stats
Пример #5
0
def check_update(code, max_retries=3):
    print('check_update')
    api_type = check_type(code)
    # TODO: add suport to more api's
    if api_type is not correios:
        return status.TYPO
    stats = []
    try:
        response = api_type.get(code, max_retries)
        if response in status.types:
            print("resposta : " + str(response))
            return response
        result = json.loads(response)
        tabela = result['objeto'][0]['evento']
    except Exception:
        return status.NOT_FOUND
    if len(tabela) < 1:
        return status.NOT_FOUND
    stats.append(str(u'\U0001F4EE') + ' <b>' + code + '</b>')
    for evento in reversed(tabela):
        try:
            dia0 = int(tabela[len(tabela) - 1]['data'].split('/')[0])
            mes0 = int(tabela[len(tabela) - 1]['data'].split('/')[1])
            ano0 = int(tabela[len(tabela) - 1]['data'].split('/')[2])
            data0 = date(ano0, mes0, dia0)
            dia1 = int(evento['data'].split('/')[0])
            mes1 = int(evento['data'].split('/')[1])
            ano1 = int(evento['data'].split('/')[2])
            data1 = date(ano1, mes1, dia1)
            delta = data1 - data0
        except Exception:
            delta = 0
            pass
        data = evento['data'] + ' ' + evento['hora']
        if delta.days == 1:
            data = data + ' (' + str(delta.days) + ' dia)'
        elif delta.days > 1:
            data = data + ' (' + str(delta.days) + ' dias)'
        try:
            local = evento['unidade']['local']
        except Exception:
            local = False
        situacao = evento['descricao']
        if 'endereço indicado' in evento['descricao']:
            try:
                situacao = (situacao + '\n</b>' +
                            evento['unidade']['endereco']['numero'] + ' ' +
                            evento['unidade']['endereco']['logradouro'] +
                            '\n' + evento['unidade']['endereco']['bairro'] +
                            '<b>')
            except Exception:
                pass
        try:
            observacao = str(evento['destino'][0]['local'])
        except Exception:
            observacao = False
        mensagem = 'Data: ' + data.strip()
        if local:
            mensagem = mensagem + '\nLocal: ' + local.strip().title()
        if situacao:
            mensagem = (mensagem + '\nSituação: <b>' + situacao.strip() +
                        '</b>')
            if 'objeto entregue ao' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F381')
            elif 'encaminhado' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U00002197')
            elif 'postado' in situacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F4E6')
        if observacao:
            mensagem = mensagem + '\nObservação: ' + observacao.strip().title()
            if 'liberado sem' in observacao.lower():
                mensagem = mensagem + ' ' + str(u'\U0001F389')
        stats.append(mensagem)
    return stats
Пример #6
0
def test_get_carrier_by_code(code, carrier):
    assert check_type(code) == carrier