GithubHelp home page GithubHelp logo

he4rt / he4rt-bot-next Goto Github PK

View Code? Open in Web Editor NEW
143.0 8.0 13.0 1.06 MB

:purple_heart: A He4rt Developers Discord Bot

Home Page: https://discord.gg/he4rt

License: Mozilla Public License 2.0

Shell 0.10% TypeScript 99.51% JavaScript 0.39%
bot discord discordjs-v14 typescript

he4rt-bot-next's Introduction

He4rt Discord Bot

Comandos

  • /anunciar (ADM)
  • /falar (ADM)
  • /cargo-criar (ADM)
  • /cargo-deletar (ADM)
  • /versao (ADM)
  • /banir (ADM|MOD)
  • /desbanir (ADM|MOD)
  • /silenciar (ADM|MOD)
  • /observar (ADM|MOD)
  • /observar-lista (ADM|MOD)
  • /observar-remover (ADM|MOD)
  • /chat (ADM|MOD)
  • /limpar (ADM|MOD)
  • /cor (PRIVILEGIADOS)
  • /reputacao (DESATIVADO)
  • /especial
  • /sala
  • /sala-transferir
  • /sala-limite
  • /avaliar
  • /apoiase
  • /bonus
  • /apresentar
  • /perfil
  • /perfil-editar
  • /perguntar
  • /medalha
  • /medalha-adicionar (ADM|MOD)
  • /ranqueamento
  • /distintivo
  • /distintivo-criar (ADM)
  • /codigo
  • /forum
  • /forum-fechar
  • /reuniao-iniciar (ADM)
  • /reuniao-finalizar (ADM)
  • /reuniao-ata (ESCRIVÃO)
  • /onboarding
  • /onboarding-requisitar
  • /onboarding-voluntariar
  • /onboarding-finalizar
  • /onboarding-desistir

Contribuidores

Giovane
Giovane Cardoso
Gustavo/
Gustavo
Fernando
Fernando Andrade
Henri/
Henri
Daniel
Daniel Reis
João
João Victor
Matheus/
Matheus
Ronei
Ronei Kunkel
Anibal
Anibal Sólon
Augusto
Augusto Pieper

A He4rt Developers agradece a todos os contribuidores acima e aos contribuidores da primeira versão!

Guia de Contribuição

Caso deseje contribuir com a ferramenta, siga as seguintes instruções:

Requisitos

ATENÇÃO! Siga os guias do portal do desenvolver e convide o bot para o seu servidor usando o Discord Permissions para facilitar o seu trabalho.

Rodar

  • Clone o repositório
  • Instale as dependências usando pnpm install
  • Copie as chaves secretas usando:
cp .env.example .env

Itens com o prefixo HE4RT_ indicam env do discord-bot-api, FIREBASE_ do firebase, APOIASE_ do apoia.se. Essencialmente, você >não< precisa desses tokens para rodar o bot, apenas para testar comandos que dependem destas chaves. Caso queira usar o firebase, crie o seu json de admin na raiz do projeto com o nome firebase_admin.json.

  • Use o comando pnpm dev

ATENÇÃO! Caso use o comando pnpm dev e dê algum erro, aperte Ctrl + S em um arquivo .ts para ele recompilar a aplicação. As vezes a aplicação não vai responder, exigindo que cancele a operação, aguarde alguns segundos e execute pnpm dev

Estrutura

.
├── client                       # Anexos para o cliente padrão do `discord.js`
├── commands                     # Comandos do BOT
├── defines                      # Definições
├── events                       # Eventos temporizados, sequenciais e do discord.js
├── http                         # Construtores HTTP
| global.d.ts                    # Tipos do NodeJS e derivados
| index.ts                       # Ponto de partida para a inicialização do BOT
| main.ts                        # Criação do cliente do `discord.js`
| types.ts                       # Tipagem
| utils.ts                       # Funções para uso genérico em outros arquivos

Os arquivos de sufixo _development são variações usadas em modo de desenvolvedor (pnpm dev), com o ids_development indicando id's de nosso servidor de teste e com o ids.json indicando id's o nosso servidor do discord. Caso queira entrar no servidor de desenvolvimento, contate um dos administradores no discord.

Caso queira criar um novo comando, copie o de exemplo em src/commands/example.ts e consulte os outros para entender o padrão

