def signup(bot, update): logger.info('Signing up user {}, chat_id {}'.format(update.message.from_user.first_name,update.message.chat_id)) message = "Pré cadastro realizado com sucesso!" user_collection = getUserCollection() user = user_collection.find_one({"_id": str (update.message.chat_id)}) if(user == None): user = { "_id": str(update.message.chat_id), "name":update.message.from_user.first_name, "spreadsheet_identifier":update.message.from_user.first_name, "chat_id": str(update.message.chat_id), "alert_telegram": False, "alert_weekday": "3", "alert_hour": "15:00", "created_at": datetime.datetime.now(), "updated_at": datetime.datetime.now(), } user_id = user_collection.insert_one(user).inserted_id if(user_id == None): message = "Não foi possível cadastrar usuário." else: message = "Já existe um cadastro" bot.send_message( chat_id=update.message.chat_id, text=message )
def text_decoder(bot, update): message = "" user_text = update.message.text.casefold() logger.info("User sent text: {}".format(user_text)) if user_text == "cadastro": register(bot, update) elif user_text == "cadastrar": signup(bot, update) elif user_text == "ajuda": help(bot, update) elif user_text == "dia": show_weekday_keyboard(bot, update) else: is_valid = validate_email(update.message.text) if(is_valid): user_collection = getUserCollection() user = user_collection.find_one({"_id": str (update.message.chat_id)}) if(user != None): if(user['email'] != None): message = "Usuário já possui um e-mail cadastrado! Se deseja atualizar o email, utilize o comando: /email NOVO_EMAIL" else: user_collection.update_one({"_id": str (update.message.chat_id)}, {"$set": {"email": update.message.text, "updated_at": datetime.datetime.now()}}) message = "E-mail cadastrado com sucesso!" else: message = "Não foi possível atualizar e-mail, por favor inicie o cadastro com /cadastro" else: message = "😬 Desculpe ainda não aprendi a responder sua mensagem" bot.send_message( chat_id=update.message.chat_id, text=message )
def register(bot, update): logger.info('Query chat_id {} register'.format(update.message.chat_id)) user_collection = getUserCollection() user = user_collection.find_one({"_id": str (update.message.chat_id)}) message = "Usuário não cadastrado." if(user != None): message = formatUserData(user) bot.send_message( chat_id=update.message.chat_id, text=message )
def clear_email(bot, update): message = "E-mail removido com sucesso!" logger.info('Clearing user {} email to user'.format(update.message.chat_id)) user_collection = getUserCollection() result = user_collection.update_one({"_id": str (update.message.chat_id)}, {"$set": {"email": "", "updated_at": datetime.datetime.now()}}) if(result.modified_count <= 0): message = "Não foi encontrar o cadastro a ser atualizado, por favor tente novamente mais tarde." bot.send_message( chat_id=update.message.chat_id, text=message )
def change_alert_telegram(bot, update, args): message = "Configuração atualizada." if(args != None and len(args) > 0 and args[0] != None and args[0] != "" and (args[0] == "on" or args[0] == "off")) : user_collection = getUserCollection() result = user_collection.update_one({"_id": str (update.message.chat_id)}, {"$set": {"alert_telegram": args[0] == "on", "updated_at": datetime.datetime.now()}}) if(result.modified_count <= 0): message = "Não foi encontrar o cadastro a ser atualizado, por favor tente novamente mais tarde." else: message = "Opção informada é inválida, por favor envie o comando novamente com a opção on para começar a receber o alerta ou off para parar de receber o alerta" bot.send_message( chat_id=update.message.chat_id, text=message )
def update_notification_weekday(user_id, choosen_weekday): global weekdays_dictionary status = True message = "Configuração atualizada." if(choosen_weekday != None and choosen_weekday != "" and weekdays_dictionary.get(choosen_weekday) != None) : user_collection = getUserCollection() result = user_collection.update_one({"_id": str (user_id)}, {"$set": {"alert_weekday": choosen_weekday, "updated_at": datetime.datetime.now()}}) if(result.modified_count <= 0): status = False message = "Não foi encontrar o cadastro a ser atualizado, por favor tente novamente mais tarde." else: status = False message = "Opção informada é inválida." return message, status
def update_email(bot, update, args): message = "E-mail atualizado com sucesso. A partir de agora você começará a receber alertas em seu email cadastro, caso deseje parar de receber utilize o comando /clear_email" if(args != None and len(args) > 0 and args[0] != None and args[0] != ""): logger.info('Updating email to user {}, new email {}'.format(update.message.chat_id, args[0])) is_valid = validate_email(args[0]) if(is_valid): user_collection = getUserCollection() result = user_collection.update_one({"_id": str (update.message.chat_id)}, {"$set": {"email": args[0], "updated_at": datetime.datetime.now()}}) if(result.modified_count <= 0): message = "Não foi encontrar o cadastro a ser atualizado, por favor tente novamente mais tarde." else: message = "E-mail informado não é válido." else: message = "É necessário informar um email para atualizar o cadastro." bot.send_message( chat_id=update.message.chat_id, text=message )
def register_spreadsheet_name(bot, update, args): message = "Identificador da planilha atualizado com sucesso!" if(args != None and len(args) > 0 and args[0] != None and args[0] != ""): new_identifier = " ".join(args) logger.info('Updating user {} spreadsheet user identifier to {}'.format(update.message.chat_id, new_identifier)) user_collection = getUserCollection() found = user_collection.find_one({"spreadsheet_identifier": new_identifier}) if(found == None): result = user_collection.update_one({"_id": str (update.message.chat_id)}, {"$set": {"spreadsheet_identifier": new_identifier, "updated_at": datetime.datetime.now()}}) if(result.modified_count <= 0): message = "Não foi encontrar o cadastro a ser atualizado, por favor tente novamente mais tarde." else: message = "Não foi possível atualizar cadastro, já existe outra usuário com esse nome cadastrado." else: message = "Para utilizar esse comando é necessário informar um texto." bot.send_message( chat_id=update.message.chat_id, text=message )