def default(mensagem, comando, func): log_msg(mensagem) try: if mensagem.chat.id != -1001003662865 and mensagem.from_user.id != 110806641: block(mensagem) else: bot.reply_to(mensagem, consulta_grupo(comando)) except Exception as erro: log_erros(func, erro, mensagem)
def comando_sugest(message): log_msg(mensagem) if mensagem.chat.id != -1001003662865 and mensagem.from_user.id != 110806641: block(mensagem) else: if len(message.text) > 10: arq_sugest = open('sugest.txt', 'a') arq_sugest.write('\n\n'+'-'*30+'\n'+message.text.replace('/sugestão ', '')) arq_sugest.close() bot.reply_to(message,'*Sugestão recebida, obrigado*', parse_mode='Markdown') else: bot.reply_to(message,'Uso: `/sugestão <sugestão>`', parse_mode='Markdown')
def comando_sugest(mensagem): log_msg(mensagem) if mensagem.chat.type != 'private': bot.reply_to(mensagem, '*Para usar esta função, me chame no PV*', parse_mode='Markdown') else: try: if len(mensagem.text) <= 6: bot.reply_to(mensagem, 'Código muito curto') else: bot.reply_to(mensagem, '```\n'+mensagem.text.replace('/code ', '')+'\n```', parse_mode="Markdown") except Exception as erro: log_erros('comando code', erro, mensagem) print('\n------------------------------------\nErro na função code, consulte o arquivo logs_de_erros,', datetime.today())
def id_(mensagem): log_msg(mensagem) try: bot.reply_to(mensagem,''' INFO ID: {id_user} Seu Nome: {nome} Username: @{username} --------------------- Nome do Chat: {nome_grupo} ID do Grupo: {id_grupo}'''.format(nome = mensagem.from_user.first_name + mensagem.from_user.last_name if mensagem.from_user.last_name else mensagem.from_user.first_name, username = mensagem.from_user.username, id_user = mensagem.from_user.id, nome_grupo = mensagem.chat.title, id_grupo = mensagem.chat.id)) except Exception as erro: log_erros('comando ID', erro, mensagem) print('\n------------------------------------\nErro na função ID, consulte o arquivo logs_de_erros,', datetime.today())
def comando_sugest(message): log_msg(mensagem) if mensagem.chat.id != -1001003662865 and mensagem.from_user.id != 110806641: block(mensagem) else: if len(message.text) > 10: arq_sugest = open('sugest.txt', 'a') arq_sugest.write('\n\n' + '-' * 30 + '\n' + message.text.replace('/sugestão ', '')) arq_sugest.close() bot.reply_to(message, '*Sugestão recebida, obrigado*', parse_mode='Markdown') else: bot.reply_to(message, 'Uso: `/sugestão <sugestão>`', parse_mode='Markdown')
def id_(mensagem): log_msg(mensagem) if limite_comando('sorteio', datetime.today().minute) == True: try: bot.reply_to(mensagem,''' To Aqui ! o/ Checando equipamentos... Sistema [OK] Bateria [OK] Munição [OK] Explosivos [OK] -------------------------- Verificação completa ! Data: {hour} '''.format(hour = str(datetime.today())[:19])) except Exception as erro: log_erros('comando STATUS', erro, mensagem) print('\n------------------------------------\nErro na função status, consulte o arquivo logs_de_erros,', datetime.today())
def id_(mensagem): log_msg(mensagem) if limite_comando('sorteio', datetime.today().minute) == True: try: bot.reply_to( mensagem, ''' To Aqui ! o/ Checando equipamentos... Sistema [OK] Bateria [OK] Munição [OK] Explosivos [OK] -------------------------- Verificação completa ! Data: {hour} '''.format(hour=str(datetime.today())[:19])) except Exception as erro: log_erros('comando STATUS', erro, mensagem) print( '\n------------------------------------\nErro na função status, consulte o arquivo logs_de_erros,', datetime.today())
def comando_sugest(mensagem): log_msg(mensagem) if mensagem.chat.type != 'private': bot.reply_to(mensagem, '*Para usar esta função, me chame no PV*', parse_mode='Markdown') else: try: if len(mensagem.text) <= 6: bot.reply_to(mensagem, 'Código muito curto') else: bot.reply_to(mensagem, '```\n' + mensagem.text.replace('/code ', '') + '\n```', parse_mode="Markdown") except Exception as erro: log_erros('comando code', erro, mensagem) print( '\n------------------------------------\nErro na função code, consulte o arquivo logs_de_erros,', datetime.today())
def comando_buscar_modulo(mensagem): log_msg(mensagem) if limite_comando('', datetime.today().minute) == True: if mensagem.chat.type != 'private': bot.reply_to(mensagem, '*Para usar esta função, me chame no PV*', parse_mode='Markdown') else: try: texto = mensagem.text.split(' ')[1] if len(texto) > 2: resposta = buscar_modulo(texto) if resposta: resposta = ''.join(x for x in resposta) resposta = telebot.util.split_string(resposta, 3000) for x in resposta: bot.reply_to(mensagem,x) else: bot.reply_to(mensagem,'_Nenhum módulo encontrado_', parse_mode='Markdown') else: bot.reply_to(mensagem,'_Termo de busca muito curto, tente novamente_', parse_mode='Markdown') except IndexError: bot.reply_to(mensagem,'Uso: `/buscar_modulo <termo de busca>`\n_Ex.: /buscar_[_]()_modulo telegram_', parse_mode='Markdown') except Exception as erro: log_erros('comando buscar_modulo', erro, mensagem) print('\n------------------------------------\nErro na função buscar_modulo, consulte o arquivo logs_de_erros,', datetime.today())
def comando_buscar_modulo(mensagem): log_msg(mensagem) if limite_comando('', datetime.today().minute) == True: if mensagem.chat.type != 'private': bot.reply_to(mensagem, '*Para usar esta função, me chame no PV*', parse_mode='Markdown') else: try: texto = mensagem.text.split(' ')[1] if len(texto) > 2: resposta = buscar_modulo(texto) if resposta: resposta = ''.join(x for x in resposta) resposta = telebot.util.split_string(resposta, 3000) for x in resposta: bot.reply_to(mensagem, x) else: bot.reply_to(mensagem, '_Nenhum módulo encontrado_', parse_mode='Markdown') else: bot.reply_to( mensagem, '_Termo de busca muito curto, tente novamente_', parse_mode='Markdown') except IndexError: bot.reply_to( mensagem, 'Uso: `/buscar_modulo <termo de busca>`\n_Ex.: /buscar_[_]()_modulo telegram_', parse_mode='Markdown') except Exception as erro: log_erros('comando buscar_modulo', erro, mensagem) print( '\n------------------------------------\nErro na função buscar_modulo, consulte o arquivo logs_de_erros,', datetime.today())
def id_(mensagem): log_msg(mensagem) try: bot.reply_to( mensagem, ''' INFO ID: {id_user} Seu Nome: {nome} Username: @{username} --------------------- Nome do Chat: {nome_grupo} ID do Grupo: {id_grupo}'''.format( nome=mensagem.from_user.first_name + mensagem.from_user.last_name if mensagem.from_user.last_name else mensagem.from_user.first_name, username=mensagem.from_user.username, id_user=mensagem.from_user.id, nome_grupo=mensagem.chat.title, id_grupo=mensagem.chat.id)) except Exception as erro: log_erros('comando ID', erro, mensagem) print( '\n------------------------------------\nErro na função ID, consulte o arquivo logs_de_erros,', datetime.today())
def main(event, context): """ This Lambda's entry point :param event: the event received from the s3 bucket :param context: the runtime environment information """ print(event) # rewritten # logger, log = get_logger() bucket_name = event['Records'][0]['s3']['bucket']['name'] object_key = event['Records'][0]['s3']['object']['key'] # open new transaction / get its id id_txn = new_txn(connection, object_key, datetime.utcnow()) if id_txn < 0: # skip when the same file being processed return obj = s3.Object(bucket_name, object_key) # If the uploaded file is a schema, add it to the Postgres if object_key[-3:] == 'yml': log_msg('Requesting file from S3', connection, object_key, processing) try: body = obj.get()['Body'] contents = body.read() except ClientError as ex: txn_msg = f'Error with S3: {ex.response["Error"]["Code"]}' log_msg(txn_msg, connection, object_key, failed) log_txn(connection, id_txn, failed, msg=txn_msg) return log_msg('Read contents from S3', connection, object_key, processing) try: schema = yaml.load(contents.decode('utf-8')) schemas_xml.add_schema(schema, connection) log_msg('Add schema to database', connection, object_key, processing) except: txn_msg = 'Error with processing schema' log_msg(txn_msg, connection, object_key, failed) log_txn(connection, id_txn, failed, txn_msg) return # schema added successfully txn_msg = 'Finished processing schema' log_msg(txn_msg, connection, object_key, succeeded) log_txn(connection, id_txn, succeeded, msg=txn_msg) # If the uploaded file is the actual data elif object_key[-3:] == 'xml' or object_key[-2:] == 'gz': log_msg('Read data from S3', connection, object_key, processing) # Read the contents of the file try: body = obj.get()['Body'] contents = body.read() except ClientError as ex: txn_msg = f'Error with reading data: {ex.response["Error"]["Code"]}' log_msg(txn_msg, connection, object_key, failed) log_txn(connection, id_txn, failed, msg=txn_msg) return # for gzip-compressed files, decompress first if object_key[-2:] == 'gz': log_msg('Data in GZ format', connection, object_key, processing) try: contents = gzip.decompress(contents) except: txn_msg = "Error with decompressing .gz data" log_msg(txn_msg, connection, object_key, failed) log_txn(connection, id_txn, failed, msg=txn_msg) return log_msg('Decompressed data', connection, object_key, processing) log_msg("Start extracting data ...", connection, object_key, processing) try: xml_data = ET.fromstring(contents.decode('utf-8')) except ET.ParseError as ex: txn_msg = f'Error with parsing XML data: {ex.response["Error"]["Code"]}' log_msg(txn_msg, connection, object_key, failed) log_txn(connection, id_txn, failed, msg=txn_msg) return data = extract_traffic_data(xml_data, NS_PREFIX) # print("DEBUG:\n",data[0]) size = len(data) log_msg(f'Writing {size} locations to DynamoDB', connection, object_key, processing) # Break the batch into reasonably sized chunks chunk_size = 200 for i in range(0, size, chunk_size): # processing only subset when debugging if FLAG_DEBUG and i > 2 * chunk_size: break j = min(size, i + chunk_size) with traffic_table.batch_writer(overwrite_by_pkeys=[ 'measurementSiteReference', 'measurementTimeDefault' ]) as batch: for item in data[i:j]: batch.put_item(Item=item) log_msg(f'Wrote items {i}-{j}', connection, object_key, processing) # break build by skipping this if BREAK_BUILD: return txn_msg = 'Finished processing traffic data' log_msg(txn_msg, connection, object_key, succeeded) log_txn(connection, id_txn, succeeded, num_locations=size, msg=txn_msg)