Curso
Todo trabalho tem suas tarefas chatas e repetitivas. Seja você um agente de suporte que precisa relatar temas comuns em solicitações de ajuda, um gestor de time acompanhando métricas de desempenho ou um engenheiro de software verificando processos de negócio para ver se está tudo em ordem, você precisa fazer isso de novo e de novo — todo mês, toda semana, todo dia e, às vezes, toda hora!
Em muitos casos, dá para automatizar pelo menos parte desse trabalho repetitivo. Python é um ótimo motor para isso: é uma linguagem de programação de uso geral que lida super bem com (grandes volumes de) dados e, ao mesmo tempo, é fácil para escrever rotinas de automação. Fazendo relatórios de métricas? Sem automação, talvez você precise consultar 4 dashboards diferentes para pegar todos os números e compilar tudo em uma mensagem para a sua chefia. Com automação, um script em Python puxa os dados, seleciona os números de destaque, compila e envia a mensagem — tudo sem você ter que intervir. Além de prático, reduz erros e esquecimentos!
Neste tutorial, vamos ver o caso específico de rodar código Python para relatar o status de uma carteira de investimentos e enviar um resumo dessa carteira para o Slack, uma plataforma de comunicação em equipe muito usada. Vamos cobrir todas as etapas: configurar um app do Slack, criar um programa em Python que usa esse app para enviar mensagens e agendar a execução para que seu script rode com frequência definida. O exemplo aqui é sobre acompanhar uma carteira de investimentos, mas você pode, claro, substituir essa “lógica de negócio” por qualquer outra coisa; toda a configuração e o código para enviar a mensagem ao Slack permanecem exatamente os mesmos.
Vamos usar o DataLab neste tutorial, pois ele tem recursos nativos para armazenar segredos com segurança como variáveis de ambiente (vamos usar isso para guardar as credenciais do app do Slack) e para agendar a execução do seu código Python com poucos cliques. Para acompanhar, tudo o que você precisa é de uma conta no Slack (para postar mensagens) e uma conta na DataCamp (para usar o DataLab) — ambas podem ser criadas gratuitamente!
Vamos lá!
1. Configure um app do Slack
Você pode pensar em um app do Slack como uma extensão ou complemento do Slack para um propósito específico. Existem apps para integrar Google Docs, Jira, Dropbox, Zoom e muitos outros, permitindo que você receba notificações no Slack sobre o que acontece nessas ferramentas e também execute ações nelas direto do Slack. Para o nosso projetinho, também vamos criar um app do Slack para usar o usuário bot que acompanha todo app e, assim, enviar mensagens ao Slack.
Para começar, garanta que você tem uma conta no Slack, faz parte de um workspace no qual você tem acesso de admin e está logado nessa conta. Se não, acesse slack.com e crie uma nova conta e um novo workspace.
Em seguida, acesse https://api.slack.com/app, o seu painel de apps do Slack. Ele vai parecer algo assim:

Clique em “Create an App”.

Selecione “From scratch”. Na próxima tela, defina um nome para o app, por exemplo, “Python Messenger”, e selecione o workspace em que você quer desenvolvê-lo (no seu caso, esse workspace será outro).

Clique em Create app. Você será levado à página inicial do app recém-criado, onde pode configurar todas as definições — desde informações básicas e quem pode fazer mudanças até todos os recursos. Não se assuste! Vamos mexer só no essencial.
Vá até a aba “OAuth & Permissions”, desça até o card Scopes e, em Bot Token Scopes, clique em “Add an OAuth Scope” para adicionar os escopos ‘chat:write’, ‘chat:write.customize’, ‘files:read’, ‘files:write’ (você precisará clicar em “Add an OAuth Scope” quatro vezes ao todo).

Esses escopos definem o que o usuário bot do seu app pode fazer dentro do workspace. Seguindo o princípio do menor privilégio, em vez de dar acesso total e todas as permissões possíveis, estamos restringindo o app a escrever mensagens (personalizadas) e enviar/baixar arquivos (útil se você quiser incluir anexos nas mensagens).
Agora, suba até a seção “OAuth Tokens for Your Workspace” e clique em “Install to Workspace”:

