Golang Discord Bot

Golang Discord Bot
Neste tutorial, aprenderemos a criar um bot da Discord usando a linguagem de programação Go.

Crie servidor Discord

Para você criar um bot para a discórdia, você precisará de um servidor Discord onde você seja o administrador. Você pode fazer abrindo seu navegador e navegando no site da Discord:

http: // discórdia.com

Faça login na sua conta Discord e crie um servidor para testar. Em nosso exemplo, criamos um tutorial chamado "Linuxhint_tuts Server"

Depois de ter um servidor de teste, você pode criar um aplicativo para o seu Bot Discord. Abra o Portal de Desenvolvedores da Discord:

https: // discórdia.com/desenvolvedores/aplicações

Clique no botão novo aplicativo para adicionar um novo aplicativo Discord. Defina o nome para o seu aplicativo e clique em Criar.

Depois que o aplicativo for criado, clique para abri -lo na lista de seus aplicativos disponíveis. Em seguida, selecione a opção Bot no menu esquerdo.

Clique em Adicionar bot para criar um novo bot para o seu aplicativo. Isso criará um novo bot com um novo token de bot. Copie e salve o token de bot.

Em seguida, navegue até a parte inferior da página e selecione a permissão para o seu bot.

Depois de ter as permissões do conjunto de bot, abra seu navegador e navegue até o seguinte recurso:

https: // discórdia.com/oauth2/autorize?client_id = [client_ide] & scope = bot onde o ID do cliente é o ID do cliente para o seu aplicativo. Você pode encontrar este ID na seção OAuth do seu aplicativo:

O recurso acima permite adicionar seu bot ao seu servidor.

Selecione seu servidor e clique em Autorizar.

Construindo um Bot Discord

Depois de configurarmos o aplicativo Discord e o BOT, podemos prosseguir para criar um Bot Discord. Para este guia, usaremos o pacote Discordgo, que fornece funcionalidades de baixo nível para trabalhar com a API Discord.

Comece criando um diretório de trabalho para armazenar o código para o seu Bot Discord.

MKDIR Discord-Bot

Navegue até o diretório e inicialize o gerente de mod para o seu projeto:

CD Discord-Bot
vá mod init discord bot
vá mod tidy

O próximo passo é criar a estrutura do projeto. Comece criando diretórios de configuração e bot:

Mkdir Config Bot

O diretório de configuração agirá como o pacote que lê a configuração do servidor Discord. A pasta bot segura o código para o Bot Discord.

Em seguida, crie o arquivo principal que usaremos para iniciar o bot. No principal.Vá arquivo, adicione o seguinte código:

Pacote principal
importação (
"Discord Bot/Bot"
"Discord-Bot/Config"
"registro"
)
funcmain ()
err: = config.ReadConfig ()
se err != nil
registro.Fatal (ERR)
retornar

robô.Correr()
<-make(chanstruct)
retornar

No exemplo acima, começamos importando o código exportado pelos pacotes de configuração e bot. Adicionaremos o código para esses pacotes nas próximas seções.

Em seguida, chamamos o método readConfig () do pacote de configuração. Finalmente, executamos o bot usando o método run () do pacote bot.

O próximo passo é definir a configuração para o seu bot. No diretório raiz, crie uma configuração.Arquivo JSON e adicione as seguintes entradas:


"Token": "otm3otu0mdy1otu3mtmwmjcw.Yfjpyw.gebrcbqzjgrvchtfbvcj2ywuzl4 ",
"Prefixo": "!"

O arquivo JSON contém o token para o seu bot, conforme copiado nas etapas anteriores. O próximo é o prefixo que define o prefixo a seguir para invocar um comando bot. Saiba mais sobre o prefixo de bot no recurso abaixo:

https: // discordpy.ReadThEdocs.io/pt/stable/ext/comandos/api.HTML#Discord.ext.comandos.Robô.Command_prefix

Em seguida, navegue no diretório de configuração e crie uma configuração.vá arquivo. Na configuração.Vá arquivo, adicione o código como mostrado abaixo:

Config do pacote
importação (
"Encoding/JSON"
"io/ioutil"
"registro"
)
var (
String token
String prefixo
config *configstruct
)
Tipo ConfigStruct Struct
String token 'JSON: "Token"'
String prefixo 'json: "prefixo"'

Erro FuncreadConfig ()
arquivo, err: = ioutil.ReadFile ("./config.JSON ")
se err != nil
registro.Fatal (ERR)
retornar err

err = json.UNARSHAL (FILE, & CONFIG)
se err != nil
registro.Fatal (ERR)
retornar err

Token = config.Símbolo
Prefixo = config.Prefixo
retornar nil

No código acima, começamos importando nossos pacotes necessários. Isso inclui a codificação/json para marechar a configuração JSON, ioutil para ler o arquivo de configuração e registrar para registrar quaisquer erros.

Em seguida, definimos a estrutura para armazenar os valores lidos no arquivo json. Em seguida, prosseguimos para criar a função ReadConfig. Esta função usa o método ioutil para ler a configuração.arquivo json. Em seguida, usamos os dados JSON e o UNARSHAL usando o JSON.Método unarSal ().

Em seguida, navegue pelo diretório de bot e crie um bot.vá arquivo. Isso manterá o código -fonte para o bot.

Adicione o código -fonte como:

Bot de pacote
importação (
"Discord-Bot/Config"
"registro"
"Github.com/bwmarrin/discordgo "
)
varbotidString
VargoBot *Discordgo.Sessão
Funcrun ()
// Crie sessão de bot
GOBOT, ERR: = Discordgo.Novo ("bot" + configuração.Símbolo)
se err != nil
registro.Fatal (ERR)
retornar

// Faça do bot um usuário
Usuário, Err: = Gobot.Usuário ("@me")
se err != nil
registro.Fatal (ERR)
retornar

Botid = usuário.EU IA
GOBOT.AddHandler (MessageHandler)
err = gobot.Abrir()
se err != nil
retornar


funcmessageHandler (s *discordgo.Sessão, M *discordgo.Messagecreate)
// ignora todas as mensagens criadas pelo próprio bot
se m.Autor.Id == botid
retornar

// Se a mensagem for "oi" Responder com "oi de volta!!"
ifm.Content == "oi"
_, _ = s.ChannelMessageSend (m.Channelid, "Hi Back")



O código acima usa o pacote Discordgo para definir a funcionalidade do bot. Você pode aprender mais no recurso abaixo:

https: // github.com/bwmarrin/discordgo

Depois de concluído, execute o arquivo como:

Vá Run Main.ir

Isso deve iniciar o bot de discórdia. Vá para o seu servidor Discord e digite oi. Se o bot estiver funcionando corretamente, ele deve devolver o HI.

Conclusão

Este guia abrange como criar um bot de discórdia usando o pacote Go e Discordgo. Este projeto é inspirado pelo exemplo de pingue -pong no pacote Discordgo:

https: // github.com/bwmarrin/discordgo/árvore/master/exemplos/pingpong