he4rt-bot-next's People

Contributors

anibalsolon avatar canhassi12 avatar danielhe4rt avatar fernanduandrade avatar github-actions[bot] avatar jvictorv avatar kjkgustavo avatar kkuriboh avatar lanjoni avatar nothenrin avatar novout avatar p0sseid0n avatar ronei-kunkel avatar samucadev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

he4rt-bot-next's Issues

Novo Comando /sala tipo joguinhos

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.

Reorganização de Comandos

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.

  • Leitura e registro de comandos
  • Agrupamento de comandos de mesma funcionalidade
  • Divisão de estrutura
  • Nomeação de definicoes

Remover limite da criação de salas.

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).

Possibilidades para info "Estado" de Usuário

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 é:

  • Para as pessoas de fora verem de algum jeito de onde nossos membros são (mapa de calor possivelmente) na nossa landing page;
  • Para nós como administração sabermos onde trazer novos eventos baseado em qtd de pessoas aderindo.

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?

Atualizações de avatares via API

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.

Coleta de dados para as métricas da He4rt

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:

  • Cidade;
  • Estado;
  • País;
  • Gênero;
  • Orientação Sexual,
  • Etnia.

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.

  1. Você se sentiria confortável em compartilhar seus dados? De qual maneira podemos abordar?
  2. Qual a forma mais segura e não-invasiva para a coleta dessas métricas?
  3. Você acredita que todas as perguntas devem ser obrigatórias? (ex. apenas Estado, Gênero)
  4. Teria algum outro dado importante para podermos metrificar nosso crescimento?

Sugestão para reorganização dos comandos

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.

Separação de comandos por tipos

Primeiramente eu criei duas pastas:
image
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.

Exemplo de o que chamo de comando fixo

Exemplo de comando fixo para evitar uso desnecessário de slash command no meu bot de música

image

Categorias de comandos

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...
image

Nota: esses 3 comandos também são reconhecidos pois o leitor de comandos é recursivo e procura por arquivos terminados em .js

Criação dos comandos

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.

Exemplos em ./src/commands/music/play

Exemplo de arquivo de embeds ou a estilização do comando

image

Exemplo de pasta do comando play (mesma pasta que contem a estilização acima)

image

Amostra de como fica a estrutura de pastas de quando se começa a escalar (apenas comandos individuais semelhantes)

Estrutura de pastas para funções de música (em slash)

image

Retomando

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.

obrigado por ler

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

Sugestão: Sistema de Reputação

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.

O que seria?

  • Cada usuário teria um campo adicional em sua conta (reputation) que seria um número inteiro, iniciando em 0 e requerido que poderia ser negativo ou positivo e alteraria dependendo das atitudes do membro dentro do servidor.
  • Valores fora da curva (-5 e 10, por exemplo) alertaria a administração para punir/recompensar o membro em questão
  • Este sistema implicaria tags de recompensa (beginner/intermediate/advanced/supreme/he4rt) assim como outros sistemas (experiência / perfil).

Vantagens

  • Poderia incentivar os membros a utilizarem com mais afinco o forum-de-ajuda.
  • Poderia incentivar mais interações entre membros novos e antigos.

Problemáticas

  • Um membro poderia se sentir mal por estar com um reputação ruim (o reputation não necessariamente seria um dado público).
  • Recompensar somente amigos (panela).

Criar automação para criar uma sala "Café da manhã"

Sugestão apresentada em call

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:

  • Qual o melhorar horário?
  • Ela apaga depois de um certo horário?
  • Em seguida criamos uma de cowork?

Créditos: Daniel Coração

Criação de salas temporárias customizáveis

Criação de salas temporárias customizáveis

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.

Captura de tela de 2023-01-16 14-27-40

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 canal será mais objetivo, ex se eu vejo uma pessoa estudando React, vou entrar pois é uma stack que eu gosto. E a pessoa ao abrir um sala Estudando: React, esta convidando, mesmo que indiretamente, pessoas para se juntar a este estudo.

Global.d.ts

é realmente necessário setar as envs pelos arquivo de modulos typescript?
nao seria melhor usar as type no código?

Ajuste na mensagem do apresentar

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.

langs

Comando /watch e /watchlist

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.