Na próxima tela, que resume os escopos definidos, clique em Allow.

Você verá que um “Bot User OAuth Token” foi criado para você:

Você vai precisar desse Bot User OAuth Token mais adiante, então não feche a janela do navegador.
Abra o Slack e repare que um novo app “Python Messenger” (ou o nome que você escolheu) apareceu na sua barra lateral:

O último passo é configurar o canal do Slack para o qual você vai enviar as mensagens automáticas. Crie um canal chamado #bot-updates. No canal, digite /app e selecione “Add apps to this channel”:

Ao lado de “Python messenger”, clique em “Add”. Você verá que o app “Python Messenger” entrou no canal.
Pronto! Seu canal do Slack está preparado para receber mensagens via o app “Python Messenger”, usando o Bot User OAuth Token gerado. Note que, apesar de ter alguns passos, essa configuração é feita uma única vez por workspace. Se você quiser que vários programas em Python enviem mensagens para o mesmo workspace, não precisa repetir o processo.
2. Escreva a lógica de negócio em Python
Ótimo trabalho até aqui! Com o app do Slack configurado, chega a parte divertida: escrever Python. Vamos começar criando o código da nossa “lógica de negócio” para resolver a tarefa proposta.
Se você precisa relembrar como escrever código em Python, nosso curso Introduction to Python é o ponto de partida ideal.
Você pode criar um workbook vazio do zero, ótimo se você já sabe qual programa Python quer automatizar e integrar ao Slack.
Se você está aqui para entender os conceitos, pode começar com um workbook de exemplo que criamos e que acompanha o valor de uma carteira imaginária de ações de tecnologia. Todo dia (exceto fins de semana) haverá novos dados, então é um ótimo candidato para relatórios diários.
Execute e edite o código deste tutorial online
Executar códigoEm ambos os casos, você deve terminar com um workbook no DataLab com toda a sua lógica de negócio implementada:

3. Enviando a mensagem no Slack
App do Slack: ok. Lógica de negócio: ok. Para integrar o notebook em Python ao Slack, precisamos de duas coisas: armazenar o token OAuth do Slack no workbook e escrever um pouco de código Python para enviar uma mensagem no Slack.
Armazene o token OAuth do Slack
Nosso notebook precisa do token OAuth para comprovar que está autorizado a enviar mensagens para o seu workspace do Slack. Você poderia simplesmente copiar e colar esse token em uma célula de código do notebook. Porém, isso não é seguro e não é recomendado. Se você compartilhar o notebook com alguém, essa pessoa verá o token.
Esse caminho também exigiria repetir o copiar-e-colar em todo workbook em que você quiser enviar mensagens ao Slack. Se precisar atualizar o token, será necessário editar cada workbook.
Uma abordagem mais segura e escalável é armazenar o token OAuth do Slack em uma variável de ambiente. Ao conectar essa variável, ela ficará disponível na sua sessão Python. No seu workbook:
- Clique na aba “Environment” no lado esquerdo
- Clique no ícone de “+” ao lado de “Environment Variables”
- No modal “Add Environment Variables”:
- Defina “Name” como
SLACK_TOKEN - No campo “Value”, cole o token OAuth obtido no passo 1 deste guia.
- Defina “Environment Variables Set Name” como “Slack” (pode ser qualquer nome)

Depois de preencher tudo, clique em “Create”, “Next” e, por fim, “Connect”. Sua sessão do DataLab será reiniciada e SLACK_TOKEN ficará disponível como variável de ambiente no seu workbook. Você pode verificar criando uma célula Python com o código abaixo e executando:
import os
slack_token = os.environ["SLACK_TOKEN"]
print(slack_token)
Se quiser reutilizar as mesmas credenciais de conta de serviço em outro workbook, não precisa configurar a variável de ambiente de novo: é só reutilizá-la nos outros workbooks.
Código Python para enviar a mensagem no Slack
Com o SLACK_TOKEN em mãos, inclua um pequeno trecho no final do seu notebook para enviar uma mensagem de teste para o canal #bot-updates no seu workspace do Slack:
import os
from slack_sdk import WebClient
message = "This is my first Slack message from Python!"
# Set up a WebClient with the Slack OAuth token
client = WebClient(token=os.environ["SLACK_TOKEN"])
# Send a message
client.chat_postMessage(
channel="bot-updates",
text=message,
username="Bot User"
)
Esse código usa o SDK oficial de Python do Slack. Rode esse código! Você deve ver a mensagem aparecer no seu workspace do Slack:

