guardians-dsc / lccbot Goto Github PK
View Code? Open in Web Editor NEWBot do discord para acompanhamento do status do LCC.
License: MIT License
Bot do discord para acompanhamento do status do LCC.
License: MIT License
Descreva a feature em detalhes
Deve ser implementado na API a funcionalidade de obtenção de horários no dia atual. Para simplificar: será necessário apenas a criação de um endpoint GET /schedule
que deverá retornar um json simulando os horários de aulas no dia por LCC.
Importante: Será ótimo se na finalização dessa issue tivermos uma estrutura de código que facilite modificações posteriores. Recomendo fortemente estudar um pouco sobre princípios de design de código.
Necessidade da feature:
Essa feature é a principal do primeiro ciclo do desenvolvimento.
Como ela pode ser implementada:
Um boa forma de desenvolver essa funcionalidade pode ser tentando replicar as estruturas de projetos de APIs RESTful (com algumas ressalvas, pois no nosso caso não é necessário persistir dados em banco, por exemplo).
Existem diversos tutorias de codificação de APIs REST em python com flask, encontrei uma que parece ser boa:
Obs: Acredito que seguir um tutorial bem explicado para construção de uma API REST pode ser bastante útil para aprender a desenvolver essa nossa funcionalidade específica.
O retorno json esperado do endpoint /schedule pode seguir o exemplo:
{
"LCC1": [],
"LCC2": [{
"course": "Lab. de Programação 2",
"startTime": "10:00",
"endTime": "12:00"
},
{
"course": "LEDA",
"startTime": "14:00",
"endTime": "16:00"
}
],
"LCC3": []
}
Descreva a feature em detalhes
Trocar, no código do bot, qualquer referência à URL da API
(dica: procure por requests.get(
, geralmente esse cara sempre vai chamar a API)
para a nova URL da API.
Necessidade da feature:
Essa feature é necessária para que o bot consuma da API oficial.
Deve ser criado uma aplicação do tipo Bot na página de desenvolvedores do discord
e gerado o token.
Necessidade da feature:
É o passo inicial para construção do bot do discord. Sem a criação da aplicação na página do discord, não é possível acesso à API do discord.
Como ela pode ser implementada:
O discord.py tem uma documentação instruindo a criação do bot no discord.
Contexto adicional:
Observação importante: Não compartilhe o token do bot no repositório. Caso precise utilizá-lo no futuro, decidiremos técnicas apropriadas de esconder o token. Qualquer pessoa que tenha o token pode controlar o bot. O armazenamento seguro é de extrema importância.
Essa issue é relativa ao deploy da nossa API no heroku
Ela está finalizada quando a aplicação da API estiver rodando no servidor.
Por favor comentar nesta issue a URL para acesso API.
Artigo Legal que faz deploy Flask no Heroku
Documentação base do Heroku para Python
Criação de um bot simples que responde qualquer mensagem.
Necessidade da feature:
Essa issue é útil para termos um código inicial no repositório. Ela deve ser a primeira issue a ter como efeito colateral geração de código no repositório.
Como ela pode ser implementada:
Creio que seguir o quickstart na documentação do discord.py é suficiente.
Apenas relembrando: Uma nova branch para essas alterações deve ser criada a partir da branch develop deste repositório.
Ao finalizar o desenvolvimento desta issue, abrir um pull request enviando as alterações para a branch develop para que o código possa ser revisado e aprovado.
Observação Importante: Não compartilhe o token ou deixe explícito em qualquer código ou arquivo que seja enviado ao github. O armazenamento seguro do token é essencial: Nessa issue não se preocupe em subir o código com o token: qualquer placeholder inválido ou string vazia no local do token será aceito, ou seja, tudo bem enviar para o repositório um código que contenha:
client.run('')
Podemos nos preocupar com como referenciar o token em outra issue.
Contexto adicional:
Links que podem ajudar:
Discord.py Quickstart
Git Guide
Qualquer dúvida comente na issue e marque @Thulio-Carvalho ou entre em contato pelo discord!
Descreva a feature em detalhes
Necessidade da feature:
Como ela pode ser implementada:
Contexto adicional:
Deve-se criar um servidor para utilizarmos em testes no discord.
Nenhuma referência ao discord de testes deve entrar no repositório, esta issue é apenas para a criação do servidor.
Necessidade da feature:
Um servidor de testes é necessário pois será onde executaremos o BOT até que esteja em uma versão estável.
Como ela pode ser implementada:
Há uma artigo referência que ensina a criar um servidor novo.
Essa feature tem como objetivo a criação de um endpoint /ping básico
Necessidade da feature:
A feature é necessária pois marcará o início da nossa API desacoplada do bot, definida no diagrama da arquitetura base
Como ela pode ser implementada:
Recomendo a utilização do módulo flask.
É necessário implementar apenas um endpoint que responde o método GET /ping
e retorna de informação útil apenas o status HTTP.
Essa API deverá ser desacoplada do BOT.
Contexto adicional:
Links úteis:
Flask Quickstart
Rest API
Qualquer dúvida entrar em contato com @Thulio-Carvalho ou comentar na issue!
Essa issue é relativa a criação dos arquivos base para serem utilizados no Heroku.
Imagino que seja necessário apenas o Procfile e o requirements.txt
Abaixo tem um artigo legal mostrando como isso pode ser feito
Necessidade da feature:
Esses arquivos são necessários para a configuração do deploy
Artigo Legal que faz deploy Flask no Heroku
Documentação base do Heroku para Python
Descreva a feature em detalhes
Basta criar um app no Heroku
Criar com o nome guardians-bot-api
Links Úteis
Mudar no final do projeto a função que foi marcada no Bot como " Administrador "
Descreva a feature em detalhes
Essa issue depende do desenvolvimento de #21.
Os dados reais de horários nos LCCs estão disponíveis nos seguintes links:
Na API, ao receber uma requisição GET em /schedule
deve-se extrair os dados de horários de cada LCC no dia atual
e retornado um json seguindo o exemplo:
{
"LCC1": [],
"LCC2": [{
"course": "Lab. de Programação 2",
"startTime": "10:00",
"endTime": "12:00"
},
{
"course": "LEDA",
"startTime": "14:00",
"endTime": "16:00"
}
],
"LCC3": []
}
Necessidade da feature:
A issue permitirá que o /schedule
funcione como esperado, e não apenas com dados mockados.
Como ela pode ser implementada:
Recomendo a utilização da biblioteca em python BeautifulSoup
Contexto adicional:
Descreva a feature em detalhes
O projeto atualmente está utilizando python3 e algumas dependências como o Flask.
Facilitaria bastante o deploy e o trabalho de mais de um dev caso seja utilizado docker para subir a aplicação.
Necessidade da feature:
Conforme mais pessoas contribuem para o projeto e mais dependências são adicionadas, vários conflitos de versão / dependência inexistente localmente podem acontecer. Acredito que configurar a utilização de docker para subir a aplicação pode evitar muitos problemas.
Contexto adicional:
Descreva a feature em detalhes
Necessidade da feature:
Como ela pode ser implementada:
Contexto adicional:
Descreva a feature em detalhes
A funcionalidade de schedule e ping já foram criadas na API, mas ainda não foram mapeadas no bot. Ou seja, ainda não há como acessar as funcionalidades pelo discord, apenas fazendo uma requisição diretamente nos endpoints.
Necessidade da feature:
A feature é necessária pois finalmente expõe as funcionalidades de ping e schedule para os usuários.
Como ela pode ser implementada:
Recomendo utilizar o módulo requests
para fazer requisições GET nos endpoints, e utilizar Embeds
para ter uma saída mais bonita.
Descreva o bug
No README.md, na última linha, faltou substituir um texto 'SeuProjeto'
Comportamento desejado
Aparecer o texto 'LCC Bot'
Descreva a feature em detalhes
É interessante o bot ter um comando help
listando todos os comandos possíveis dele e explicando como utilizar.
Por exemplo, quando um usuário digitar !help
o bot poderia responder:
!ping - Pong!
!horarios <lcc1 | lcc2 | lcc3> - Verifica os horários de aula hoje em todos os LCCs ou em um LCC específico.
!status <lcc1 | lcc2 | lcc3> - Verifica a disponibilidade do serviço SSH nos servidores dos LCCs ou de uma LCC específico.
Não é necessário implementar na API, pois o próprio bot deve conhecer os comandos disponíveis.
Só devemos agregar ao help comandos que já estão codificados e funcionando e não comandos futuros, pois pode levar o usuário a pensar que há acesso a essas funcionalidades.
Necessidade da feature:
Essa funcionalidade é necessária pois qualquer usuário novo do bot pode não conhecer quais os comandos possíveis e como utilizá-los.
Como ela pode ser implementada:
No bot.py, acredito que implementar apenas uma verificação se a mensagem começa com o prefixo + 'help' é suficiente para detectar o comando.
Contexto adicional:
Descreva a feature em detalhes
Essa issue é apenas para organização do repositório nos seguintes diretórios:
├── api/
│ └── app.py
└── bot/
└── bot.py
Outros códigos que não serão utilizados do bot devem ser removidos: (remover o bot.js, bot2.js.
botsimples.py
para bot.py
ou main.py
ou app.py
bot
api
app.py
ou main.py
O projeto deverá seguir as guidelines definidas em https://andromedev.opendevufcg.org/guia/organizacao/projeto/repositorio/
Comentar o nome decidido
Descreva a feature em detalhes
Endpoint GET /status que retorna o status do serviço de SSH dos servidores chopper, r2d2, e kirk (relativos ao LCC1, LCC2 e LCC3).
/status&lcc=1
, /status&lcc=2
, /status&lcc=3
.Necessidade da feature:
Essa feature é útil para qualquer pessoa que deseja obter o status do SSH de um servidor ou de qualquer servidor para, por exemplo, obter algum arquivo que só existe em um LCC.
Como ela pode ser implementada:
/status/
):{
"LCC1": "true",
"LCC2": "false",
"LCC3": "false"
}
onde true
indica que o serviço SSH do servidor está funcionando e false
indica que o serviço SSH do servidor está offline ou com problemas.
Contexto adicional:
O desenvolvimento dessa feature pode ser um pouco parecido com o desenvolvimento da #21. Com a complicação a mais de permitir parâmetros e ser necessário verificar o status do serviço SSH.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.