Ir para conteúdo

[ TUTORIAL] - Como criar um bot para discord dentro de um plugin.


yRicardinBaum

Posts Recomendados

Olá! Para começarmos a codar o bot, é preciso primeiramente criar o seu bot no site do discord. 

 

Para criar um bot CLIQUE AQUI

 

Após ter criado o bot vá até a área do bot:

 image.png.c72d39008c8d615a7b8f30aab6569186.png

 

 

Chegando lá clique em "Criar bot":

 

image.png.8755f08732345607c8eb1bbcfc8300a2.png

 

 

Feito isso e colocando todas as informações certinhas vai aparecer uma aba semelhante a essa:

 

image.png.171fb7a3934ca1d260a5eb048aa42bf0.png

 

 

Em seguida procure por TOKEN abaixo do username, e então clique eu Copy (Copiar) :

 

image.png.c9b0da9d57b76410c05ad947cf0154c7.png

 

Lembrando: NUNCA INFORME ESSE TOKEN PARA NINGUÉM

 

 

Feito isso, pronto! Você já possui o token do seu bot!

 

 

Agora vamos para os códigos. Como esse tutorial é só para criar um bot dentro de um plugin, eu não vou ensinar a como fazer o plugin do zero.

 

 

Com o básico feito (onEnable, onDisable)

image.png.74ea0e3f8f3674c279239e0b5d4839f9.png

 

 

Vamos começar importando a livraria do bot:

 

 Com Maven: 

<dependency>
    <groupId>net.dv8tion</groupId>
    <artifactId>JDA</artifactId>
    <version>5.0.0-alpha.4</version>
    <exclusions>
        <exclusion>
            <groupId>club.minnced</groupId>
            <artifactId>opus-java</artifactId>
        </exclusion>
    </exclusions>
</dependency>

 

  Com Gradle:

   

dependencies {
    implementation("net.dv8tion:JDA:5.0.0-alpha.4"){
        exclude module: 'opus-java'
    }
}

 

 

 

Com as livrarias importadas, vamos começar com o codigo: 

 

Na Main vamos criar uma variável da API do JDA  (que é literalmente o bot) chamada bot em seguida de um getter para poder ficar um pouco mais bonito kk: 

 

    static JDA bot;


    public static JDA getBot() {
        return bot;
    }

 

 

 

Agora vamos mexer no onEnable:

 

    @Override
    public void onEnable() {
        try {
            bot = JDABuilder.createDefault("TOKEN").build();
            bot.awaitReady();
        } catch (LoginException | InterruptedException e) {
            Bukkit.getLogger().log(Level.SEVERE, "Não foi possivel iniciar o bot! ERRO:", e);
            Bukkit.getServer().shutdown();
        } finally {
            Bukkit.getLogger().log(Level.FINE,"Bot iniciado com sucesso!");
        }

        Bukkit.getLogger().log(Level.FINE,"Plugin ligado com sucesso!");
    }

  (Troque o TOKEN pelo token do seu bot)

 

E pronto seu bot já será ligado sempre que o plugin ligar.

 

E só por segurança, sempre que o plugin desligar, o bot desliga junto:

 

    @Override
    public void onDisable() {
        try {
            bot.shutdownNow();
        } catch(Exception e) {
            Bukkit.getLogger().log(Level.SEVERE, "Não foi possivel desligar o bot! ERRO: ", e);
        } finally {
            Bukkit.getLogger().log(Level.FINE,"Bot desligado com sucesso!");
        }
        Bukkit.getLogger().info("Plugin desligado com sucesso!");
    }

 

 

Agora eu vou ensinar algumas funções uteis para sair desse tutorial ja podendo usar o bot sem problemas

 

        // Selecionar um usuário por ID (independente se ele estiver na mesma guilda do bot)
        bot.getUserById("USER ID");
        // Selecionar uma guilda pelo ID
        bot.getGuildById("GUILD ID");
        // Pegar todos os cargos que o bot possui (em todos o servidores)
        bot.getRoles();
        // Adicionar um evento para o bot
        bot.addEventListener(SEUEVENTOAQUI);
        // Setando atividade do bot
        bot.getPresence().setActivity(Activity.playing("Tutorial hehe"));
        // Criar servidor
        bot.createGuild("GUILD NAME").queue();
        // Retorna um canal com o determinado ID fornecido
        bot.getGuildChannelById("CHANNEL ID");

 

 

