NEU 📢 Begrenztes Startangebot: bis zu 70 % Rabatt auf deinen ersten Monat, für jedes Spiel!Tarife ansehen

Einen Rust-Discord-Bot hosten

Discord-Bot-HostingUpdated Oct 29, 20265 min read

Ein Rust-Bot wird auf deinem eigenen Computer gebaut und als ein fertiges Linux-Programm hochgeladen. Auf dem Server wird nichts kompiliert, der gesamte Arbeitsspeicher deines Tarifs geht also an den Bot. So betreibst du einen:

  1. Bau ihn auf deinem Computer für Linux x86-64.
  2. Wechsle den Typ: Klick auf der Bot-Seite im Bereich Code neben Laufzeitumgebung auf Ändern, was läuft und wähl Rust Bot.
  3. Lad das Programm (standardmäßig bot genannt) in Files hoch, oder setz Download-Link (optional) im Bereich Code.
  4. Füg deinen Token auf der Bot-Seite im Bereich Discord ein und klick auf Verbinden.
  5. Drück auf Starten und beobachte die Console.

1. Für Linux bauen

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

Das Programm landet in target/x86_64-unknown-linux-musl/release/ und heißt nach deinem Crate. Das musl-Target erzeugt eine einzige eigenständige Datei, die nicht von den Systembibliotheken des Servers abhängt. Wenn du unter Windows oder macOS baust, brauchst du einen Linux-Linker: Tools wie cross oder cargo-zigbuild übernehmen das für dich. Eine .exe oder ein macOS-Build läuft auf dem Server nicht.

2. Ein minimaler serenity-Bot

Cargo.toml (Abhängigkeiten)

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

Der Token kommt aus DISCORD_TOKEN. Die Ausgabe von Logged in as stellt das Label auf der Übersicht auf Online in Discord. poise- und twilight-Bots funktionieren genauso: bauen, hochladen, starten.

3. Den Typ auf Rust Bot wechseln

Klick auf der Bot-Seite im Bereich Code neben Laufzeitumgebung auf Ändern, was läuft und wähl Rust Bot. Am Computer öffnet die Typbezeichnung oben auf der Seite (zum Beispiel Node.js Bot) denselben Dialog. Lies dazu So wechselst du mit deinem Bot zu einer anderen Sprache oder einem fertigen Bot.

4. Das Programm auf den Server bringen

Hochladen: Benenn dein Programm in bot um (oder setz bei Startdatei seinen Namen), klick dann in Files auf Hochladen und wähl es aus. Lad alle Dateien, die es liest, daneben hoch. Der Server macht es beim Start ausführbar.

Oder den Server herunterladen lassen: Setz auf der Bot-Seite im Bereich Code, Karte Einstellungen, Download-Link (optional) auf einen https-Link zu deinem fertigen Programm, zum Beispiel eine GitHub-Release-Datei, und klick auf Speichern. Bei einem Start lädt der Server das Programm herunter (bis zu 500 MB), wenn die Programmdatei fehlt. Zum Aktualisieren veröffentliche einen neuen Build unter diesem Link, lösch das Programm in Files und drück auf Starten. Ist ein Link gesetzt, funktioniert Bot starten in der Einrichtungskarte schon, bevor die Datei existiert: Der Download läuft als Teil des Starts.

Der Bereich Code eines Go-Bots, den sich ein Rust-Bot teilt: die Karte So läuft er und die Karte Einstellungen, die Startargumente und Download-Link auflistet.

5. Die Einstellungen prüfen und starten

  • Startdatei (Karte So läuft er): Name und Ordner des Programms, standardmäßig bot.
  • Startargumente (optional) (Karte Einstellungen): zusätzliche Argumente für dein Programm. Shell-Zeichen wie $, ;, & und > sind nicht erlaubt.

Füg deinen Token im Bereich Discord ein, klick auf Verbinden und drück dann auf Starten. Die Console zeigt [PlayNHost] Starting your bot und dann die Ausgabe deines Programms.

Console-Zeilen, die du sehen kannst

ZeileWas du tun kannst
[PlayNHost] Your bot is not set up yet: the program bot was not found.Lad das Programm hoch, oder trag bei Startdatei seinen genauen Namen und Ordner ein.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Bau es noch mal für x86_64-unknown-linux-musl.
[PlayNHost] Downloading your program, dann [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.Der Link ist falsch, privat oder nicht https. Prüf Download-Link (optional) im Bereich Code, unter Einstellungen.
DISCORD_TOKEN is not set (aus dem Beispiel)Füg den Token im Bereich Discord ein und starte dann neu.

Rust-Bots haben keine Git-Quelle und kein Feld Pakete: Deine Crates stecken im Programm. Schlüssel und Passwörter gehören unter Umgebung und werden mit std::env::var gelesen: Umgebungsvariablen und Secrets für deinen Discord-Bot setzen.

Läuft dein Bot schon woanders? Zieh ihn zu uns um

UNSERE NEUESTEN BLOGS