Essa foi uma mensagem simples, mas você também pode criar uma mensagem baseada no resultado da sua lógica de negócio, como fizemos no workbook de exemplo:
message = f"Total value of my portfolio on {portfolio_df.index[-1]:%B %d, %Y} is ${latest_total:,.2f}."
Com o seguinte resultado:

Por fim, você também pode usar a variável de ambiente DL_WORKBOOK_ID para incluir um link para o seu workbook, caso queira facilitar o acesso direto do Slack ao DataLab que gerou a mensagem:
message = f"""
Total value of my portfolio on {portfolio_df.index[-1]:%B %d, %Y} is ${latest_total:,.2f}.
For the full analysis, check <https://www.datacamp.com/workbook/w/{os.environ.get('DL_WORKBOOK_ID', 'invalid')}/edit|this workbook> (updates daily)
"""
Com o seguinte resultado:

4. Automatize!
Você escreveu um script em Python que faz uma análise relevante e envia um resumo para o Slack, com link para o notebook completo caso o pessoal queira se aprofundar. Demais! Mas não seria ótimo configurar esse notebook para rodar toda semana ou todo dia e manter todos atualizados automaticamente? Boa notícia: dá para fazer isso! O DataLab oferece execuções agendadas exatamente para esse fim.
- No menu superior, clique em Run > Schedule Run
- Configure o agendamento como preferir:
- Programe o notebook para rodar diariamente ou semanalmente, com opção de ajustar horário e dia da semana (no caso de semanal)
- Adicione usuários da DataCamp para serem notificados sempre que o notebook terminar com sucesso, apresentar erro ou ambos. É uma boa ideia receber alerta quando falhar, para investigar se necessário.

Configurado como no print acima, o notebook vai rodar todo dia às 9h30 no horário local — e uma mensagem será postada no canal #bot-updates do Slack todas as manhãs.
Automatizar ou não automatizar
Nem toda tarefa vale a pena ser automatizada. Depende da frequência, do tempo que leva manualmente e do esforço para construir um script em Python que faça isso por você. Um exemplo ajuda: digamos que você precise compilar um relatório anual que leva 20 minutos para fazer manualmente. Se levar meio dia para escrever um script que faça isso, vai demorar muitos anos até você “recuperar” o tempo investido na automação!
Essa ideia é bem resumida nesta tabela:

Vale a pena gastar tempo automatizando? Fonte
Então, se uma tarefa diária levava 5 minutos, você pode gastar até 6 dias tentando automatizá-la. Se investir menos do que isso, você sai no lucro (contando um horizonte de 5 anos).
Conclusão
A configuração inicial para enviar mensagens do DataLab para o Slack pode levar um tempinho. Mas, depois que tudo estiver certinho e o token do Slack estiver armazenado no DataLab, enviar uma mensagem é questão de acrescentar duas linhas de Python — simples assim! E o melhor: você pode automatizar praticamente qualquer script em Python e avisar seus stakeholders onde eles estão: no Slack.
Acabou a era de criar lembretes para repetir as mesmas tarefas entediantes. Bem-vindo(a) à era de fluxos de trabalho poderosos e automatizados, sem ter que ficar pulando entre ferramentas. Tudo o que você precisa é de amor DataLab.
Leve suas habilidades em Python para o próximo nível com o curso Intermediate Python da DataCamp. Aprofunde seus conhecimentos em visualização de dados e recursos avançados de Python. Continue sua jornada agora!
Filip é o desenvolvedor apaixonado por trás de vários dos cursos de Python, SQL e R mais populares da DataCamp. Atualmente, Filip lidera o desenvolvimento do DataCamp Workspace. Sob o lema "Coma sua própria comida de cachorro", ele usa as técnicas que a DataCamp ensina a seus alunos para entender como os alunos aprendem e interagem com a DataCamp. Filip é formado em Engenharia Elétrica e Inteligência Artificial.