E foi isso o tutorial, espero que tenham gostado! Qualquer dúvida pode comentar que eu vou estar tentando resolver. Lembrando que é so um tutorial simples, caso você queira aprofundar seu conhecimento na API do JDA Leia as documentações

 

 

Extra:

    API de comandos: https://github.com/yRicardinBaum/JDA-Command (by yRicardinBaum)

    API de reação para mensagens: https://github.com/yRicardinBaum/JDA-Reaction (by yRicardinBaum)

Editado por yRicardinBaum
Link para o comentário
Compartilhar em outros sites

Sinceramente, logar um bot em um servidor de minecraft que é single thread só vai consumir mais ainda do servidor. Mesmo que crie uma nova thread o bot ainda vai consumir os recursos do server, juntamente da ram e o processamento só prejudicando o server que ja é algo ******** pela maneira que foi feita. Então não é uma boa ideia logar um bot em um servidor.

 

Fora isso, bom tutorial :baladinha:

Link para o comentário
Compartilhar em outros sites

7 horas atrás, SrBlecaute disse:

Sinceramente, logar um bot em um servidor de minecraft que é single thread só vai consumir mais ainda do servidor. Mesmo que crie uma nova thread o bot ainda vai consumir os recursos do server, juntamente da ram e o processamento só prejudicando o server que ja é algo ******** pela maneira que foi feita. Então não é uma boa ideia logar um bot em um servidor.

 

Fora isso, bom tutorial :baladinha:

Obrigado pelo feedback, eu concordo com o seu comentário, porém só fiz esse tutorial porque tem gente que curte fazer plugin do tipo punish, report e etc, e gosta de colocar o bot para fazer a integração com o discord, mas mesmo assim, dependendo do projeto possa ser que não pese muito no servidor.

Editado por yRicardinBaum
Link para o comentário
Compartilhar em outros sites

11 horas atrás, SrBlecaute disse:

Sinceramente, logar um bot em um servidor de minecraft que é single thread só vai consumir mais ainda do servidor. Mesmo que crie uma nova thread o bot ainda vai consumir os recursos do server, juntamente da ram e o processamento só prejudicando o server que ja é algo ******** pela maneira que foi feita. Então não é uma boa ideia logar um bot em um servidor.

 

Fora isso, bom tutorial :baladinha:

