/AdemirBot

Bot criado para facilitar a vida dos ademir de Discord

Primary LanguageC#MIT LicenseMIT

AdemirBot

License .NET Docker Image CI Build Status SonarCloud

Descrição

O projeto "Ademir" é um bot criado para melhorar a experiência de comunidades focadas em bem-estar. Ele permite reproduzir músicas, contabilização de XP, criar macros, efetuar ações de moderação em massa e conversar com a API do ChatGPT.

Funcionalidades

  • ✅ Falar com o bot apenas mencionando o mesmo
  • ✅ Reprodução/download de músicas/playlists em canal de audio
  • ✅ Suporte a links de vídeo do YouTube
  • ✅ Suporte a links de musicas do Spotify
  • ✅ Suporte a links de albuns do Spotify
  • ✅ Suporte a links de playlists públicas do Spotify
  • ✅ Suporte a links de playlists públicas do YouTube
  • ✅ Suporte a contabilização de eventos participados
  • ✅ Suporte a contabilização de bumps efetuados
  • ✅ Suporte a contabilização de XP por envio de mensagens
  • ✅ Suporte a proteção de flood
  • ✅ Suporte a blacklist de padrão de mensagens
  • ✅ Suporte a auto banimento de menores de idade por cargo
  • ✅ Suporte a contabilização de XP por tempo de call
  • ✅ Suporte a contabilização de XP por bump no server
  • ✅ Multiplicador de XP ao participar de eventos
  • ✅ Multiplicador de XP por canal de texto
  • ✅ Importação de informações de level de outro bot (Lurkr)
  • ✅ Listar os comandos por módulo com /help
  • ✅ Obter card de XP através do comando /rank
  • ✅ Denunciar um usuário através do comando /denunciar
  • ✅ Visualizar avatar com o comando /avatar
  • ✅ Visualizar banner com o comando /banner
  • ✅ Definir a cor principal do card de xp com /colour
  • ✅ Definir o fundo do card de xp com /background
  • ✅ Sincronizar recompensas de nível com /syncrolerewards
  • ✅ Visualizar ranking com /leaderboard
  • ✅ Visualizar contagem de membros com /membercount
  • ✅ Visualizar evolução de membros com /membergraph
  • ✅ Visualizar o delta diário de membros com /growthchange
  • ✅ Prever quando o server vai ter n membros com /predict
  • ✅ Verificar memória do servidor com /memory
  • ✅ Criar um hash MD5 de um texto com /md5
  • ✅ Criar um GUID com /guid
  • ✅ Denunciar uma mensagem com o menu de contexto

Comandos de Booster

  • ✅ Falar com o bot em uma thread com o comando /thread
  • ✅ Reiniciar a sua thread com o Ademir com /restart-thread
  • ✅ Gerar imagens com o comando /dall-e
  • ✅ Gerar texto com o comando /completar

Comandos do Administrador

  • ✅ Configurar o Canal de Denúncias: Comando /config-denuncias
  • ✅ Criar macros através do comando /macro
  • ✅ Listar macros: comando /listar-macros
  • ✅ Editar macros: comando /editar-macro
  • ✅ Excluir macro: comando /excluir-macro
  • ✅ Banir: comando /ban
  • ✅ Expulsar: comando /kick
  • ✅ Banir em massa: comando /massban
  • ✅ Expulsar em massa: comando /masskick
  • ✅ Bloquear a chegada de novos membros: comando /lock-server
  • ✅ Desloquear a chegada de novos membros: comando /unlock-server
  • ✅ Habilitar módulo de cargos: comando /togglerolerewards
  • ✅ Importar levels de outro bot (Lurkr): comando /importlevelinfo
  • ✅ Definir XP de um membro: comando /xp set
  • ✅ Adicionar XP a um membro: comando /xp add
  • ✅ Remover XP de um membro: comando /xp remove
  • ✅ Remover uma certa quantidade de mensagens de um canal: comando /purge
  • ✅ Importar histórico de mensagens: comando /importar-historico-mensagens
  • ✅ Configurar cargo de participação ativa: comando /set-activetalker-role
  • ✅ Configurar cargo de convite para eventos: comando /set-eventinvite-role
  • ✅ Define o canal de eventos de voz padrão: comando /set-voice-event-channel
  • ✅ Define o canal de eventos de palco padrão: comando /set-stage-event-channel
  • ✅ Extrair lista de usuarios por atividade no servidor /usuarios-inativos
  • ✅ Configurar cargo extra para falar com o bot: comando /config-cargo-ademir