Melhorias de fluxo de reuniões

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.

  • Membro digita algo no chat
  • Se o chat for de reunião, valida se tem uma reunião ativa (com cache a cada 5 minutos)
  • Caso tiver, verifica o canal que o membro se encontra digitando
  • Se o canal for o de reuniões, computar a presença do membro.

Acho que faz mais sentido e vou fazer uma PoC pra isso.

Alterar o tamanho da sala temporária após a criação.

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

Sistema de Onboarding

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!

Fluxo

  • Comando de Solicitação:
    • Comando: /onboarding voluntariar
    • Descrição: envia uma mensagem pro membro que gostaria de receber outros membros na comunidade explicando o sistema todo e seus beneficios, assim, ele poderia confirmar baseado em um horário (manhã/tarde/noite) para ficar recebendo membros.
  • Comando de Solicitação:
    • Comando: /onboarding solicitar
    • Descrição: envia uma mensagem para pessoas envolvidas em onboarding dentro da nossa comunidade sinalizando um novo membro.
  • Comando de Solicitação:
    • Comando: /onboarding finalizar
    • Descrição: sinaliza a administração que o onboarding da pessoa foi finalizado e cria um registro que o membro voluntário concluiu o onboarding de um novo membro (podendo ser algo público ou não).

Sistema de Salas Temporárias

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.

image

Fluxo

Tipos de sala: conhecer-pessoas, trabalho, estudo.

  • Dado: Usuário timido/novato quer um espaço para conversar/transmitir tela ou conhecer pessoas
  • Quando: Executar o comando /sala {tipoSala} {qtdPessoas}
  • Então: criar sala e direcioná-lo para a mesma e mandar mensagem no chat principal caso seja sala para conhecer novas pessoas.

Sugestão: Sistema de Apostas usando He4rt-Coins

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).

Questões

  • Seria problemático ter um sistema de apostas no servidor mesmo sem envolver dinheiro real?
  • Poderia ter apostas sobre assuntos que discorram fora do servidor?
  • A administração poderia desfazer uma aposta existente desde que seja de cunho ofensivo/malicioso?
  • Seria um comando, canal ou evento?

Opções adicionais para o comando /sala

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.

  • Estudando ?
  • Joguinhos?
  • Conversando ?

Comando /sala permite criar uma sala de cada tipo, mesmo eu só podendo estar presente em uma.

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.

Sugestão: retorno da opção "OPTIONAL" do nome da sala dinâmica

Contexto: Muitas vezes os usuários do bot em sua criação de sala dinâmica necessita que seja mais descritivo.

Exemplos:

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:

  • Verificação de Bad-Words (Palavrões e palavras indesejadas).
  • Links indesejados ou maliciosos.

Desse modo, fica como sugestão.

Sistema de Temporadas

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.

Dúvidas

  • Devemos resetar o /apresentar e só iniciar a temporada para pessoas que executarem o comando novamente?
  • O que podemos dar para pessoas que acabaram no topo do Ranking?
  • Deveriamos começar a pedir a vinculação de e-mail da rapaziada pra mail marketing da He4rt? Pois já pode ser um momento propício. Ex: aulões, eventos etc.
  • Quais critérios serão necessários para dar a conquista de temporada pra pessoa? Pensei em pelo menos quem conseguir chegar level 3 ou 4.

Comando para parar DM do bot

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.

Sistema de coding/quiz eventos

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

  • Entidade para event, para ter uma descrição do evento, data que irá iniciar então dessa forma teria um cron job para verificar quando inicia o evento e quando chegar a data o bot anunciar que o evento está disponível para os membros participar, recompensas por participar
  • Entidade de quiz, nela teríamos as perguntas e respostas e dicas de cada questão e ela teria relacionamento com o event
  • Recompensas seria xp como parte da gamefication e hcoins para todos que participarem e para os três primeiros alguma badge especial sugerido pelo @1pride

Eu cheguei a fazer um mock de como seria o evento mais tem muito a melhorar ainda

Início do evento quando o cron job identificar a data do evento, disparar a mensagem em um chat informando que os membros podem participar

image

Instruções e perguntas sendo recebidas pela dm do usuário

image

Após acertar todas as perguntas informar quem conseguiu no chat

image

Chat admin command

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 🙏

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.