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


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”.

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

Para estes estudo de caso | Como configurar o Bot:
set -a; source .env; set +a
python -m daily.mainDISCORD_TOKEN=token_do_bot
DISCORD_GUILD_ID=807481361916100628
DB_PATH=daily.dbVisã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:
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 é:
/inicio com dia já aberto mas sem terminar atividades:
Deve retornar:
Mensagem:
🟡 Já existe um dia aberto para você. Use /continuar para seguir o seu dia.
Comportamento: ao enviar comando /continue deve seguir inserindo as atividades, do dia. Ou seja;
Cenário:
Dado que usuário envia o comando /iniciar no dia 1
E no dia 1 usuário envia o comando /iniciar
Quando retornar a mensagem: 🟡 Já existe um dia aberto para você. Use /continuar para seguir o seu dia.
Então usuário deve inserir comando /continuar
E deve seguir até finalizar o dia
Validar /nota sem dia aberto:
Deve retornar:
Mensagem: ⚠️ Nenhum dia aberto. Use /inicio primeiro.
Validar /fim sem dia aberto:
Deve retornar:
Mensagem: ⚠️ Nenhum dia aberto para fechar. Use /inicio para começar.
Validar /link sem dia aberto:
Deve retornar:
Mensagem:
⚠️ Nenhum dia aberto. Use /inicio primeiro.
O Que Mudou:
Visão Geral de Testes com Discord

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
