No âmbito do projeto Um bot foi criado para o GitHub, resolvendo problemas relacionados ao autoatendimento forçado dos usuários do repositório. No GitHub, é possível encontrar repositórios cuja única função é coordenar pessoas através do sistema de Issues. Em alguns deles, os autores de Issues são convidados a preencher um formulário. Em seguida, um moderador verifica a correção do preenchimento do formulário e atribui tags de acordo com as indicadas no formulário (as tags só podem ser atribuídas por um usuário privilegiado, se não estiverem definidas no modelo). Um exemplo de tal comunidade é .
O moderador não chega imediatamente. Portanto, para verificar os formulários e executar operações é apresentada a ação do GitHub na notícia. O bot é escrito em Python, mas deve ser executado através do node.js, uma vez que o GitHub só possui 2 tipos de ações — node.js e docker, e para docker, primeiro o mesmo contêiner, onde também está o node.js, é carregado, e dentro dele, outro contêiner é carregado, o que é demorado. Considerando que no contêiner com node.js já existem python3 e tudo o que é necessário, é mais racional apenas carregar as dependências, já que elas são pequenas.
Características:
- A ação é controlada através de um arquivo de configuração YAML e modelos Markdown;
- Em cada modelo Markdown, um bloco é adicionado, descrevendo as condições para um preenchimento correto do formulário e as ações desejadas;
- Um arquivo de configuração com definições globais é adicionado;
- Os formulários consistem em seções. Existem 2 tipos de seções:
- Texto livre. A ação pode verificar se o usuário se esforçou para preencher algo ali. O sentido do texto não é verificado automaticamente.
- Caixas de seleção (checkbox). Pode-se exigir o preenchimento de n caixas de seleção, tal que 0 {= m1 {= n {= m2 {= número total de caixas de seleção na seção. A ação verifica se as caixas de seleção correspondem às caixas de seleção no modelo. Se as caixas de seleção estiverem corretas, a ação pode atribuir tags à issue, correspondendo às caixas de seleção.
- Se o formulário estiver preenchido incorretamente, a ação instrui o usuário sobre como preenchê-lo corretamente e atribui uma etiqueta especial.
- Se o formulário não for corrigido dentro de um determinado período, a ação pode fechar a issue. O banimento automático de usuários, exclusão e movimentação de issues ainda não foi implementado devido à falta de uma API oficial para as ações necessárias e problemas com o armazenamento de estado.
- Se o problema for resolvido, a ação remove a etiqueta.
- Os templates de resposta para ações, naturalmente, são personalizáveis.
Fonte: opennet.ru