Comandos de Mensagem:

  • Criar Evento de Voz: Cria um evento de voz no servidor a partir da mensagem (reconhece data/hora)
  • Criar Evento Palco: Cria um evento de palco no servidor a partir da mensagem (reconhece data/hora)
  • Denunciar: Denuncia uma mensagem para a staff
  • Blacklist: Coloca o padrão da mensagem na lista negra (para apagar)

Comandos de Música

  • /play <link/track/playlist/album/artista>: Reproduz uma música, playlist, artista ou álbum.
  • /skip: Pula para a próxima música da fila.
  • /back: Pula para a música anterior da fila.
  • /replay: Reinicia a música atual.
  • /pause: Pausa/Retoma a reprodução da música atual.
  • /stop: Interrompe completamente a reprodução de música.
  • /remove member <membro>: Remove as músicas de um membro da playlist.
  • /remove index <posicao>: Remove uma musica da playlist na posição fornecida.
  • /remove range <inicio> <fim>: Remove musicas de playlist no intervalor de inicio e fim.
  • /remove last: Remove a última música da playlist.
  • /loop: Habilita/Desabilita o modo de repetição de faixa.
  • /loopqueue: Habilita/Desabilita o modo de repetição de playlist.
  • /queue: Mostra a lista de reprodução.
  • /join: Puxa o bot para o seu canal de voz.
  • /quit: Remove o bot da chamada de voz.
  • /volume <valor>: Ajusta o volume da música.

Instalação (DevEnv)

Dependências externas

Para utilizar todos os recursos desenvolvidos nesse projeto é necessário:

  1. Criar um aplicativo no Developer Portal do Discord
  2. Criar um aplicativo no Developer Console do Spotify
  3. Criar uma conta (paga) no OpenAI e criar uma API Key
  4. Criar uma instância MongoDB para o Bot guardar os dados de configuração

Passo a passo

Para utilizar o bot "Ademir" em seu servidor do Discord, siga as etapas abaixo:

  1. Clone este repositório em sua máquina local.
  2. Instale as dependências necessárias executando o comando pip install -r requirements.txt.
  3. Defina as seguintes varáveis de ambiente:
    • SpotifyApiClientId: Client ID do Aplicativo Spotify.
    • SpotifyApiClientSecret: Client Secret do Aplicativo Spotify
    • PremiumGuilds: IDs dos Servers permitidos para utilizar o ChatGPT
    • AdemirAuth: Token de autenticação do bot do Discord
    • MongoServer: String de conexão do Mongo DB
    • ChatGPTKey: Token de autenticação da conta de API do ChatGPT
  4. Execute o bot utilizando o comando python main.py.

Instalação (Docker)

Rode o seguintes comandos para iniciar o Ademir no docker:

Para construir a imagem:

docker build -t ademir .

Para iniciar o container:

docker run -e SpotifyApiClientId=<Client ID do Aplicativo Spotify> \
           -e SpotifyApiClientSecret=<Client Secret do Aplicativo Spotify> \
           -e PremiumGuilds=<IDs dos Servers permitidos para utilizar o ChatGPT> \
           -e AdemirAuth=<Token de autenticação do bot do Discord> \
           -e MongoServer=<String de conexão do Mongo DB> \
           -e ChatGPTKey=<Token de autenticação da conta de API do ChatGPT> \
           ademir

Licença

Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE.txt para obter mais informações.

Contato

Se você tiver alguma dúvida ou sugestão sobre o projeto "Ademir", sinta-se à vontade para entrar em contato: