Bot do discord com Elixir e Nostrum
요건
프로젝트 시작
Antes de tudo vamos iniciar nosso projeto rodando o comando:
mix new <nome_do_aplicativo> --sup
Passamos a flag
--sup
para que o mix inicie nosso projeto com um Supervisor
configurado, assim ao iniciarmos nossa aplicação o Supervisor irá iniciar todas as aplicações que pedirmos.Com isso nossa estrutura de arquivos se encontra da seguinte forma:
추가 및 구성 o nostrum
다음과 같은 새로운 프로젝트 시작은 arquivo
mix.exs
및 modificar a funçãodeps
형식에 따라 수정됩니다.defp deps do
[
{:nostrum, "~> 0.4"}
]
end
e executar 또는 comando:
mix deps.get
com isso agora devemos configurar o nostrum e fornecer o token do nosso bot, para isso vamos criar o diretório config e dentro o arquivo
config.exs
, pode ser feito com o comando:mkdir config && touch config.exs
추가 구성 항목에 대한 추가 정보 없음:
import Config
config :nostrum,
token: "SEU TOKEN"
# OU caso não queria deixar de forma explicita, podemos pegar ele de uma variável de ambiente ao inicializa-lo
#token: System.get_env("BOT_TOKEN")
e por vamos criar um modulo para iniciar o bot e adicionar esse modulo ao Supervisor. vamos criar o arquivo consumer.ex, dentro de lib//, com o seguinte conteúdo:
defmodule Example.Consumer do
use Nostrum.Consumer
def start_link do
Consumer.start_link(__MODULE__)
end
def handle_event(_) do
:ok
end
end
Trocando o
Example
, pelo nome da sua aplicação, agora em lib//application.ex, vai ficar da seguinte forma:defmodule Example.Application do
use Application
def start(_type,_args) do
children = [
Example.Consumer
]
opts = [strategy: :one_for_one, name: Example.Supervisor]
Supervisor.start_link(children,opts)
end
end
Com isso ao rodarmos or comando:
mix run --no-halt
ou iex -S mix
, nosso bot deve ficar 온라인 no discord 🙂OBS: Caso você tenha optado por usar o
System.get_env("BOT_TOKEN")
é necessário rodar o comando da seguinte forma:BOT_TOKEN="TOKEN" mix run --no-halt
또는 BOT_TOKEN="TOKEN" iex -S mix
Mas estamos ignorando todos os eventos, então por enquanto ele não está fazendo nada 😥
Lidando com comandos
Para lidar comandos devemos cuidado do evento
:MESSAGE_CREATE
, então nosso consumer.ex
fica da seguinte forma:defmodule Example.Consumer do
use Nostrum.Consumer
alias Nostrum.Api
def start_link do
Consumer.start_link(__MODULE__)
end
def handle_event({:MESSAGE_CREATE,msg, _ws_state}) do
case msg.content do
"!ping" -> Api.create_message(msg.channel_id, "Pong")
_ -> :ok
end
end
def handle_event(_) do
:ok
end
end
Com isso nosso bot responde ao comando!ping, com a mensagem pong, no canal que a mensagem foi enviada.
Com isso nosso bot já esta respondendo a comandos, mas está bem simples, agora você é livre para organizar os arquivos e lidar com os comandos da forma que deseja, aqui está o link do repositório do github com alguns comandos e a forma que preferi programar.
Qualquer dúvida pode deixar nos comentários ou mandar uma mensagem no discord: dudu#6876
레포: https://github.com/uduDudu/discord-bot-elixir
Reference
이 문제에 관하여(Bot do discord com Elixir e Nostrum), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/joseemds/bot-do-discord-com-elixir-e-nostrum-56jo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)