NOVO 📢 Oferta de lançamento limitada: até 70% de desconto no seu primeiro mês, em todos os jogos!Ver planos

Como hospedar um bot do Discord em Rust

Hospedagem de bot do DiscordUpdated Oct 29, 20265 min read

Um bot em Rust é compilado no seu próprio computador e enviado como um único programa Linux pronto; nada é compilado no servidor, então toda a memória do seu plano vai para o bot. Para rodar um:

  1. Compile-o para Linux x86-64 no seu computador.
  2. Mude o tipo: na página Bot, seção Código, clique em Mudar o que roda ao lado de Runtime e escolha Rust Bot.
  3. Envie o programa (chamado bot por padrão) em Files, ou defina o Link de download (opcional) na seção Código.
  4. Cole o seu token na página Bot, seção Discord, e clique em Conectar.
  5. Clique em Iniciar e acompanhe o Console.

1. Compile para Linux

rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl

O programa fica em target/x86_64-unknown-linux-musl/release/, com o nome do seu crate. O target musl gera um arquivo único e independente, que não depende das bibliotecas do sistema do servidor. Compilar no Windows ou no macOS exige um linker para Linux; ferramentas como cross ou cargo-zigbuild cuidam disso para você. Um .exe ou um build para macOS não roda no servidor.

2. Um bot serenity mínimo

Cargo.toml (dependências)

[dependencies]
serenity = "0.12"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

src/main.rs

use serenity::async_trait;
use serenity::model::gateway::Ready;
use serenity::prelude::*;

struct Handler;

#[async_trait]
impl EventHandler for Handler {
    async fn ready(&self, _ctx: Context, ready: Ready) {
        println!("Logged in as {}", ready.user.name);
    }
}

#[tokio::main]
async fn main() {
    let token = std::env::var("DISCORD_TOKEN").expect("DISCORD_TOKEN is not set");
    let mut client = Client::builder(&token, GatewayIntents::GUILDS)
        .event_handler(Handler)
        .await
        .expect("could not create the client");

    if let Err(why) = client.start().await {
        println!("Client error: {why:?}");
    }
}

O token vem de DISCORD_TOKEN. Imprimir Logged in as muda o chip em Visão geral para Online no Discord. Os bots em poise e twilight funcionam do mesmo jeito: compile, envie, inicie.

3. Mude o tipo para Rust Bot

Na página Bot, seção Código, clique em Mudar o que roda ao lado de Runtime e escolha Rust Bot. Em um computador, o rótulo do tipo no topo da página (por exemplo Node.js Bot) abre a mesma janela. Veja Como mudar seu bot para outra linguagem ou para um bot pronto.

4. Coloque o programa no servidor

Envie-o: renomeie o seu programa para bot (ou defina em Arquivo de entrada o nome dele), depois, em Files, clique em Enviar e escolha o arquivo. Envie ao lado dele os arquivos que ele lê. O servidor o torna executável ao iniciar.

Ou deixe o servidor baixá-lo: na página Bot, seção Código, card Configurações, defina o Link de download (opcional) com um link https para o seu programa pronto, por exemplo um arquivo de release do GitHub, e clique em Salvar. Em um início, quando o arquivo do programa não existe, o servidor o baixa (até 500 MB). Para atualizar, publique um novo build nesse link, exclua o programa em Files e clique em Iniciar. Com um link definido, Iniciar bot no card de configuração funciona antes de o arquivo existir: o download roda como parte do início.

A seção Código de um bot Go com o card Como ele roda e o card Configurações listando Argumentos de início e Link de download.

5. Confira as configurações e inicie

  • Arquivo de entrada (card Como ele roda): o nome e a pasta do programa, bot por padrão.
  • Argumentos de início (opcional) (card Configurações): argumentos extras para o seu programa. Caracteres de shell como $, ;, & e > não são permitidos.

Cole o seu token na seção Discord, clique em Conectar e depois em Iniciar. O console mostra [PlayNHost] Starting your bot e depois a saída do seu programa.

Linhas de console que você pode ver

LinhaO que fazer
[PlayNHost] Your bot is not set up yet: the program bot was not found.Envie o programa ou coloque em Arquivo de entrada o nome e a pasta exatos dele.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Compile de novo para x86_64-unknown-linux-musl.
[PlayNHost] Downloading your program, e depois [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.O link está errado, é privado ou não é https. Confira o Link de download (opcional) na seção Código, em Configurações.
DISCORD_TOKEN is not set (do exemplo)Cole o token na seção Discord e reinicie.

Bots em Rust não têm origem Git nem campo Pacotes: seus crates estão dentro do programa. Chaves e senhas vão em Ambiente, e são lidas com std::env::var: Como definir variáveis de ambiente e segredos para o seu bot do Discord.

Seu bot já está em outro lugar? Traga-o para nós

NOSSOS ÚLTIMOS ARTIGOS