aaa
he4rt / he4rt-bot-next Goto Github PK
View Code? Open in Web Editor NEW:purple_heart: A He4rt Developers Discord Bot
Home Page: https://discord.gg/he4rt
License: Mozilla Public License 2.0
:purple_heart: A He4rt Developers Discord Bot
Home Page: https://discord.gg/he4rt
License: Mozilla Public License 2.0
Durante a apresentação dos membro(a)s possibilitar que seja possível escolher o pronome de preferência da pessoal.
Notamos que esta bem interessante esse cowork na he4rt e para contribuir com isso iremos fazer uma automação para criar uma sala de "Café da manhã".
Pontos:
Créditos: Daniel Coração
Na primeira versão do He4rtBot nós tinhamos essa mensagem de boas vindas (abaixo) e sim, vamos implementar isso de volta porém com mais detalhes e links para a pessoa se organizar (focado tudo em nosso Github).
🇧🇷 Bem-vindo a He4rt Developers!
▫️ Nós somos uma comunidade de auxilio a desenvolvedores e entusiastas com o intuito de proporcionar um networking entre os participantes desta comunidade;
▫️ É iniciante? Sem problemas, utilize os canais de ajuda e também visualize os tutoriais disponíveis em;
▫️ Nossa intuição é sempre ajudar, você pode tanto contribuir quanto pedir ajuda, não precisa ter vergonha somos todos uma comunidade, nos visamos sempre ajudar o próximo, tanto a conseguir emprego, quanto com duvidas, quanto com a amizade!
❗ Você pode se apresentar utilizando o comando `!apresentar`, com isto toda a comunidade pode ter noção de quem você é, lembre-se que é OPCIONAL se identificar realmente, nesta seção você poderá selecionar também as linguagens que você gostaria de aprender ou trabalhar, além do acesso ao chat de ajuda das mesmas.
----- novo -----
🚖 Caso você sinta que precise de ajuda para entender melhor nossa comunidade, você pode requisitar um tour com um de nossos membros voluntários utilizando o comando `/onboarding solicitar` e um de nossos membros te enviará uma mensagem assim que possível para te recepcionar.
❗ ATENÇÃO: esse comando deverá ser usado apenas para entender sobre o Discord e comunidade com o intuito te integrá-lo com mais facilidade. Se você deseja ajuda em algo técnico, busque ajuda no canal de #bate-papo ou nas salas especificas de cada linguagem.
Porém eu gostaria de propor um sistema de onboarding voluntário, onde membros dirão o horário de disponibilidade deles para recepcionar novos membros, onde ele terá a possibilidade de requisitar um membro mais antigo para apresentar a comunidade e apontar algumas referências pra pessoa não ficar perdida e se sentir acolhida a ponto de já chegar tendo uma referência!
/onboarding voluntariar
/onboarding solicitar
/onboarding finalizar
Usuario pode enviar qualquer link como github ou linkedin, esse link está sendo passado para o backend, portando quando clicko no perfil de alguem ele pode me redirecionar para qualquer lugar.
O Sistema de Reputação teria como propósito geral incentivar as pessoas a ajudarem dentro do servidor e serem destacadas pela ajuda. Outros sistemas no servidor como o Onboarding e os Feedbacks poderiam funcionar em conjunto com a reputação.
forum-de-ajuda
.Recentemente vimos a necessidade de guardar o avatar do usuário do Discord junto com algumas outras informações e vejo que possivelmente há a necessidade de atualizar isso periodicamente.
Talvez podemos fazer algo visando o front-end junto com cache (Redis) ou eu posso fazer um cron no back-end utilizando a mesma forma.
Onde seria usado a imagem? No perfil de usuário da He4rt.
Mesma issue: he4rt/he4rt-bot-api#14
é realmente necessário setar as envs pelos arquivo de modulos typescript?
nao seria melhor usar as type
no código?
Percebi que muita gente está tendo a problemática na hora de fazer o apresentar que é ao inves de digitar somente um número por vez, estão digitando todos os números e com isso o apresentar não funcionando, talvez como solução prévia seria adicionar uma mensagem avisando as pessoas que é para colocar somente um número por vez.
Conforme o crescimento da He4rt e sua expansão de eventos/projetos, queremos que a qualidade siga o mesmo ritmo, trazendo uma comunidade mais igualitária e unida.
A sugestão seria coletar dados importantes pelo /apresentar
para criação de métricas e infográficos da He4rt, como:
Esses dados seriam exclusivos da Administração e utilizados de maneira anônima, seguindo protocolos LGPD.
Queremos ter noção de onde nossa comunidade é mais presente, para assim levar a He4rt Meetup e outros projetos para esses lugares. Além disso, possibilitaria consultar o tamanho do desfalque de cada minoria, assim seremos capazes de nos dedicar em projetos que incentivem mais a presença de cada grupo minoritário.
Comando /sala permite criar uma sala de cada tipo, mesmo eu só podendo estar presente em uma.
Sala está com comportamento 1 usuário x N tipos de salas criadas, mas não deveria ser 1x1 ? Se o usuário cria uma sala, para criar outra ele tem que finalizar a primeira, não?
O teste que eu fiz foi criar uma sala de cada tipo, estando dentro da primeira sala criada. Os demais tipos de sala foram criadas, contudo não havia participantes. Eu permaneci no primeiro tipo criado: novas amizades.
Sugestão de uso: quando um usuário cria uma sala de um tipo, caso tente criar outra de outro tipo, substitui a primeira com todo mundo que estiver dentro. Já que pode ocorrer de um usuário criar uma sala e, depois de conversar, entender que o tipo deveria ser outro. Cria-se a nova sala com o novo tipo, joga todo mundo da antiga nela e fecha a antiga. Assim evita flood de criação de salas.
Atualmente, quando uma sala temporária é criada, e chega no seu limite, para novas pessoas entrarem, é necessária a criação de uma nova sala com o tamanho correto.
Exêmplo atual:
É criada uma Sala de trabalho 2/2, mas um outro colega pede para entrar. Uma nova sala com limite de 3 pessoas precisa ser criada.
Exêmplo solução:
No chat da sala temporária: /tamanho-sala 3
Com um sistema similar a de apostas, possibilitaria aos usuários do servidor interagirem entre si sobre assuntos que ocorram dentro do servidor, utilizando a moeda ganha usando o comando /bonus
(HCoins).
Notei na última reunião que as pessoas estavam com um pouco de problema pra acessar o comando /reuniao e isso acaba gerando um pouco de tumulto, logo a experiência de usuário foi pro caralho nessa ai.
Tenho a ideia de processar isso no backend mesmo, quando for receber uma mensagem validar se a mensagem enviada está na sala de reuniões. Terão outras validações posteriormente até o fim da pré-season porém por agora é algo que podemos tentar.
Acho que faz mais sentido e vou fazer uma PoC pra isso.
Recentemente foi implementado na API uma funcionalidade para colher o Estado (UF)
do usuário. Porém precisamos abstrair um pouco mais essa ideia antes de evangelizar isso pros nossos membros.
Duas coisas que eu vejo suma importância pra termos esses dados é:
Pretendemos levar eventos para todos os estados, mas inicialmente precisamos ver onde é mais viável.
A ideia aqui é entender como nós podemos aproveitar esses dados e beneficiar nossa comunidade. O que vocês acham?
A ideia disto seria fomentar a utilização do comando /sala
para outros estilos de canais de voz, sendo uma alternativa direta para os canais de voz já existentes no servidor.
Abrindo essa issue para futura análise da staff, fazer com que o comando /sala tenha uma opção de joguinhos para podermos gerar uma nova sala pro pessoal que queira jogar com outros amigos.
Quero levantar uma discussão a respeito de uma ideia.
Hoje temos o sistema de criação de salas temporárias, seria interessante a opção de o que estamos estudando.
Ex: Estudando: Rust
Podemos deixar um select com uma lista de linguagens, na ausência (nao selecao) podemos deixar como já é hoje.
Um problema do discord é que nomes grandes ficam com "..." porém quando abrimos o chat ou entramos no canal temos acesso ao título completo.
Ganhos com isso:
O Sistema de Temporadas tem o propósito de trazer anualmente uma sensação de renovação ao servidor. Como nós sabemos, temos um sistema de leveling implementado no bot desde o primeiro dia porém as pessoas estão upando já desde o inicio da comunidade.
A ideia é salvar a posição da pessoa na temporada passada e mostrar isso no seu perfil.
Modelo do perfil do usuário pra temporada de 2023
A temporada atual durou 4 anos e irá finalizar dia 31 de dezembro de 2022. A partir de 01/01/2023, todos os usuários voltarão pro nível 1 com 0 de experiência e poderão reconquistar o topo do ranking, que hoje, pertence aos membros que ficaram esses 4 anos dentro da nossa comunidade.
Os dados referentes a quantidade de mensagens enviadas, eventos, reuniões, aulões e tudo que for rastreável ficarão disponível pra consulta do usuário sendo do dia 0 que ele entrou na comunidade até o 31 de dezembro.
Notei que alguns servers usam o bot para promover eventos para os membros, engajando os membros e dando alguma recompensa, achei uma ideia interessante de implementar no he4rt-bot.
O que eu pensei foi em implementar na api do he4rt-bot endpoints para termos um controle desses eventos e deixar dinâmico para criar novos eventualmente
Eu cheguei a fazer um mock de como seria o evento mais tem muito a melhorar ainda
Usei o /apresentar
pra testar como está, mas não terminei o formulário e agora ele está flooodando meu privado. Vídeo
Contexto: Muitas vezes os usuários do bot em sua criação de sala dinâmica necessita que seja mais descritivo.
Cenário 1: Sou X, gostaria de criar uma sala estudando com o título "Laravel/PHP", para indicar que aquela sala de estudo é focada em laravel e php.
Cenário 2: Sou X, e estou com muita dúvida de Design/Figma, queria ter a possibilidade de criar a sala SOS (Me ajudaaaa!) com o título design/figma.
Dentre outros cenários que podem ser imaginados. Contudo, faz-se necessário também uma verificação desses title no que tange os seguintes itens:
Desse modo, fica como sugestão.
Trocar o comando /chat
para uma forma mais intuitiva. Por exemplo:
/chat on
-> Chat ONLINE -> Chat habilitado para mensagens
/chat off
-> Chat OFFLINE -> Chat desabilitado para mensagens
Seria mais intuitivo e evitaria minha burrice 🙏
Entendo permitir a adição de um limite às salas personalizadas, mas para mim, obrigar essa limitação não faz o menor sentido.
Não vejo um motivo para limitar a criação de salas para apenas 2, 5 e 10 pessoas. Em uma situação hipotética onde estou trabalhando com mais 3 pessoas, precisaria criar uma sala com 5 slots, onde 2 pessoas aleatórias poderiam entrar, e acabar tirando o foco do trabalho.
O objetivo dessa issue é remover esses limites intermediários e definir um único limite máximo de slots (ainda a ser decidido).
Uma das coisas que eu vi num servidor chamado English foi a possibilidade salas de 2 ou 3 pessoas para quem quer conhecer novas pessoas e praticar inglês e queria entender a possibilidade de abstrair isso pra He4rt Developers.
Tipos de sala: conhecer-pessoas, trabalho, estudo.
/sala {tipoSala} {qtdPessoas}
Muitos membros acabam tendo atitudes em chamadas de voz e bate-papo um pouco desconfortável a ponto de não precisar de uma punição logo de primeira, havendo a necessidade de que a Equipe de Administração/Moderação possam ficar de olho nesses pessoas específicas, para que estejam de prontidão caso ocorra algo.
Mas como identificar quem faz parte desse grupo de pessoas?
Após observar meu colega de equipe utilizando uma palavra chave no canal de #punishments-and-mods para sinalizar essas pessoas, pensei na seguinte solução:
/watch [ID] [motivo]
: para adicionar o usuário na lista de observação./watchlist
: para acessar a lista de usuários que estão sendo observados.Vale lembrar que é um comando que apenas a Equipe de Moderação e Administração possuem acesso.
Dessa maneira, moderadores ativos e não ativos poderão ficar ciente sobre esses membros, sem que a mensagem no chat passe batido e se perca.
Após experiência própria e alguns relatos de outros membros, quando acionado o comando o /apresentar
por engano, o bot spamma as perguntas na DM sem parar, apenas para se refazemos todo o processo de perguntas, o que pode ser desconfortável principalmente para aqueles que não possuem afinidade com o Discord e Bots e que não sabem sobre essa solução.
A solução para isso seria um botão explícito em todo o processo para cancelar a apresentação.
É preciso uma forma de parar a apresentação para o bot não ficar em loop floodando na DM
Devido a escala que o projeto se tornou, será necessário estar reavendo a organização e chamada de comandos para facilitar possíveis manutenções futuras.
Line 417 in c28c9a6
return `${(date.getHours() < 10 ? '0' : '') + date.getHours()}:${(date.getMinutes() < 10 ? '0' : '') + date.getMinutes()}`
Boa noite grupo, gostaria de compartilhar minha sugestão para a reorganização dos comandos mostrando como eu faço atualmente quando o bot está "escalando" por assim dizer.
Primeiramente eu criei duas pastas:
A pasta de comandos e a pasta de comandos de botões (pq eu não gosto de fazer meu usuario apertar o slash) e os comandos de botões, select menu etc, podem ser invocados utilizando o evento interactionCreate a partir de seu custom id o que remove a necessidade destes comandos estarem na pastas de comandos normais, por serem comandos de canais fixos.
Atualmente eu resolvi separar os comandos por Categorias, para não ter que procurar na lista caso escale demais (e a poluição visual doia minha cabeça)
Dentro dessas pastas eu separei meus comandos em novas pastas que eu chamo de categorias, para facilitar a maneira de encontrar os comandos, comandos de adm ficam em moderation, de musica em music e por assim vai, eu tirei essa ideia de um projeto de react que eu fiz...
Nota: esses 3 comandos também são reconhecidos pois o leitor de comandos é recursivo e procura por arquivos terminados em .js
Irei acessar a pasta music da print anterior como exemplo.... ./src/commands/music
E finalmente chego a onde eu coloco meus comandos,E agora novamente temos uma pasta com o nome do comando, Agora é a hora que vc apaga minha issue e diz, porque você tem mais pastas???
E eu respondo! porque alguns comandos eu utilizo muito como eu chamo de "front-end" dos bots, que são a estilização de embeds, botões, modals, etc... que ocupa muito espaço visual no codigo quando sendo que você só vai utilizar na hora de enviar a mensagem então este é o motivo da pasta (tenho tique e gosto de manter meus comandos com menos de 200 linhas).
Então eu jogo os arquivos para uma pasta chamada _embeds ou _buttons que seja simples e facil de entender. e exporto como funções para chamar apenas na hora de enviar a mensagem, isso também se torna util em casos de repetições de embeds, ou reutilização das mesmas ja que torno elas funções.
A criação de um comando fica da seguinte maneira: Vamos criar um comando de banir!
1 - O comando vai ser em slash, então vou na pasta commands padrão
mkdir ./src/commands
2 - É um comando só para ADM, então crio uma pasta chamada Administrator
mkdir ./src/commands/Administrator
3 - Já que pretendo estilizar com um botão de confirmação crio uma pasta com o nome do comando
mkdir ./src/commands/Adminstrator/ban
4 - Crio um arquivo da linguagem que estou utilizando (vou utilizar js) com o nome do comando
touch ./src/commands/Administrator/ban/ban.js
e por fim o arquivo de estilo com "_" no inicio para ser ignorado pelo leitor
touch ./src/commands/Administrator/ban/_buttons.js
E a partir daí é só desenvolver, o leitor recursivo que citei se encontra aqui https://github.com/JVRL18/bot-boilerplate/blob/main/src/index.js#L30 -- e acaba na linha 62
O leitor recursivo procura na pasta commands ou na pasta que você definir
1- irá procurar por arquivos terminados em ".js" desde que eles não tenham "_" no inicio, ou se chamem "aliases", (isto é porque este repo que mandei é um projeto para bot que responda igualmente slash commands e prefix commands)
2- achado o arquivo cria um objeto na collection do discord com o nome que defini em data.name do comando, e em seguida o corpo do comando que está sendo exportado
3- depois disso é só registrar os comandos que foram encotrados previamente, dentro do evento ready do bot como slash commands na sua aplicação do discord, e fim.
Meu nome é joão, não sou muito experiente em código, comecei recentemente e programo utilizando discordjs a pouco mais de 6 meses e com esse pouco tempo que tenho cheguei nessa estrutura que compartilhei.
Peço desculpas se isso não servir de ajuda devido a linguagem, mas peguei esta ideia umas semanas atrás em um projeto CRUD com typescript que eu fiz utilizando react onde no guia estruturava da seguinte forma então decidi fazer de maneira semelhante todos meus projetos de bots, isso tem me ajudado a ser produtivo pra caramba já que eu faço alguns freelas no discord.
Qualquer coisa que ficou mal explicada ou faltando, pode me chamar no discord também, eu nunca fiz uma issue mas eu amo bots entao decidi fazer essa,
url direta: https://discord.com/users/429771320964939787
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.