📌 Introdução
Se você trabalha com metodologias ágeis, sabe como as dailies são essenciais para manter o time alinhado. Mas e se você pudesse automatizar o lembrete e a escolha do apresentador de cada dia?
O DailyBot resolve isso! 🎉
Ele é um bot automatizado para Slack, que anuncia diariamente a reunião e seleciona automaticamente quem será o próximo apresentador. Tudo isso rodando de forma totalmente automatizada com Python, GitHub Actions e a API do Slack.
Este artigo vai te guiar pelo passo a passo para criar, configurar e automatizar o DailyBot no seu time!
O projeto original se encontra no Github, fique à vontade para abrir issues e pull requests no GitHub!
🛠 Tecnologias Utilizadas
Vamos usar as seguintes ferramentas para implementar o bot:
- Python 3.9 → Para programar o bot.
- Slack API → Para postar mensagens no canal do time.
- GitHub Actions → Para rodar o bot automaticamente todos os dias úteis.
- Requests (Python) → Para enviar requisições à API do Slack.
📂 Estrutura do Projeto
O projeto segue uma estrutura organizada para facilitar a manutenção:
. ├── .github/workflows/ # Configuração do GitHub Actions │ ├── ci.yaml # Workflow para execução automatizada ├── scripts/ # Diretório para scripts Python │ ├── daily_slack.py # Script responsável pelo envio da mensagem para o Slack ├── .gitignore # Arquivo para ignorar arquivos desnecessários no repositório ├── LICENSE # Licença do projeto ├── README.md # Documentação do projeto
Agora, vamos ao código! 💻
📢 Criando o Bot no Slack
Antes de rodarmos o DailyBot, precisamos criar um bot no Slack para gerar as credenciais necessárias.
1️⃣ Criando um App no Slack
- Acesse 🔗 Create a Slack App.
- Clique em "Create New App" e escolha "From Scratch".
- Dê um nome ao seu bot (exemplo: DailyBot) e selecione o workspace do seu time.
- Vá até OAuth & Permissions e adicione os seguintes escopos:
-
chat:write
→ Para enviar mensagens no canal. -
chat:write.public
→ Para postar em canais públicos. -
users:read
→ Para listar os membros do time.
-
- Instale o aplicativo no workspace e copie o Bot User OAuth Token (
SLACK_TOKEN
).
Agora que o bot já está no Slack, vamos programá-lo! 🛠️
⚙️ Configurando o Script em Python
Crie o arquivo scripts/daily_slack.py
e adicione o seguinte código:
import requests import os from datetime import datetime # Obtendo as variáveis de ambiente SLACK_TOKEN = os.getenv("SLACK_TOKEN") CHANNEL_ID = os.getenv("CHANNEL_ID") SLACK_MEMBERS = os.getenv("SLACK_MEMBERS").split(",") # Calculando o apresentador do dia execution_number = datetime.utcnow().timetuple().tm_yday next_index = (execution_number - 1) % len(SLACK_MEMBERS) presenter = f"<@{SLACK_MEMBERS[next_index]}>" # Mensagem para o Slack message = ( f"🎤 Olá pessoal! \n" f"Quem apresentará hoje: {presenter}!" ) # Configuração da API do Slack url = "https://slack.com/api/chat.postMessage" headers = {"Authorization": f"Bearer {SLACK_TOKEN}", "Content-Type": "application/json"} data = {"channel": CHANNEL_ID, "text": message} # Enviando a mensagem para o Slack response = requests.post(url, json=data, headers=headers) print("Mensagem enviada:", response.json())
🔍 Como Funciona a Lógica do Script?
Esse script segue uma lógica simples e eficiente para alternar automaticamente o apresentador da daily.
✅ Passo a passo:
- Carregamos as variáveis de ambiente → O token do bot (
SLACK_TOKEN
), o ID do canal (CHANNEL_ID
) e a lista de membros (SLACK_MEMBERS
). - Calculamos o dia do ano atual → O
execution_number
retorna um valor de 1 a 365. - Selecionamos o próximo apresentador → Usamos o operador módulo
%
para percorrer ciclicamente a lista de membros. - Criamos a mensagem com o apresentador do dia → O Slack usa
<@userID>
para mencionar um usuário. - Enviamos a mensagem usando a API do Slack.
Exemplo prático:
Se a lista de apresentadores for:
export SLACK_MEMBERS="U12345,U67890,U54321"
O apresentador será alternado conforme o dia do ano:
Dia do Ano | Apresentador |
---|---|
1 (Jan) | U12345 |
2 (Jan) | U67890 |
3 (Jan) | U54321 |
4 (Jan) | U12345 (reinicia) |
Essa abordagem garante que o bot sempre escolhe o próximo da fila, sem repetições ou sorteios aleatórios. 🔄
🔄 Automatizando com GitHub Actions
Agora, vamos configurar o GitHub Actions para rodar esse bot automaticamente todos os dias úteis.
📌 Criando o Workflow .github/workflows/ci.yaml
Crie o arquivo .github/workflows/ci.yaml
e adicione:
name: Daily Slack Notification on: schedule: - cron: "30 12 * * 1-5" # Executa às 12:30 (UTC) de segunda a sexta workflow_dispatch: # Permite execução manual via GitHub Actions jobs: daily-slack-notification: name: Enviar Notificação para o Slack runs-on: ubuntu-latest steps: - name: Checkout do repositório uses: actions/checkout@v4 - name: Configurar Python uses: actions/setup-python@v4 with: python-version: "3.9" - name: Instalar dependências run: pip install requests - name: Executar script Python run: python scripts/daily_slack.py
📌 Como funciona esse Workflow?
✔️ Execução automática → O cron
agendado faz o bot rodar de segunda a sexta às 12:30 UTC.
✔️ Execução manual → Você pode rodar a ação manualmente via GitHub Actions.
✔️ Instalação automática de dependências → O bot instala requests
antes de rodar o script.
🎯 Conclusão
Agora você sabe como:
✅ Criar um bot no Slack para anunciar dailies.
✅ Escrever um script Python para enviar mensagens automaticamente.
✅ Configurar um workflow no GitHub Actions para automação diária.
✅ Alternar automaticamente o apresentador da daily com uma lógica eficiente.
Agora sua equipe nunca mais esquecerá a daily e quem irá apresenta-la! 🚀
Se tiver dúvidas ou sugestões, deixe um comentário. Se gostou do artigo, compartilhe com seu time! 😊🔥
Top comments (0)