image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Carlos CGS
Carlos CGS06/10/2025 08:21
Compartilhe

Como Fazer Seu Assistente J.A.R.V.I.S. Guardar Tarefas com Python Puro

    🌌 Projeto CodeVerse Python – #40/2025

    👋 Fala, galera dev!

    🚀 Chegamos ao artigo #40 da nossa jornada no Projeto CodeVersePython2025, e hoje vamos dar ao nosso Jarvis mais uma habilidade que todo assistente real precisa ter: guardar lembretes e agenda de tarefas.

    Afinal, de que adianta ter um assistente inteligente que abre programas e pesquisa informações, mas não consegue lembrar que você tem uma reunião amanhã às 9h? 🤔 É como se o Tony Stark tivesse o Jarvis para controlar as armaduras, mas o sistema esquecesse de avisar que o Conselho da S.H.I.E.L.D. estava esperando por ele na sala de reuniões. 😅

    Nosso objetivo aqui é simples: vamos ensinar o Jarvis a guardar compromissos e lembrar você depois, tudo usando Python puro, de uma forma bem simples e usando apenas bibliotecas nativas, ou seja, menos código e mais agilidade para adiiconarmos mais essa funcionalidade ao nosso projeto de assitente.

    🧠 Como vamos fazer isso?

    A lógica é bem parecida com a de uma agenda de papel, só que digital, e para isso vamos fazer o comando de uma forma bem natural, para tornar bem proximo de uma conversa com um assitente, utilizando ocnceitos aprendidos nos ultimos artigos, as famosas wake words.

    • Quando você disser: “Jarvis, lembre-me de revisar o código amanhã às 10h”, ele vai salvar essa informação.
    • Depois, sempre que o programa rodar, ele pode checar os lembretes e te avisar.

    Para isso, vamos usar:

    • speech_recognition → o ouvido do Jarvis.
    • pyttsx3 → a voz do Jarvis.
    • json → a “memória” onde os compromissos vão ser guardados.
    • datetime → para comparar horários e saber quando é hora de te lembrar.

    🐍 Parte 1 – Criando um lembrete simples

    Antes de levarmos essa ideia direto para o Jarvis, vamos construir uma versão bem básica do sistema de lembretes. Assim conseguimos entender de forma clara como salvar e recuperar informações, sem misturar com outras funções do assistente.

    import json
    from datetime import datetime
    
    arquivo_lembretes = "lembretes.json"
    
    # Salvar lembrete
    def salvar_lembrete(texto, horario):
      try:
          with open(arquivo_lembretes, "r") as f:
              lembretes = json.load(f)
      except FileNotFoundError:
          lembretes = []
    
      lembretes.append({"texto": texto, "horario": horario})
      with open(arquivo_lembretes, "w") as f:
          json.dump(lembretes, f)
    
    # Checar lembretes
    def verificar_lembretes():
      try:
          with open(arquivo_lembretes, "r") as f:
              lembretes = json.load(f)
      except FileNotFoundError:
          return []
    
      agora = datetime.now().strftime("%d/%m/%Y %H:%M")
      return [l for l in lembretes if l["horario"] == agora]
    
    # Exemplo prático
    salvar_lembrete("Reunião com os Vingadores", "05/10/2025 09:00")
    print("Lembretes para agora:", verificar_lembretes()) 
    

    👉 O que acontece aqui?

    • Criamos uma lista de lembretes com texto e horário.
    • Salvamos no arquivo lembretes.json.
    • Sempre que rodamos, verificamos se a hora atual bate com algum lembrete.

    🤖 Parte 2 – Integrando ao Jarvis

    Agora que já sabemos como a lógica funciona isoladamente, é hora de unir tudo ao nosso Jarvis. Dessa forma, poderemos criar lembretes diretamente por voz e ouvir o próprio assistente nos avisando quando chegar a hora.

    import speech_recognition as sr
    import pyttsx3
    import json
    from datetime import datetime
    
    engine = pyttsx3.init()
    r = sr.Recognizer()
    arquivo_lembretes = "lembretes.json"
    
    def falar(texto):
      engine.say(texto)
      engine.runAndWait()
    
    def salvar_lembrete(texto, horario):
      try:
          with open(arquivo_lembretes, "r") as f:
              lembretes = json.load(f)
      except FileNotFoundError:
          lembretes = []
    
      lembretes.append({"texto": texto, "horario": horario})
      with open(arquivo_lembretes, "w") as f:
          json.dump(lembretes, f)
    
    def verificar_lembretes():
      try:
          with open(arquivo_lembretes, "r") as f:
              lembretes = json.load(f)
      except FileNotFoundError:
          return []
    
      agora = datetime.now().strftime("%d/%m/%Y %H:%M")
      return [l for l in lembretes if l["horario"] == agora]
    
    with sr.Microphone() as source:
      falar("Estou ouvindo, senhor. Qual lembrete deseja salvar?")
      audio = r.listen(source)
    
    try:
      comando = r.recognize_google(audio, language="pt-BR").lower()
    
      if "lembrar" in comando:
          # Exemplo: "lembrar reunião amanhã às 9 horas"
          salvar_lembrete("Reunião", "05/10/2025 09:00")
          falar("Lembrete salvo com sucesso.")
    
      lembretes_atuais = verificar_lembretes()
      for l in lembretes_atuais:
          falar(f"Senhor, lembrete: {l['texto']}")
    
    except:
      falar("Não consegui entender, senhor.") 
    

    👉 Agora o Jarvis consegue:

    1. Ouvir quando pedimos para lembrar algo.
    2. Guardar em memória.
    3. Verificar se chegou a hora e nos avisar.

    ✨ Personalizando (dando um toque humano)

    Aqui é onde você pode brincar e dar mais personalidade ao Jarvis. Quando ele for lembrar algo, ao invés de falar sempre a mesma frase, você pode criar respostas diferentes, como:

    • “Senhor, está na hora da sua reunião com os Vingadores.”
    • “Carlos, lembrete ativado: revisar o código do Jarvis.”
    • “Não se esqueça do compromisso que me pediu para lembrar.”

    Isso faz toda a diferença para o Jarvis parecer menos robótico e mais humano.

    🔮 Concluindo...

    Chegamos ao fim de mais um passo na evolução do nosso Jarvis. Hoje vimos que até mesmo algo aparentemente simples, como criar lembretes, pode transformar nosso assistente em algo muito mais útil no dia a dia. O importante e diferencial é termos as idéias de como podemos complementar nosso assitente e colocar as idéias em prática adicionando mais funcionalidades a cada dia, tendo o céu como limite. É como no universo Marvel: às vezes não é a armadura nova cheia de mísseis que faz a diferença, mas sim um detalhe estratégico que muda tudo na batalha. Da mesma forma, essa função básica abre espaço para que o Jarvis seja não só um assistente, mas um verdadeiro aliado na nossa rotina.

    ✅ Nesse artigo aprendemos a salvar lembretes em um arquivo.

    ✅ Neste artigo fizemos o Jarvis criar lembretes por voz.

    ✅ Neste artigo vimos como personalizar as respostas para deixá-lo mais natural.

    Nos próximos artigos, vamos expandir esse sistema e abrindo musicas no youtube por camando de voz, criando anotações para guardra insights, criando o modo privado do jarvis onde ele para de ouvir suas conversdas, além de muitas outras funcionalidades, criando um Jarvis ainda mais útil no nosso dia a dia.

    👉 Curtiu? Me siga no GitHub e no LinkedIn para acompanhar a evolução do Projeto CodeVersePython2025.

    Porque o futuro não é esperar a tecnologia chegar. É a gente criar ela hoje. ⚡

    image

    Compartilhe
    Recomendados para você
    Luizalabs - Back-end com Python
    PcD Tech Bradesco - Java & QA Developer
    Nexa - Fundamentos de IA Generativa com Bedrock
    Comentários (1)
    DIO Community
    DIO Community - 06/10/2025 10:14

    Excelente, Carlos! Que artigo incrível e super completo sobre "Como Fazer Seu Assistente J.A.R.V.I.S. Guardar Tarefas com Python Puro"! É fascinante ver como você aborda o desenvolvimento do J.A.R.V.I.S., dando a ele uma memória de longo prazo para guardar compromissos e agenda de tarefas usando apenas recursos simples do Python e a manipulação de arquivos JSON.

    Você demonstrou que a sua solução, que usa a biblioteca json e os comandos de manipulação de arquivos (open, read, write, dump, load), é a prova de que a persistência de dados não precisa de bancos de dados complexos para começar. Sua análise de que o datetime é crucial para comparar horários e saber quando avisar o usuário é um insight valioso para a comunidade.

    Qual você diria que é o maior desafio para um desenvolvedor ao lidar com a vasta quantidade de bibliotecas e pacotes disponíveis, em termos de identificar a melhor opção e de evitar dependências desnecessárias que poderiam adicionar complexidade ao projeto?