NUOVO 📢 Offerta di lancio limitata: fino al 70% di sconto sul tuo primo mese, per tutti i giochi!Vedi i piani

Come ospitare un bot Discord in Rust

Hosting di bot DiscordUpdated Oct 29, 20265 min read

Un bot Rust si compila sul tuo computer e si carica come un unico programma Linux già pronto; sul server non viene compilato nulla, quindi tutta la memoria del tuo piano va al bot. Per eseguirne uno:

  1. Compilalo per Linux x86-64 sul tuo computer.
  2. Cambia il tipo: nella pagina Bot, sezione Codice, clicca su Cambia cosa viene eseguito accanto a Runtime e scegli Rust Bot.
  3. Carica il programma (chiamato bot in modo predefinito) in Files, oppure imposta Link di download (facoltativo) nella sezione Codice.
  4. Incolla il tuo token nella pagina Bot, sezione Discord, e clicca su Collega.
  5. Premi Avvia e guarda Console.

1. Compila per Linux

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

Il programma finisce in target/x86_64-unknown-linux-musl/release/, con il nome del tuo crate. Il target musl crea un unico file autonomo che non dipende dalle librerie di sistema del server. Compilare su Windows o macOS richiede un linker per Linux; strumenti come cross o cargo-zigbuild se ne occupano per te. Un .exe o una build per macOS non gira sul server.

2. Un bot serenity minimo

Cargo.toml (dipendenze)

[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:?}");
    }
}

Il token arriva da DISCORD_TOKEN. Stampare Logged in as porta il badge nella Panoramica su Online su Discord. I bot poise e twilight funzionano allo stesso modo: compila, carica, avvia.

3. Passa il tipo a Rust Bot

Nella pagina Bot, sezione Codice, clicca su Cambia cosa viene eseguito accanto a Runtime e scegli Rust Bot. Da computer, l'etichetta del tipo in cima alla pagina (per esempio Node.js Bot) apre la stessa finestra. Vedi Come passare il tuo bot a un altro linguaggio.

4. Metti il programma sul server

Caricalo: rinomina il tuo programma in bot (oppure imposta File di avvio sul suo nome), poi in Files clicca su Carica e sceglilo. Carica anche gli eventuali file che legge, accanto a lui. Il server lo rende eseguibile all'avvio.

Oppure lascia che lo scarichi il server: nella pagina Bot, sezione Codice, riquadro Impostazioni, imposta Link di download (facoltativo) su un link https al tuo programma già pronto, per esempio un file di una release su GitHub, e clicca su Salva. All'avvio, quando il file del programma manca, il server lo scarica (fino a 500 MB). Per aggiornare, pubblica una nuova build a quel link, elimina il programma in Files e premi Avvia. Con un link impostato, Avvia il bot nel riquadro di configurazione funziona prima che il file esista: il download fa parte dell'avvio.

La sezione Codice di un bot Go, che un bot Rust condivide: il riquadro Come viene eseguito e il riquadro Impostazioni che elenca Argomenti di avvio e Link di download.

5. Controlla le impostazioni e avvia

  • File di avvio (riquadro Come viene eseguito): il nome e la cartella del programma, bot in modo predefinito.
  • Argomenti di avvio (facoltativo) (riquadro Impostazioni): argomenti aggiuntivi per il tuo programma. I caratteri della shell come $, ;, & e > non sono ammessi.

Incolla il tuo token nella sezione Discord, clicca su Collega, poi premi Avvia. La console mostra [PlayNHost] Starting your bot e poi l'output del tuo programma.

Righe della console che puoi vedere

RigaCosa fare
[PlayNHost] Your bot is not set up yet: the program bot was not found.Carica il programma, oppure imposta File di avvio sul suo nome e sulla sua cartella esatti.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Compila di nuovo per x86_64-unknown-linux-musl.
[PlayNHost] Downloading your program, poi [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.Il link è sbagliato, privato o non https. Controlla Link di download (facoltativo) nella sezione Codice, sotto Impostazioni.
DISCORD_TOKEN is not set (dall'esempio)Incolla il token nella sezione Discord, poi riavvia.

I bot Rust non hanno un'origine Git né un campo Pacchetti: i tuoi crate sono dentro il programma. Le chiavi e le password vanno sotto Ambiente, lette con std::env::var: Come impostare variabili d'ambiente e segreti.

Il tuo bot è già ospitato altrove? Spostalo da noi

ULTIMI ARTICOLI