Bot Planner - Projeto para acompanhamento do desenvolvimento pessoal

By: Kellen Xavier
Posted: July 06, 2026

Recentemente estive a desenvolver alguns projetos de estudos com IA, e estava precisando me organizar, de, quanto tempo estive a desenvolver — tempo corrido —

também ao esta desenvolvendo algo geralmente eu costumo ler a documentação da lingagem para leitura de algumas práticas, links de documentos, docs que eu estou escrevendo para determinada característica do projeto. Criar tarefas que me lembrei no ato que estava a desenvolver, e verifiquei que pode ser terminada logo após a tarefa que estou a fazer. Além de comentários do que foi realizado, esse acompanhamento de forma geral.

Com base nesse problema, pensei em algo prático que eu possa fazer enquanto estou desenvolvendo. Ou seja comando `/inicio` quando inicio a atividade, `/link` para adicionar documentações entre outros importantes. `/nota` quando eu quiser adicionar notas comentários, `task` para quando quiser criar uma tarefas, `fim` quando finalizar tudo. Após isso gere um `Release notes` com o que foi feito e quais as tarefas ficaram pendentes.

Então lendo uma postagem em um blog e pensei em criar o bot com gestão pessoal para auxiliar no ciclo de desenvolvimento pessoal sem fricção e que gere um report notes no fim do trabalho.

Podendo também aplicar para compartilhar caso queira com alguém do time (desenvolvimento orientado com metodologia XP).

Criei o repositório no github inicialmente privado mas irei liberar em seguida, open-source — estou a corrigir algumas questões de segurança — e primeiro criar o bot, inicialmente interação é via Discord, mas vai abranger multicanal de comunicação (pensei em slack e dicord principal) as demais particularmente não me interessei muito.

Primeira Fase do desenvolvimento

An image from Notion
An image from Notion

Nos testes iniciais, ficou bem poluído os comandos no chat unificado, então pensei em criar um segundo “canal de texto”, para que o release-notes separado para acompanhar no dia seguinte, tendo essa visão limpa entre “comandos” e “release notes”.

An image from Notion

Organização do Bot

Para configurar o bot é simples, deve-se seguir a documentação oficial neste link: Building your first Discord Bot

An image from Notion

Para estes estudo de caso | Como configurar o Bot:

  1. Vá no Developer Portal do Discord.
  2. Abrir o app ladydebug-bot-planner.
  3. Vá em Bot.
  4. Clique em Reset Token.
  5. Copie o token novo.
  6. Atualize DISCORD_TOKEN no .env.
  7. Rode de novo: set -a; source .env; set +a python -m daily.main
  8. Configuração Mínima Local Seu .env local deve ter pelo menos: DISCORD_TOKEN=token_do_bot DISCORD_GUILD_ID=807481361916100628 DB_PATH=daily.db

Plano de Testes Bot Planner

Visão geral

Checklist:

[•] Mapear módulos e funcionalidades existentes em src/daily [ ] Mapear testes existentes por funcionalidade [ ] Executar testes/cobertura disponível [ ] Consolidar lacunas de cobertura e recomendações

Funcionalidades Com Testes

Criei o report em docs/TEST_COVERAGE_REPORT.md aqui ele documenta o seguinte:

Principais áreas priorizadas no report:

  1. CommandRouter
  2. SqliteStorage
  3. SimpleFetcher
  4. VCS adapters
  5. Report de fim de dia
  6. Discord adapter callbacks
  7. Models/DTOs
  8. Métrica objetiva com coverage

Erros encontrado:

python -m daily.main
2026-07-09 09:32:45 INFO     discord.client logging in using static token
2026-07-09 09:32:47 INFO     discord.gateway Shard ID None has connected to Gateway (Session ID: b25a5b78274ede64c286f2fc11e8c2e3).
Bot online como ladydebug-bot-planner#3088
2026-07-09 09:51:05 ERROR    discord.app_commands.tree Ignoring exception in command 'inicio'
Traceback (most recent call last):
  File "/home/kellen/Documents/Projetos github/ladydebug-bot-planner/.venv/lib/python3.14/site-packages/discord/app_commands/commands.py", line 859, in _do_call
    return await self._callback(interaction, **params)  # type: ignore
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kellen/Documents/Projetos github/ladydebug-bot-planner/src/daily/adapters/discord_bot.py", line 90, in inicio
    msg = router.inicio(str(interaction.user.id), str(interaction.channel_id))
  File "/home/kellen/Documents/Projetos github/ladydebug-bot-planner/src/daily/command_router.py", line 32, in inicio
    s = self._day.start_day(user_id, channel_id)
  File "/home/kellen/Documents/Projetos github/ladydebug-bot-planner/src/daily/core/day_service.py", line 32, in start_day
    raise DayAlreadyOpen("Já existe um dia aberto para este usuário.")
daily.core.day_service.DayAlreadyOpen: Já existe um dia aberto para este usuário.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/kellen/Documents/Projetos github/ladydebug-bot-planner/.venv/lib/python3.14/site-packages/discord/app_commands/tree.py", line 1302, in _call
    await command._invoke_with_namespace(interaction, namespace)
  File "/home/kellen/Documents/Projetos github/ladydebug-bot-planner/.venv/lib/python3.14/site-packages/discord/app_commands/commands.py", line 884, in _invoke_with_namespace
    return await self._do_call(interaction, transformed_values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kellen/Documents/Projetos github/ladydebug-bot-planner/.venv/lib/python3.14/site-packages/discord/app_commands/commands.py", line 877, in _do_call
    raise CommandInvokeError(self, e) from e
discord.app_commands.errors.CommandInvokeError: Command 'inicio' raised an exception: DayAlreadyOpen: Já existe um dia aberto para este usuário.

Motivo:

DayAlreadyOpen: Já existe um dia aberto para este usuário. Isso acontece porque você executou /inicio, o bot abriu uma sessão no daily.db, e depois você chamou /inicio de novo sem antes fechar com /fim.

Explicação:

Causa Técnica O core está correto em impedir dois dias abertos: if self._storage.get_open_session(user_id) is not None: raise DayAlreadyOpen("Já existe um dia aberto para este usuário.") O problema é que essa exceção está vazando até o Discord, gerando stack trace. O bot deveria responder algo amigável, como: Já existe um dia aberto para você. Use /fim para fechar antes de iniciar outro.

Correções:

Plano De Ajustes Ainda em modo planejamento, então não vou editar arquivos agora. O ajuste recomendado é:

O Que Mudou:

Visão Geral de Testes com Discord

An image from Notion

Updates e Melhorias

Foi colocado um segundo canal de texto onde que, com o comando `/fim` finaliza o report e adiciona no canal que fez a chamada, o release-notes do dia.

Agora foi visto que precisa ser finalizada as atividades criadas no dia. Para isso segue a nova funcionalidade.

Funcionalidade: Dado que o usuário conclua e foi finalizada a “Tarefa” criada, Então deve adicionar o comando `/fim-task` com a seguinte ação: Comportamento esperado:

URL: para adicionar o link de uma atividade concluida Titulo Tarefa: Nome da Minha task aqui Tempo da atividade aberta: xx minutos / xx horas / xx dias Dado que a atividade contém comentário, Quando concluir ação Então release notes deve mostrar comentários adicionada a ação

An image from Notion

Fluxo De Produção