Então meu caro, creio que um bot utilizando JDA não utilize muito de um plugin, meus plugins mesmo não utilizam quase nada de memória (~200/300 mb em IDLE), e mesmo assim existem muitas maneiras de abaixar ainda mais o consumo de memória, (Configuration/Memory usage https://github.com/DV8FromTheWorld/JDA).

 

E creio que a pessoa está muito bem ciente que o plugin utilize sim mais ram, mas não é consideravelmente muito assim, a menos que você tenha um servidor gigante, mas eu creio que qualquer servidor comum consiga rodar sim um bot em single thread tranquilamente (a menos que você tenha menos que 1gb ram ou um pentium de primeira geração LMAO)

 

Só minhas considerações mesmo, creio que não deve ser utilizado em plugins obrigatoriamente, mas é uma ótima opção para servidores que querem uma integração boa e direta com o servidor.

Link para o comentário
Compartilhar em outros sites

23 minutos atrás, Ari disse:

Então meu caro, creio que um bot utilizando JDA não utilize muito de um plugin, meus plugins mesmo não utilizam quase nada de memória (~200/300 mb em IDLE), e mesmo assim existem muitas maneiras de abaixar ainda mais o consumo de memória, (Configuration/Memory usage https://github.com/DV8FromTheWorld/JDA).

 

E creio que a pessoa está muito bem ciente que o plugin utilize sim mais ram, mas não é consideravelmente muito assim, a menos que você tenha um servidor gigante, mas eu creio que qualquer servidor comum consiga rodar sim um bot em single thread tranquilamente (a menos que você tenha menos que 1gb ram ou um pentium de primeira geração LMAO)

 

Só minhas considerações mesmo, creio que não deve ser utilizado em plugins obrigatoriamente, mas é uma ótima opção para servidores que querem uma integração boa e direta com o servidor.

O blecaute tem razão, é pesado.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Ari disse:

Então meu caro, creio que um bot utilizando JDA não utilize muito de um plugin, meus plugins mesmo não utilizam quase nada de memória (~200/300 mb em IDLE), e mesmo assim existem muitas maneiras de abaixar ainda mais o consumo de memória, (Configuration/Memory usage https://github.com/DV8FromTheWorld/JDA).

 

E creio que a pessoa está muito bem ciente que o plugin utilize sim mais ram, mas não é consideravelmente muito assim, a menos que você tenha um servidor gigante, mas eu creio que qualquer servidor comum consiga rodar sim um bot em single thread tranquilamente (a menos que você tenha menos que 1gb ram ou um pentium de primeira geração LMAO)

 

Só minhas considerações mesmo, creio que não deve ser utilizado em plugins obrigatoriamente, mas é uma ótima opção para servidores que querem uma integração boa e direta com o servidor.

Concordo plenamente.Até porque servidor grande em si não vai um Pl para integrar um bot de dc desse jeito.Usaria uma abordagem diferente

Entanto o que o Blecaute falou também concordo que pode dependendo o caso pesar o servidor

Link para o comentário
Compartilhar em outros sites

Em 22/01/2022 em 15:57, Ari disse:

Então meu caro, creio que um bot utilizando JDA não utilize muito de um plugin, meus plugins mesmo não utilizam quase nada de memória (~200/300 mb em IDLE), e mesmo assim existem muitas maneiras de abaixar ainda mais o consumo de memória, (Configuration/Memory usage https://github.com/DV8FromTheWorld/JDA).

 

E creio que a pessoa está muito bem ciente que o plugin utilize sim mais ram, mas não é consideravelmente muito assim, a menos que você tenha um servidor gigante, mas eu creio que qualquer servidor comum consiga rodar sim um bot em single thread tranquilamente (a menos que você tenha menos que 1gb ram ou um pentium de primeira geração LMAO)

 

Só minhas considerações mesmo, creio que não deve ser utilizado em plugins obrigatoriamente, mas é uma ótima opção para servidores que querem uma integração boa e direta com o servidor.

JDA utiliza um sistema de conexões, afinal ele precisa ficar recebendo os response da API do discord. Nesse meio ele vai interferir no processamento do servidor que já é bem cagado da forma que foi construído. Não falo pra não utilizar, mas tem muitas formas de fazer sistemas melhores.

 

Usar sockets e manter o bot fora do main thread do minecraft é uma ótima ideia e que eu já utilizei até pra outros sitemas. Além disso pra sistemas simples que só precisam enviar uma mensagem os Webhooks foram criados exatamente para isso, e não comem o rabo do servidor, claro se tu fizer em async e não cagar nos métodos.

 

Em 22/01/2022 em 11:53, yRicardinBaum disse:

Obrigado pelo feedback, eu concordo com o seu comentário, porém só fiz esse tutorial porque tem gente que curte fazer plugin do tipo punish, report e etc, e gosta de colocar o bot para fazer a integração com o discord, mas mesmo assim, dependendo do projeto possa ser que não pese muito no servidor.

 

Como eu falei ali em cima, sistemas simples como esse deve ser utilizado os WebHooks não criar uma instância do JDA.

Link para o comentário
Compartilhar em outros sites

Em 24/01/2022 em 07:01, SrBlecaute disse:

JDA utiliza um sistema de conexões, afinal ele precisa ficar recebendo os response da API do discord. Nesse meio ele vai interferir no processamento do servidor que já é bem cagado da forma que foi construído. Não falo pra não utilizar, mas tem muitas formas de fazer sistemas melhores.

 

Usar sockets e manter o bot fora do main thread do minecraft é uma ótima ideia e que eu já utilizei até pra outros sitemas. Além disso pra sistemas simples que só precisam enviar uma mensagem os Webhooks foram criados exatamente para isso, e não comem o rabo do servidor, claro se tu fizer em async e não cagar nos métodos.

 

 

Como eu falei ali em cima, sistemas simples como esse deve ser utilizado os WebHooks não criar uma instância do JDA.

Concordo também não vejo a necessidade de adionar o plugin Jda no servidor.

Até porque o webhjok é muito mais viável já que a função do webhook é mais enviar mensagem

Link para o comentário
Compartilhar em outros sites

7 horas atrás, SrBlecaute disse:

JDA não é um plugin

Tem como plugin as vezes o cara está usando o plugin Jda mas JDA em si é uma biblioteca para você criar bot em Java.

 

https://www.spigotmc.org/resources/jdaspigot.41074/ - Esse daqui já vi plugins utilizar ele

 

 

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...