Mustang – um Slackbot em Elixir

Samar Acharya Blocked Unblock Seguir Seguindo 20 de dezembro de 2016

Escrever bot é sempre divertido. E agora que o Slack é tão popular, faz sentido construir um bot voltado principalmente para o Slack. Nós usamos muito o Slack no trabalho e é o nosso principal meio de comunicação que não podemos viver sem.

A principal motivação para eu escrever o Slackbot foi a necessidade de mudar vários serviços com bastante frequência. Por exemplo, eu precisaria encontrar um endereço para lugares perto de mim ou obter um horário atual em outro fuso horário. Da mesma forma, eu costumava executar whois usando um dos serviços on-line e continuava procurando ajuda de programação no Stack Overflow . Outra motivação foi nos lembrar das longas solicitações de pull aberto que precisam ser revisadas por alguém.

Nós tínhamos usado o Elixir por um tempo e eu queria brincar com o Elixir por escrever bot. Com uma busca rápida, eu encontrei o Hedwig , um framework bot com suporte para vários adaptadores e eu estava feliz que eu poderia apenas descarregar o trabalho duro para o Hedwig e apenas escrever partes fáceis do bot. Eles ainda têm o adaptador Slack, então eu fui capaz de inicializar rapidamente e construir o bot.

Eu nomeei meu bot depois do meu adorável filhote Mustang, que vive no Nepal e esteve comigo durante o terremoto de abril de 2015 .

Mustang

O design do Hedwig em alto nível é óbvio e intuitivo em como você pensaria sobre o design do bot e é altamente inspirado pelo hubot . O principal bloco de construção dos bots são os respondedores e, com o Hedwig, você pode usar o Hedwig.Responder para construir seus respondentes. Tudo o que você faz para responder é usar as macros como hear e respond para definir padrões para ouvir e, em seguida, escrever sua lógica sobre como o bot deve responder por esses padrões. Para mais detalhes sobre como usar o Hedwig e os adaptadores e como construir os respondentes, você pode consultar a documentação oficial . Com a simultaneidade e escalabilidade do Beam, é muito fácil criar um bot com alta simultaneidade e baixo footprint. Eu ainda não explorei nenhum desses recursos, mas essa é a área que eu deveria investigar.

A outra coisa que eu tive problema com o adaptador Hedwig Slack foi para obter o estado atual para que eu pudesse obter lista de canais e, em seguida, mapear nomes de canais legíveis para os identificadores do canal Slack. No entanto, eu era capaz de contornar isso facilmente usando erlang sys módulo como visto aqui . Ao ler a documentação do Hedwig, não encontrei uma maneira fácil de fazer isso, mas, se houver, sinta-se à vontade para sugerir.

Eu ficaria feliz em receber novos respondedores (ou idéias na forma de problemas ) de todos. Além disso, pode ser uma boa maneira de aprender Elixir se você está apenas começando. Abaixo estão os destaques do recurso atual:

Verificações agendadas:

  • Github open pull solicitante de solicitações para notificar PRs longos e abertos
  • Lembrete Standup quando é hora de se reunir para standup
  • Verificação agendada da lista de nomes de usuários / e-mails para o site haveibeenpwned.com
  • Monitoramento de tempo de atividade simples com suporte para verificações de status, conteúdo e tipo de conteúdo e capacidade de especificar método, cabeçalhos, tempo limite, etc.

Respondentes:

  • pesquisa no google maps
  • pesquisa de haveibeenpwned.com
  • citações aleatórias
  • tapa as pessoas em folga
  • hora no fuso horário dado
  • unix para conversão de tempo iso8601
  • codificação / decodificação base64
  • isitup verificar para ver se um site está em baixo ou não
  • insultar para obter insultos aleatórios por pessoa que você menciona
  • httpcat para obter gatos com código de status http
  • howdoi para obter o melhor resultado para sua questão de programação fro stackoverflow
  • commitmsg aleatório engraçado
  • Clifu para obter linha de comando fu
  • obter whois resultado de nomes de domínio

Meus favoritos pessoais são howdoi e insult e eu amo usar insult sempre que posso.

Ficando ExMustang instalado e funcionando é muito fácil. Tudo o que você precisa fazer é criar um slackbot da HERE e copiar o token do slackbot. Então, você pode seguir as instruções de configuração disponíveis AQUI .

Algumas capturas de tela do ExMustang seguem:

Texto original em inglês.