📌 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)