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))
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)
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))
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
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
def test_get_carrier_by_code(code, carrier): assert check_type(code) == carrier