예제 #1
0
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
    )
예제 #2
0
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
        )
예제 #3
0
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
    )
예제 #4
0
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
    )
예제 #5
0
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
    )
예제 #6
0
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
예제 #7
0
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
    )
예제 #8
0
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
    )